public void WriteWorksAsExpected() { // --- Arrange var dev = new SpectrumP3MemoryDevice(); dev.OnAttachedToVm(null); dev.Reset(); for (var i = 0; i < 0x4000; i++) { dev.CurrentRom[i] = 0xFC; } for (var i = 0; i <= 0xFFFF; i++) { dev.Write((ushort)i, (byte)(i & 0xFF)); } // -- Assert for (var i = 0; i <= 0x3FFF; i++) { dev.Read((ushort)i).ShouldBe((byte)0xFC); } for (var i = 0x4000; i <= 0x7FFF; i++) { dev.Read((ushort)i).ShouldBe((byte)(i & 0xFF)); } for (var i = 0x8000; i <= 0xBFFF; i++) { dev.Read((ushort)i).ShouldBe((byte)(i & 0xFF)); } for (var i = 0xC000; i <= 0xFFFF; i++) { dev.Read((ushort)i).ShouldBe((byte)(i & 0xFF)); } for (var b = 0; b < 8; b++) { for (var i = 0; i <= 0x3FFF; i++) { if (b == 0 || b == 2 || b == 5) { dev.RamBanks[b][i].ShouldBe((byte)(i & 0xFF)); } else { dev.RamBanks[b][i].ShouldBe((byte)0xFF); } } } }