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