public async Task StepOverSendsDebugMessageAfterCompleted() { // --- Arrange const ushort BREAK_ADDR_1 = 0x0002; const ushort BREAK_ADDR_2 = 0x0005; var debugInfo = new SpectrumDebugInfoProvider(); debugInfo.Breakpoints.Add(BREAK_ADDR_1, MinimumBreakpointInfo.EmptyBreakpointInfo); var vm = new MachineViewModel { ClockProvider = new ClockProvider(), RomProvider = new ResourceRomProvider(), DebugInfoProvider = debugInfo }; MachineDebugPausedMessage messageReceived = null; Messenger.Default.Register <MachineDebugPausedMessage>(this, msg => { messageReceived = msg; }); MakeSyncContext(); vm.StartDebugVmCommand.Execute(null); await vm.RunnerTask; // --- Act MakeSyncContext(); vm.StepOverCommand.Execute(null); await vm.RunnerTask; // --- Assert vm.VmState.ShouldBe(VmState.Paused); vm.RunsInDebugMode.ShouldBeTrue(); messageReceived.ShouldNotBeNull(); vm.SpectrumVm.Cpu.Registers.PC.ShouldBe(BREAK_ADDR_2); }
public async Task PauseVmDoesNotSendDebugMessageWhenNotDebugged() { // --- Arrange var vm = new MachineViewModel { ClockProvider = new ClockProvider(), RomProvider = new ResourceRomProvider() }; MakeSyncContext(); vm.StartVmCommand.Execute(null); var before = vm.SpectrumVm; MachineDebugPausedMessage messageReceived = null; Messenger.Default.Register <MachineDebugPausedMessage>(this, msg => { messageReceived = msg; }); // --- Act vm.PauseVmCommand.Execute(null); await vm.RunnerTask; // --- Assert before.ShouldNotBeNull(); vm.SpectrumVm.ShouldBeSameAs(before); vm.VmState.ShouldBe(VmState.Paused); messageReceived.ShouldBeNull(); }