public void SetNameIsNotCalledAfterFirstDataBlock() { // --- Arrange var vm = new SpectrumTapeDeviceTestMachine(); var provider = new FakeTapeProvider(); var td = new TapeDevice(provider, provider); td.OnAttachedToVm(vm); var testData = new byte[] { 0x00, 0x00, 0x42, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x20, 0x20, 0x20, 0x20, 0x4F, 0x00, 0x6F, 0x80, 0x4F, 0x00, 0xC3 }; EmitFullDataBlock(vm, td, testData); var before = provider.SuggestedName; provider.Reset(); // --- Act EmitFullDataBlock(vm, td, testData); // --- Assert before.ShouldBe("Border"); provider.SuggestedName.ShouldBeNull(); }
public void CreateTapeFileIsInvokedWhenEnteringSaveMode() { // --- Arrange var vm = new SpectrumTapeDeviceTestMachine(); var provider = new FakeTapeProvider(); var td = new TapeDevice(provider, provider); td.OnAttachedToVm(vm); vm.Cpu.Registers.PC = td.SaveBytesRoutineAddress; // --- Act td.SetTapeMode(); // --- Assert td.CurrentMode.ShouldBe(TapeOperationMode.Save); provider.CreateTapeFileInvoked.ShouldBeTrue(); }
public void SaveTzxBlockIsCalledWhenCompletingDataBlock() { // --- Arrange var vm = new SpectrumTapeDeviceTestMachine(); var provider = new FakeTapeProvider(); var td = new TapeDevice(provider, provider); td.OnAttachedToVm(vm); var testData = new byte[] { 0x90, 0x02, 0x05, 0xAA, 0xFF, 0x63 }; // --- Act EmitFullDataBlock(vm, td, testData); // --- Assert td.CurrentMode.ShouldBe(TapeOperationMode.Save); td.SavePhase.ShouldBe(SavePhase.None); provider.SaveTzxBlockInvoked.ShouldBeTrue(); }
public void SetTapeModeLeavesLoadModeWhenEof() { // --- Arrange var vm = new SpectrumTapeDeviceTestMachine(); var provider = new FakeTapeProvider(); var td = new TapeDevice(null, provider); td.OnAttachedToVm(vm); vm.Cpu.Registers.PC = td.LoadBytesRoutineAddress; td.SetTapeMode(); var before = td.CurrentMode; // --- Act td.SetTapeMode(); // --- Assert before.ShouldBe(TapeOperationMode.Load); td.CurrentMode.ShouldBe(TapeOperationMode.Passive); }
public void SetNameIsNotCalledWithInvalidHeader() { // --- Arrange var vm = new SpectrumTapeDeviceTestMachine(); var provider = new FakeTapeProvider(); var td = new TapeDevice(provider, provider); td.OnAttachedToVm(vm); var testData = new byte[] { 0x42, 0x6F, 0x72, 0x64, 0x65, 0x72, 0x20, 0x20, 0x20, 0x20 }; // --- Act EmitFullDataBlock(vm, td, testData); // --- Assert td.CurrentMode.ShouldBe(TapeOperationMode.Save); td.SavePhase.ShouldBe(SavePhase.None); provider.SuggestedName.ShouldBeNull(); }