예제 #1
0
        public void FoldInPrintTest()
        {
            var AST      = BuildAST(@"
var a, b;
print(4 + 5, 2 - 1, 6 / 3, 2 * 5);
");
            var expected = @"var a, b;
print(9, 1, 2, 10);";

            var opt = new OptExprAlgebraic();

            AST.root.Visit(opt);
            var pp = new PrettyPrintVisitor();

            AST.root.Visit(pp);
            Assert.AreEqual(expected, pp.Text);
        }
예제 #2
0
        public void DivNumTest()
        {
            var AST      = BuildAST(@"
var a, b;
a = 546 / 13;
");
            var expected = @"var a, b;
a = 42;";

            var opt = new OptExprAlgebraic();

            AST.root.Visit(opt);
            var pp = new PrettyPrintVisitor();

            AST.root.Visit(pp);
            Assert.AreEqual(expected, pp.Text);
        }
예제 #3
0
        public void FoldComplexTest()
        {
            var AST      = BuildAST(@"
var a, b;
a = 42 / 6 * 3 - 3 * (1 + 1) - 2;
");
            var expected = @"var a, b;
a = 13;";

            var opt = new OptExprAlgebraic();

            AST.root.Visit(opt);
            var pp = new PrettyPrintVisitor();

            AST.root.Visit(pp);
            Assert.AreEqual(expected, pp.Text);
        }
예제 #4
0
        public void NotFoldTest()
        {
            var AST      = BuildAST(@"
var a, b;
a = 546 > 13;
b = 546 < 13;
a = 546 != 13;
b = 42 == 13;
");
            var expected = @"var a, b;
a = (546 > 13);
b = (546 < 13);
a = (546 != 13);
b = (42 == 13);";

            var opt = new OptExprAlgebraic();

            AST.root.Visit(opt);
            var pp = new PrettyPrintVisitor();

            AST.root.Visit(pp);
            Assert.AreEqual(expected, pp.Text);
        }