public async Task SpectrumP3EIn48ModeStartAndRunToMainWorksWithExistingStateFile() { // --- Arrange const string STATE_FILE = SpectrumVmStateFileManagerBase.SPECTRUM_P3_STARTUP_48; var filename = Path.Combine(STATE_FOLDER, STATE_FILE); if (File.Exists(filename)) { File.Delete(filename); } var sm = SpectrumVmFactory.CreateSpectrumP3E(); sm.CachedVmStateFolder = STATE_FOLDER; await sm.StartAndRunToMain(true); var creationTimeBefore = new FileInfo(filename).CreationTime; await sm.Stop(); // --- Act await sm.StartAndRunToMain(true); // --- Assert var creationTimeAfter = new FileInfo(filename).CreationTime; sm.MachineState.ShouldBe(VmState.Paused); sm.Cpu.PC.ShouldBe(SpectrumVmStateFileManagerBase.SP48_MAIN_EXEC_ADDR); File.Exists(filename).ShouldBeTrue(); creationTimeBefore.ShouldBe(creationTimeAfter); }
public void SpectrumP3EPalVmCreationWorks() { // --- Act var sm = SpectrumVmFactory.CreateSpectrumP3E(); // --- Assert sm.ModelKey.ShouldBe(SpectrumModels.ZX_SPECTRUM_P3_E); sm.EditionKey.ShouldBe(SpectrumModels.PAL); sm.Cpu.ShouldNotBeNull(); sm.Roms.ShouldNotBeNull(); sm.RomCount.ShouldBe(4); sm.PagingInfo.ShouldNotBeNull(); sm.RamBanks.ShouldNotBeNull(); sm.RamBankCount.ShouldBe(8); sm.Keyboard.ShouldNotBeNull(); sm.ScreenConfiguration.ShouldNotBeNull(); sm.ScreenConfiguration.ScreenRenderingFrameTactCount.ShouldBe(70908); sm.ScreenBitmap.ShouldNotBeNull(); sm.ScreenRenderingStatus.ShouldNotBeNull(); sm.BeeperConfiguration.ShouldNotBeNull(); sm.BeeperSamples.ShouldNotBeNull(); sm.SoundConfiguration.ShouldNotBeNull(); sm.AudioSamples.ShouldNotBeNull(); sm.Breakpoints.ShouldNotBeNull(); sm.MachineState.ShouldBe(VmState.None); sm.ExecutionCompletionReason.ShouldBe(ExecutionCompletionReason.None); sm.IsFirstStart.ShouldBeFalse(); sm.IsFirstPause.ShouldBeFalse(); }
public void CreateSpectrumP3EWorks() { // --- Act var sm = SpectrumVmFactory.CreateSpectrumP3E(); // --- Assert sm.ShouldNotBeNull(); sm.ModelKey.ShouldBe(SpectrumModels.ZX_SPECTRUM_P3_E); sm.EditionKey.ShouldBe(SpectrumModels.PAL); }
public async Task SpectrumP3EStartAndRunToMainWorksWithNoStateFile() { // --- Arrange const string STATE_FILE = SpectrumVmStateFileManagerBase.SPECTRUM_P3_STARTUP_P3; var filename = Path.Combine(STATE_FOLDER, STATE_FILE); if (File.Exists(filename)) { File.Delete(filename); } var sm = SpectrumVmFactory.CreateSpectrumP3E(); sm.CachedVmStateFolder = STATE_FOLDER; // --- Act await sm.StartAndRunToMain(); // --- Assert sm.MachineState.ShouldBe(VmState.Paused); sm.Cpu.PC.ShouldBe(SpectrumVmStateFileManagerBase.SPP3_RETURN_TO_EDITOR); File.Exists(filename).ShouldBeTrue(); }
public async Task RunningSpectrumP3EDoesNotAllowStratAndRunToMain() { // --- Arrange var sm = SpectrumVmFactory.CreateSpectrumP3E(); sm.CachedVmStateFolder = STATE_FOLDER; sm.Start(); // --- Act/Assert try { await sm.StartAndRunToMain(true); } catch (InvalidOperationException) { return; } finally { await sm.Stop(); } Assert.Fail("Expected InvalidOperationException"); }