Exemplo n.º 1
0
            public void VisitIntegerConstantExpr()
            {
                var target = new TypeCheckingVisitor();

                var expression = new ConstantExpr(1234);

                var actual = target.Visit(expression, scope);

                Assert.AreEqual(ValueType.Int, actual);
            }
Exemplo n.º 2
0
            public void VisitBooleanConstantExpr(bool value)
            {
                var target = new TypeCheckingVisitor();

                var expression = new ConstantExpr(value);

                var actual = target.Visit(expression, scope);

                Assert.AreEqual(ValueType.Boolean, actual);
            }
Exemplo n.º 3
0
            public void NegationExpressionTest(object value, object expected)
            {
                var target = new TypeCheckingVisitor();

                var expr = new NegationExpr(new ConstantExpr(value));

                var actual = target.Visit(expr, scope);

                Assert.AreEqual(expected, actual);
            }
Exemplo n.º 4
0
            public void AndOrTest()
            {
                var target = new TypeCheckingVisitor();

                var expr = new AndExpr(new ConstantExpr(true), new OrExpr(new ConstantExpr(true), new ConstantExpr(false)));

                var actual = target.Visit(expr, scope);

                Assert.AreEqual(ValueType.Boolean, actual);
            }
Exemplo n.º 5
0
            public void VisitConditionMustBeBooleanType(object condition)
            {
                var target = new TypeCheckingVisitor();

                var conditionExpression = new ConstantExpr(condition);

                var expr = new ConditionalExpr(conditionExpression, new ConstantExpr(0), new ConstantExpr(0));

                target.Visit(expr, scope);
            }
Exemplo n.º 6
0
            public void VisitNoOpExpr()
            {
                var target = new TypeCheckingVisitor();

                var expression = new NoOpStatement();

                var actual = target.Visit(expression, scope);

                Assert.AreEqual(ValueType.Unit, actual);
            }
Exemplo n.º 7
0
            public void AssignmentTest()
            {
                var target = new TypeCheckingVisitor();

                var expr = new AssignmentExpr(new IdentifierExpr("a"), new ConstantExpr(1));

                var actual = target.Visit(expr, scope);

                Assert.AreEqual(ValueType.Int, actual);
            }
Exemplo n.º 8
0
            public void VisitBooleanNotExpr(bool a, ValueType expected)
            {
                var target = new TypeCheckingVisitor();

                var aExpression = new ConstantExpr(a);
                var expr        = new NotExpr(aExpression);

                var actual = target.Visit(expr, scope);

                Assert.AreEqual(expected, actual);
            }
Exemplo n.º 9
0
            public void VisitPlusWithDoubleAndIntExpr()
            {
                var target = new TypeCheckingVisitor();

                var lhs        = new ConstantExpr(1.1);
                var rhs        = new ConstantExpr(2);
                var expression = new PlusExpr(lhs, rhs);

                var actual = target.Visit(expression, scope);

                Assert.AreEqual(ValueType.Float, actual);
            }
Exemplo n.º 10
0
            public void VisitDivExpr()
            {
                var target = new TypeCheckingVisitor();

                var lhs        = new ConstantExpr(10);
                var rhs        = new ConstantExpr(2);
                var expression = new DivExpr(lhs, rhs);

                var actual = target.Visit(expression, scope);

                Assert.AreEqual(ValueType.Int, actual);
            }
Exemplo n.º 11
0
            public void VisitConditionalExpr(bool condition, object thenValue, object elseValue, ValueType expected)
            {
                var target = new TypeCheckingVisitor();

                var conditionExpression = new ConstantExpr(condition);
                var thenExpression      = new ConstantExpr(thenValue);
                var elseExpression      = new ConstantExpr(elseValue);

                var expr = new ConditionalExpr(conditionExpression, thenExpression, elseExpression);

                var actual = target.Visit(expr, scope);

                Assert.AreEqual(expected, actual);
            }
Exemplo n.º 12
0
            public void VisitMathExpressionTree()
            {
                var target = new TypeCheckingVisitor();

                var one   = new ConstantExpr(1);
                var two   = new ConstantExpr(2);
                var three = new ConstantExpr(3);
                var four  = new ConstantExpr(4);
                var five  = new ConstantExpr(5);
                var six   = new ConstantExpr(6);

                var expr = new DivExpr(new MultExpr(three, six), new MultExpr(new MinusExpr(five, one), new PlusExpr(four, two)));

                var actual = target.Visit(expr, scope);

                Assert.AreEqual(ValueType.Int, actual);
            }
Exemplo n.º 13
0
            public void InvalidLValueAssignmentTest()
            {
                var target = new TypeCheckingVisitor();

                var expr = new AssignmentExpr(new ConstantExpr("a"), new ConstantExpr(1));

                target.Visit(expr, scope);
            }
Exemplo n.º 14
0
            public void AssignmentTest()
            {
                var target = new TypeCheckingVisitor();

                var expr = new AssignmentExpr(new IdentifierExpr("a"), new ConstantExpr(1));

                var actual = target.Visit(expr, scope);

                Assert.AreEqual(ValueType.Int, actual);
            }
Exemplo n.º 15
0
            public void AndOrTest()
            {
                var target = new TypeCheckingVisitor();

                var expr = new AndExpr(new ConstantExpr(true), new OrExpr(new ConstantExpr(true), new ConstantExpr(false)));

                var actual = target.Visit(expr, scope);

                Assert.AreEqual(ValueType.Boolean, actual);
            }
Exemplo n.º 16
0
            public void NegationExpressionTest(object value, object expected)
            {
                var target = new TypeCheckingVisitor();

                var expr = new NegationExpr(new ConstantExpr(value));

                var actual = target.Visit(expr, scope);

                Assert.AreEqual(expected, actual);
            }
Exemplo n.º 17
0
            public void VisitConditionMustBeBooleanType(object condition)
            {
                var target = new TypeCheckingVisitor();

                var conditionExpression = new ConstantExpr(condition);

                var expr = new ConditionalExpr(conditionExpression, new ConstantExpr(0), new ConstantExpr(0));

                target.Visit(expr, scope);
            }
Exemplo n.º 18
0
            public void VisitConditionalExpr(bool condition, object thenValue, object elseValue, ValueType expected)
            {
                var target = new TypeCheckingVisitor();

                var conditionExpression = new ConstantExpr(condition);
                var thenExpression = new ConstantExpr(thenValue);
                var elseExpression = new ConstantExpr(elseValue);

                var expr = new ConditionalExpr(conditionExpression, thenExpression, elseExpression);

                var actual = target.Visit(expr, scope);

                Assert.AreEqual(expected, actual);
            }
Exemplo n.º 19
0
            public void VisitBooleanNotExpr(bool a, ValueType expected)
            {
                var target = new TypeCheckingVisitor();

                var aExpression = new ConstantExpr(a);
                var expr = new NotExpr(aExpression);

                var actual = target.Visit(expr, scope);

                Assert.AreEqual(expected, actual);
            }
Exemplo n.º 20
0
            public void VisitMathExpressionTree()
            {
                var target = new TypeCheckingVisitor();

                var one = new ConstantExpr(1);
                var two = new ConstantExpr(2);
                var three = new ConstantExpr(3);
                var four = new ConstantExpr(4);
                var five = new ConstantExpr(5);
                var six = new ConstantExpr(6);

                var expr = new DivExpr(new MultExpr(three, six), new MultExpr(new MinusExpr(five, one), new PlusExpr(four, two)));

                var actual = target.Visit(expr, scope);

                Assert.AreEqual(ValueType.Int, actual);
            }
Exemplo n.º 21
0
            public void VisitDivExpr()
            {
                var target = new TypeCheckingVisitor();

                var lhs = new ConstantExpr(10);
                var rhs = new ConstantExpr(2);
                var expression = new DivExpr(lhs, rhs);

                var actual = target.Visit(expression, scope);

                Assert.AreEqual(ValueType.Int, actual);
            }
Exemplo n.º 22
0
            public void VisitPlusWithDoubleAndIntExpr()
            {
                var target = new TypeCheckingVisitor();

                var lhs = new ConstantExpr(1.1);
                var rhs = new ConstantExpr(2);
                var expression = new PlusExpr(lhs, rhs);

                var actual = target.Visit(expression, scope);

                Assert.AreEqual(ValueType.Float, actual);
            }
Exemplo n.º 23
0
            public void VisitNoOpExpr()
            {
                var target = new TypeCheckingVisitor();

                var expression = new NoOpStatement();

                var actual = target.Visit(expression, scope);

                Assert.AreEqual(ValueType.Unit, actual);
            }
Exemplo n.º 24
0
            public void VisitIntegerConstantExpr()
            {
                var target = new TypeCheckingVisitor();

                var expression = new ConstantExpr(1234);

                var actual = target.Visit(expression, scope);

                Assert.AreEqual(ValueType.Int, actual);
            }
Exemplo n.º 25
0
            public void VisitBooleanConstantExpr(bool value)
            {
                var target = new TypeCheckingVisitor();

                var expression = new ConstantExpr(value);

                var actual = target.Visit(expression, scope);

                Assert.AreEqual(ValueType.Boolean, actual);
            }