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()); }
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); }