reset static method
Resets the entire Simulator back to its initial state.
Note: values deposited on Modules from the previous simulation remain.
Implementation
static Future<void> reset() async {
if (_simulationEndRequested) {
await simulationEnded;
}
_currentTimestamp = 0;
_simulationEndRequested = false;
_simExceptions = [];
_maxSimTime = -1;
if (!_preTickController.isClosed) {
await _preTickController.close();
}
if (!_startTickController.isClosed) {
await _startTickController.close();
}
if (!_clkStableController.isClosed) {
await _clkStableController.close();
}
if (!_postTickController.isClosed) {
await _postTickController.close();
}
_preTickController = StreamController.broadcast(sync: true);
_startTickController = StreamController.broadcast(sync: true);
_clkStableController = StreamController.broadcast(sync: true);
_postTickController = StreamController.broadcast(sync: true);
if (!_simulationEndedCompleter.isCompleted) {
_simulationEndedCompleter.complete();
}
_simulationEndedCompleter = Completer();
_pendingTimestamps.clear();
_phase = SimulatorPhase.outOfTick;
_injectedActions.clear();
// make sure we've already passed the new completer so that listeners can
// get the latest
final oldResetCompleter = _resetCompleter;
_resetCompleter = Completer();
oldResetCompleter.complete();
await oldResetCompleter.future;
}