public void ToStringReturnsOperandStringRepresentation() { var cpuStateManager = new Mock<ICpuStateOperations>(); var operand = new IndirectNextWordOffsetOperand(); cpuStateManager.Setup(m => m.IncrementProgramCounter()).Returns(0x1); cpuStateManager.Setup(m => m.ReadMemoryValueAtAddress(0x1)).Returns(0x10); cpuStateManager.Setup(m => m.ReadGeneralPursoseRegisterValue(0x0)).Returns(0x0); operand.Process(cpuStateManager.Object); var expected = string.Format( "[{0}+{1}={2}]", string.Format("0x{0:X4}", 0x10), "A", string.Format("0x{0:X4}", 0x0)); Assert.That(operand.ToString(), Is.EqualTo(expected)); }
public void ProcessSetsNextWordAdressToNextInstruction() { var cpuStateManager = new Mock<ICpuStateOperations>(); var operand = new IndirectNextWordOffsetOperand(); cpuStateManager.Setup(m => m.IncrementProgramCounter()).Returns(0x1); cpuStateManager.Setup(m => m.ReadMemoryValueAtAddress(0x1)).Returns(0x10); cpuStateManager.Setup(m => m.ReadGeneralPursoseRegisterValue(0x0)).Returns(0x0); operand.Process(cpuStateManager.Object); cpuStateManager.Setup(m => m.ReadMemoryValueAtAddress(0x10)); operand.Read(cpuStateManager.Object); cpuStateManager.VerifyAll(); }
public void AssembleGeneratesCorrectValueIfOperandIsFirstOperand() { var operand = new IndirectNextWordOffsetOperand { RegisterValue = 0 }; const int Index = 0; const ushort Shift = (ushort)(OpcodeWidth + (Index * OperandWidth)); Assert.That( operand.AssembleOperand(Index), Is.EqualTo((ushort)(((ushort)OperandType.OIndirectNextWordOffset + 0) << Shift))); }