public async Task Spectrum128In48ModeStartAndRunToMainWorksWithExistingStateFile() { // --- Arrange const string STATE_FILE = SpectrumVmStateFileManagerBase.SPECTRUM_128_STARTUP_48; var filename = Path.Combine(STATE_FOLDER, STATE_FILE); if (File.Exists(filename)) { File.Delete(filename); } var sm = SpectrumVmFactory.CreateSpectrum128(); 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 Spectrum128PalVmCreationWorks() { // --- Act var sm = SpectrumVmFactory.CreateSpectrum128(); // --- Assert sm.ModelKey.ShouldBe(SpectrumModels.ZX_SPECTRUM_128); sm.EditionKey.ShouldBe(SpectrumModels.PAL); sm.Cpu.ShouldNotBeNull(); sm.Roms.ShouldNotBeNull(); sm.RomCount.ShouldBe(2); 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 CreateSpectrum128Works() { // --- Act var sm = SpectrumVmFactory.CreateSpectrum128(); // --- Assert sm.ShouldNotBeNull(); sm.ModelKey.ShouldBe(SpectrumModels.ZX_SPECTRUM_128); sm.EditionKey.ShouldBe(SpectrumModels.PAL); }
public async Task SoundSamplesCreatedForSpectrum128() { // --- Arrange var sm = SpectrumVmFactory.CreateSpectrum128(); // --- Act sm.RunUntilFrameCompletion(); await sm.CompletionTask; // --- Assert sm.AudioSamples.Count.ShouldBeGreaterThanOrEqualTo(sm.SoundConfiguration.SamplesPerFrame); sm.AudioSamples.Count.ShouldBeLessThanOrEqualTo(sm.SoundConfiguration.SamplesPerFrame + 1); }
public async Task Spectrum128StartAndRunToMainWorksWithNoStateFile() { // --- Arrange const string STATE_FILE = SpectrumVmStateFileManagerBase.SPECTRUM_128_STARTUP_128; var filename = Path.Combine(STATE_FOLDER, STATE_FILE); if (File.Exists(filename)) { File.Delete(filename); } var sm = SpectrumVmFactory.CreateSpectrum128(); sm.CachedVmStateFolder = STATE_FOLDER; // --- Act await sm.StartAndRunToMain(); // --- Assert sm.MachineState.ShouldBe(VmState.Paused); sm.Cpu.PC.ShouldBe(SpectrumVmStateFileManagerBase.SP128_RETURN_TO_EDITOR); File.Exists(filename).ShouldBeTrue(); }
public async Task RunningSpectrum128DoesNotAllowStartAndRunToMain() { // --- Arrange var sm = SpectrumVmFactory.CreateSpectrum128(); sm.CachedVmStateFolder = STATE_FOLDER; sm.Start(); // --- Act/Assert try { await sm.StartAndRunToMain(true); } catch (InvalidOperationException) { return; } finally { await sm.Stop(); } Assert.Fail("Expected InvalidOperationException"); }