reset static method

Future<void> reset()

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;
}