Beispiel #1
0
        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));
 }