public void Shl_SecondOperandGreaterThan15_ShiftPerformedModulo16() { // TODO: Get clarification on the DCPU spec that this is actually // TODO: how shifts should work. var prev = new MutableState().Set(Register.A, 0x1234).Set(Register.B, 20); var state = new Shl(new Reg(Register.A), new Reg(Register.B)).Apply(prev); Assert.AreEqual(0x2340, state.Get(Register.A)); Assert.AreEqual(0x0001, state.Get(Register.O)); }
public void Shl_RegisterAndLiteral_ResultAndOverflowAreCorrect() { var prev = new MutableState().Set(Register.A, 0x5201); var state = new Shl(new Reg(Register.A), new Literal(4)).Apply(prev); Assert.AreEqual(0x2010, state.Get(Register.A)); Assert.AreEqual(0x5, state.Get(Register.O)); }