advanceTo method
Move time to instant and complete every due sleep.
Implementation
Future<void> advanceTo(DateTime instant) async {
if (instant.isBefore(_now)) {
throw ArgumentError.value(
instant,
'instant',
'must not be earlier than the current manual time',
);
}
_now = instant;
final due = <_ManualSleep>[
for (final sleep in _pending)
if (!sleep.deadline.isAfter(_now)) sleep,
];
due.sort((left, right) => left.deadline.compareTo(right.deadline));
for (final sleep in due) {
if (!sleep.completer.isCompleted) sleep.completer.complete();
}
await Future<void>.value();
}