Example #1
0
        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();
        }
Example #2
0
        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();
        }
Example #3
0
        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();
        }
Example #4
0
        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);
        }
Example #5
0
        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();
        }