Esempio n. 1
0
        public void TestCast()
        {
            var Node = CParser.StaticParseExpression("(unsigned int *)a");

            Console.WriteLine(Node.ToYaml());
            CollectionAssert.AreEqual(
                new string[] {
                "- CastExpression: unsigned int *",
            },
                Node.ToYamlLines().ToArray()
                );
        }
Esempio n. 2
0
        public void TestStringConcatTest()
        {
            var Node = CParser.StaticParseExpression(@" ""a"" ""b"" ");

            Console.WriteLine(Node.ToYaml());
            CollectionAssert.AreEqual(
                new string[] {
                "- StringExpression: ab",
            },
                Node.ToYamlLines().ToArray()
                );
        }
Esempio n. 3
0
        public void TestEmptyFunctionCall()
        {
            var Node = CParser.StaticParseExpression("func()");

            Console.WriteLine(Node.ToYaml());
            CollectionAssert.AreEqual(
                new string[] {
                "- FunctionCallExpression:",
                "   - IdentifierExpression: func",
                "   - ExpressionCommaList:",
            },
                Node.ToYamlLines().ToArray()
                );
        }
Esempio n. 4
0
        public void TestIncrementDereference2()
        {
            var Node = CParser.StaticParseExpression("**ptr++");

            Console.WriteLine(Node.ToYaml());
            CollectionAssert.AreEqual(
                new string[] {
                "- DereferenceExpression: *",
                "   - DereferenceExpression: *",
                "      - UnaryExpression: ++ (Right)",
                "         - IdentifierExpression: ptr",
            },
                Node.ToYamlLines().ToArray()
                );
        }
Esempio n. 5
0
        public void TestBinaryOperation()
        {
            var Node = CParser.StaticParseExpression("a++ + ++b");

            Console.WriteLine(Node.ToYaml());
            CollectionAssert.AreEqual(
                new string[] {
                "- BinaryExpression: +",
                "   - UnaryExpression: ++ (Right)",
                "      - IdentifierExpression: a",
                "   - UnaryExpression: ++ (Left)",
                "      - IdentifierExpression: b",
            },
                Node.ToYamlLines().ToArray()
                );
        }
Esempio n. 6
0
        public void TestOperatorPrecendence4()
        {
            var Node = CParser.StaticParseExpression("&(*__imp__iob)[2]");

            Console.WriteLine(Node.ToYaml());
            CollectionAssert.AreEqual(
                new string[] {
                "- ReferenceExpression: &",
                "   - ArrayAccessExpression:",
                "      - DereferenceExpression: *",
                "         - IdentifierExpression: __imp__iob",
                "      - IntegerExpression: 2",
            },
                Node.ToYamlLines().ToArray()
                );
        }
Esempio n. 7
0
        public void TestOperatorPrecendence2()
        {
            var Node = CParser.StaticParseExpression("4 * 1 + 2");

            Console.WriteLine(Node.ToYaml());
            CollectionAssert.AreEqual(
                new string[] {
                "- BinaryExpression: +",
                "   - BinaryExpression: *",
                "      - IntegerExpression: 4",
                "      - IntegerExpression: 1",
                "   - IntegerExpression: 2",
            },
                Node.ToYamlLines().ToArray()
                );

            Assert.AreEqual(4 * 1 + 2, Node.GetConstantValue <int>(null));
        }
Esempio n. 8
0
        public void TestFunctionCall()
        {
            var Node = CParser.StaticParseExpression("func(1, 2 + 3, 4)");

            Console.WriteLine(Node.ToYaml());
            CollectionAssert.AreEqual(
                new string[] {
                "- FunctionCallExpression:",
                "   - IdentifierExpression: func",
                "   - ExpressionCommaList:",
                "      - IntegerExpression: 1",
                "      - BinaryExpression: +",
                "         - IntegerExpression: 2",
                "         - IntegerExpression: 3",
                "      - IntegerExpression: 4",
            },
                Node.ToYamlLines().ToArray()
                );
        }
Esempio n. 9
0
        public void TestOperatorPrecendence3()
        {
            var Node = CParser.StaticParseExpression("1 == 1 && 0 != 2");

            Console.WriteLine(Node.ToYaml());
            CollectionAssert.AreEqual(
                new string[] {
                "- BinaryExpression: &&",
                "   - BinaryExpression: ==",
                "      - IntegerExpression: 1",
                "      - IntegerExpression: 1",
                "   - BinaryExpression: !=",
                "      - IntegerExpression: 0",
                "      - IntegerExpression: 2",
            },
                Node.ToYamlLines().ToArray()
                );

            Assert.AreEqual((true == true && false != true), Node.GetConstantValue <bool>(null));
        }
Esempio n. 10
0
        public void TestTrinaryOperator()
        {
            var Node = CParser.StaticParseExpression("1 ? 3 * 2 + 3 * (4 + 4) : 4");

            Console.WriteLine(Node.ToYaml());
            CollectionAssert.AreEqual(
                new string[] {
                "- TrinaryExpression:",
                "   - IntegerExpression: 1",
                "   - BinaryExpression: +",
                "      - BinaryExpression: *",
                "         - IntegerExpression: 3",
                "         - IntegerExpression: 2",
                "      - BinaryExpression: *",
                "         - IntegerExpression: 3",
                "         - BinaryExpression: +",
                "            - IntegerExpression: 4",
                "            - IntegerExpression: 4",
                "   - IntegerExpression: 4",
            },
                Node.ToYamlLines().ToArray()
                );
        }