Example #1
0
        public void ConditionBytecode()
        {
            CompareBool compbool1 = new CompareBool(true, true, ConditionOperator.EQUAL);

            bytes.push(LiteralFactory.CreateConditionLiteral(compbool1));
            Condition boolCondition1 = bytes.ReadConditionLiteral(dummyCallback);

            Assert.IsTrue(boolCondition1.Evaluate());

            CompareBool compbool2 = new CompareBool(true, true, ConditionOperator.NOT_EQUAL);

            bytes.push(LiteralFactory.CreateConditionLiteral(compbool2));
            Condition boolCondition2 = bytes.ReadConditionLiteral(dummyCallback);

            Assert.IsFalse(boolCondition2.Evaluate());

            CompareNum compnum1 = new CompareNum(2, 4, ConditionOperator.LESS_THAN);

            bytes.push(LiteralFactory.CreateConditionLiteral(compnum1));
            Condition numCondition1 = bytes.ReadConditionLiteral(dummyCallback);

            Assert.IsTrue(numCondition1.Evaluate());

            CompareNum compnum2 = new CompareNum(2, -2, ConditionOperator.LESS_THAN);

            bytes.push(LiteralFactory.CreateConditionLiteral(compnum2));
            Condition numCondition2 = bytes.ReadConditionLiteral(dummyCallback);

            Assert.IsFalse(numCondition2.Evaluate());
        }
Example #2
0
    public static List <byte> CreateConditionLiteral(CompareBool condition)
    {
        List <byte> operandA = CreateBoolLiteral(condition.Operand);
        List <byte> operandB = CreateBoolLiteral(condition.CheckValue);

        List <byte> bytes = new List <byte>();

        bytes.AddRange(new List <byte>(operandB));
        bytes.AddRange(new List <byte>(CreateEnumLiteral((byte)condition.Operator, Instruction.ENUM_CONDITION_OPERATOR)));
        bytes.AddRange(new List <byte>(operandA));
        bytes.AddRange(new List <byte>(CreateEnumLiteral((byte)ConditionType.BOOL, Instruction.ENUM_CONDITION_TYPE)));
        bytes.Add((byte)Instruction.CONDITION);
        return(bytes);
    }