public async Task StartDoesNotInitializeVmAfterStop() { // --- Arrange var mc = GetMachineController(); mc.StartVm(new ExecuteCycleOptions(EmulationMode.UntilFrameEnds)); await mc.StarterTask; var before = mc.SpectrumVm; mc.StopVm(); await mc.CompletionTask; VmState oldState = 0; VmState newState = 0; var msgCount = 0; mc.VmStateChanged += (sender, args) => { if (++msgCount == 1) { oldState = args.OldState; newState = args.NewState; } }; // --- Act mc.StartVm(new ExecuteCycleOptions(EmulationMode.UntilFrameEnds)); await mc.StarterTask; // --- Assert before.ShouldNotBeNull(); mc.SpectrumVm.ShouldBeSameAs(before); oldState.ShouldBe(VmState.Stopped); newState.ShouldBe(VmState.BeforeRun); }
public async Task StartVmSignsBeforeRunningState() { // --- Arrange var mc = GetMachineController(); VmState oldState = 0; VmState newState = 0; var msgCount = 0; mc.VmStateChanged += (sender, args) => { if (++msgCount == 2) { oldState = args.OldState; newState = args.NewState; } }; // --- Act mc.StartVm(new ExecuteCycleOptions(EmulationMode.UntilFrameEnds)); await mc.StarterTask; // --- Assert oldState.ShouldBe(VmState.BuildingMachine); newState.ShouldBe(VmState.BeforeRun); mc.IsFirstStart.ShouldBeTrue(); }
public async Task StopVmSignsReachesStoppedState() { // --- Arrange var mc = GetMachineController(); var before = mc.SpectrumVm; mc.StartVm(new ExecuteCycleOptions(EmulationMode.UntilFrameEnds)); await mc.StarterTask; VmState oldState = 0; VmState newState = 0; var msgCount = 0; mc.VmStateChanged += (sender, args) => { if (++msgCount == 2) { oldState = args.OldState; newState = args.NewState; } }; // --- Act mc.StopVm(); await mc.CompletionTask; // --- Assert before.ShouldBeNull(); mc.SpectrumVm.ShouldNotBeNull(); mc.IsFirstStart.ShouldBeTrue(); oldState.ShouldBe(VmState.Stopping); newState.ShouldBe(VmState.Stopped); }