public void ConstructionWorksAsExpected() { // --- Act var mc = new SpectrumVmController(); // --- Assert mc.VmState.ShouldBe(VmState.None); mc.SpectrumVm.ShouldBeNull(); mc.IsOnMainThread().ShouldBeTrue(); }
public async Task SubsequentStopsDoNotSeemFirst() { // --- Arrange var mc = new SpectrumVmController { StartupConfiguration = new MachineStartupConfiguration { DeviceData = new DeviceInfoCollection { new RomDeviceInfo(new ResourceRomProvider(), new RomConfigurationData { NumberOfRoms = 1, RomName = "ZxSpectrum48", Spectrum48RomIndex = 0 }, new SpectrumRomDevice()), new MemoryDeviceInfo( new MemoryConfigurationData { SupportsBanking = false, ContentionType = MemoryContentionType.Ula }, null), new BeeperDeviceInfo(new AudioConfigurationData { AudioSampleRate = 35000, SamplesPerFrame = 699, TactsPerSample = 100 }, null), new ClockDeviceInfo(new ClockProvider()), new ScreenDeviceInfo(SpectrumModels.ZxSpectrum48Pal.Screen) } } }; var before = mc.SpectrumVm; mc.StartVm(new ExecuteCycleOptions(EmulationMode.UntilFrameEnds)); await mc.StarterTask; mc.StopVm(); await mc.CompletionTask; mc.StartVm(new ExecuteCycleOptions(EmulationMode.UntilFrameEnds)); await mc.StarterTask; // --- Act mc.StopVm(); await mc.CompletionTask; // --- Assert before.ShouldBeNull(); mc.SpectrumVm.ShouldNotBeNull(); mc.IsFirstStart.ShouldBeTrue(); }