public void ModifyWhenConditionIsMet() { LessThanInstruction a = new LessThanInstruction(true); LessThanInstruction b = new LessThanInstruction(false); Assert.Equal(5, a.Modify(0, 5, -1, 0)); Assert.Equal(0, a.Modify(0, 1, 1, 0)); Assert.Equal(0, a.Modify(0, 1, 0, 0)); Assert.Equal(5, b.Modify(6, 1, 3, 5)); }
public Instruction GiveConcreteInstruction(Opcode instruction) { Instruction concreteInstruction = null; int opCode = instruction.GetOpCode(); switch (opCode) { case (int)Opcodes.Addition: concreteInstruction = new AdditionInstruction(instruction.GetFirstParameterMode(), instruction.GetSecondParameterMode()); break; case (int)Opcodes.Multiplication: concreteInstruction = new MultiplyInstruction(instruction.GetFirstParameterMode(), instruction.GetSecondParameterMode()); break; case (int)Opcodes.Input: concreteInstruction = new InputInstruction(program.Inputs[program.CurrentInputPointer++], instruction.GetFirstParameterMode()); break; case (int)Opcodes.Output: concreteInstruction = new OutputInstruction(instruction.GetFirstParameterMode()); break; case (int)Opcodes.JumpIfTrue: concreteInstruction = new JumpIfTrueInstruction(instruction.GetFirstParameterMode(), instruction.GetSecondParameterMode()); break; case (int)Opcodes.JumpIfFalse: concreteInstruction = new JumpIfFalseInstruction(instruction.GetFirstParameterMode(), instruction.GetSecondParameterMode()); break; case (int)Opcodes.LessThan: concreteInstruction = new LessThanInstruction(instruction.GetFirstParameterMode(), instruction.GetSecondParameterMode(), instruction.GetThirdParameterMode()); break; case (int)Opcodes.Equals: concreteInstruction = new EqualsInstruction(instruction.GetFirstParameterMode(), instruction.GetSecondParameterMode(), instruction.GetThirdParameterMode()); break; } return(concreteInstruction); }
public void EmitLessThan(Type type) { Emit(LessThanInstruction.Create(type)); }