Exemplo n.º 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());
        }
Exemplo n.º 2
0
        public void NestedIfStatement()
        {
            CompareNum  isFalse        = new CompareNum(1, 2, ConditionOperator.EQUAL);
            List <byte> inner_if_false = InstructionFactory.Make_If(
                new List <byte> {
                (byte)Instruction.ERROR
            },
                LiteralFactory.CreateConditionLiteral(isFalse)
                );

            List <byte> innerCode = new List <byte>(inner_if_false);

            innerCode.Insert(0, (byte)Instruction.EFFECT_DELIMITER);

            CompareNum  isTrue        = new CompareNum(1, 2, ConditionOperator.NOT_EQUAL);
            List <byte> outer_if_true = InstructionFactory.Make_If(
                innerCode,
                LiteralFactory.CreateConditionLiteral(isTrue)
                );

            bytes.push(outer_if_true);
            game.ExecuteNext();
            Assert.IsTrue(bytes.HasBytes());
            game.ExecuteNext();
            Assert.IsTrue(bytes.HasBytes());
            bytes.pop();
            Assert.IsFalse(bytes.HasBytes());
        }
Exemplo n.º 3
0
        public void IfStatement()
        {
            CompareNum  compare  = new CompareNum(1, 2, ConditionOperator.EQUAL);
            List <byte> if_false = InstructionFactory.Make_If(
                new List <byte> {
                (byte)Instruction.EFFECT_DELIMITER
            },
                LiteralFactory.CreateConditionLiteral(compare)
                );

            bytes.push(if_false);
            game.ExecuteNext();
            Assert.IsFalse(bytes.HasBytes());

            compare = new CompareNum(1, 2, ConditionOperator.NOT_EQUAL);
            List <byte> if_true = InstructionFactory.Make_If(
                new List <byte> {
                (byte)Instruction.EFFECT_DELIMITER
            },
                LiteralFactory.CreateConditionLiteral(compare)
                );

            bytes.push(if_true);
            game.ExecuteNext();
            Assert.IsTrue(bytes.HasBytes());
            Assert.AreEqual((byte)Instruction.EFFECT_DELIMITER, bytes.pop());
            Assert.IsFalse(bytes.HasBytes());
        }
Exemplo n.º 4
0
    public static List <byte> CreateConditionLiteral(CompareNum condition)
    {
        List <byte> operandA = CreateIntLiteral(condition.OperandA);
        List <byte> operandB = CreateIntLiteral(condition.OperandB);

        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.NUM, Instruction.ENUM_CONDITION_TYPE)));
        bytes.Add((byte)Instruction.CONDITION);
        return(bytes);
    }
Exemplo n.º 5
0
        public void UnlessStatement()
        {
            CompareNum  compare      = new CompareNum(1, 2, ConditionOperator.EQUAL);
            List <byte> unless_false = InstructionFactory.Make_Unless(
                new List <byte> {
                (byte)Instruction.EFFECT_DELIMITER
            },
                LiteralFactory.CreateConditionLiteral(compare)
                );

            bytes.push(unless_false);
            game.ExecuteNext();
            Assert.IsTrue(bytes.HasBytes());
        }
Exemplo n.º 6
0
        private static int[] BubbleSort(int[] array, CompareNum comp)
        {
            bool swap;

            do
            {
                swap = false;
                for (int i = 1; i < array.Length; i++)
                {
                    if (comp(array[i - 1], array[i]) > 0)
                    {
                        swap = true;
                        int temp = array[i - 1];
                        array[i - 1] = array[i];
                        array[i]     = temp;
                    }
                }
            } while (swap);

            return(array);
        }