Ejemplo n.º 1
0
 public Value Visit(MinusExpr expr, Scope scope)
 {
     return(PerformOperation(expr.Left.Accept(this, scope),
                             expr.Right.Accept(this, scope),
                             (a, b) => a - b,
                             (a, b) => a - b,
                             (a, b) => { throw new InvalidOperationException(); },
                             (a, b) => { throw new InvalidOperationException(); }));
 }
Ejemplo n.º 2
0
            public void RightPropertyReturnsPassedRhsInstance()
            {
                var lhs = new ConstantExpr(1);
                var rhs = new ConstantExpr(2);

                var target = new MinusExpr(lhs, rhs);

                Assert.AreSame(rhs, target.Right);
            }
Ejemplo n.º 3
0
            public void RightPropertyReturnsPassedRhsInstance()
            {
                var lhs = new ConstantExpr(1);
                var rhs = new ConstantExpr(2);

                var target = new MinusExpr(lhs, rhs);

                Assert.AreSame(rhs, target.Right);
            }
Ejemplo n.º 4
0
            public void AcceptMethodCallsVisitOnVisitorWithThis()
            {
                var lhs = new ConstantExpr(1);
                var rhs = new ConstantExpr(2);

                var target  = new MinusExpr(lhs, rhs);
                var visitor = new Mock <IExpressionVisitor <string, int> >();

                target.Accept(visitor.Object, 0);

                visitor.Verify(x => x.Visit(target, 0), Times.Once);
            }
Ejemplo n.º 5
0
            public void VisitMinusExpr()
            {
                var target = new EvaluateVisitor();

                var lhs        = new ConstantExpr(1);
                var rhs        = new ConstantExpr(2);
                var expression = new MinusExpr(lhs, rhs);

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

                Assert.AreEqual("-1", actual.ToString());
            }
Ejemplo n.º 6
0
            public void VisitMinusExpr()
            {
                var target = new PrintVisitor();

                var lhs        = new ConstantExpr(1);
                var rhs        = new ConstantExpr(2);
                var expression = new MinusExpr(lhs, rhs);

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

                Assert.AreEqual("1-2", actual);
            }
Ejemplo n.º 7
0
            public void AcceptMethodCallsVisitOnVisitorWithThis()
            {
                var lhs = new ConstantExpr(1);
                var rhs = new ConstantExpr(2);

                var target = new MinusExpr(lhs, rhs);
                var visitor = new Mock<IExpressionVisitor<string, int>>();

                target.Accept(visitor.Object,0);

                visitor.Verify(x => x.Visit(target,0), Times.Once);
            }
Ejemplo n.º 8
0
            public void AcceptMethodCallsOnlyVisitOnVisitorWithThisAndNoOtherVisitMethods()
            {
                var lhs = new ConstantExpr(1);
                var rhs = new ConstantExpr(2);

                var target = new MinusExpr(lhs, rhs);
                // throw exception is any other methods called other than the MinusExpr overload.
                var visitor = new Mock<IExpressionVisitor<string, int>>(MockBehavior.Strict);
                visitor.Setup(x => x.Visit(It.IsAny<MinusExpr>(), It.IsAny<int>())).Returns("");

                target.Accept(visitor.Object,0);
            }
Ejemplo n.º 9
0
            public void VisitMinusExpr()
            {
                var target = new TypeCheckingVisitor();

                var lhs        = new ConstantExpr(1);
                var rhs        = new ConstantExpr(2);
                var expression = new MinusExpr(lhs, rhs);

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

                Assert.AreEqual(ValueType.Int, actual);
            }
Ejemplo n.º 10
0
            public void AcceptMethodCallsOnlyVisitOnVisitorWithThisAndNoOtherVisitMethods()
            {
                var lhs = new ConstantExpr(1);
                var rhs = new ConstantExpr(2);

                var target = new MinusExpr(lhs, rhs);
                // throw exception is any other methods called other than the MinusExpr overload.
                var visitor = new Mock <IExpressionVisitor <string, int> >(MockBehavior.Strict);

                visitor.Setup(x => x.Visit(It.IsAny <MinusExpr>(), It.IsAny <int>())).Returns("");

                target.Accept(visitor.Object, 0);
            }
Ejemplo n.º 11
0
            public void VisitMinusExpr()
            {
                var target = new TypeCheckingVisitor();

                var lhs = new ConstantExpr(1);
                var rhs = new ConstantExpr(2);
                var expression = new MinusExpr(lhs, rhs);

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

                Assert.AreEqual(ValueType.Int, actual);
            }
Ejemplo n.º 12
0
 /// <summary>
 /// Validate a minus expression.
 /// </summary>
 /// <param name="e">
 ///            is the expression. </param>
 /// <returns> null. </returns>
 public virtual object visit(MinusExpr e)
 {
     printUnExpr("MINUS", e);
     return(null);
 }
Ejemplo n.º 13
0
 public string Visit(MinusExpr expr, Scope scope)
 {
     return(expr.Left.Accept(this, scope) + "-" + expr.Right.Accept(this, scope));
 }
Ejemplo n.º 14
0
            public void VisitMinusExpr()
            {
                var target = new PrintVisitor();

                var lhs = new ConstantExpr(1);
                var rhs = new ConstantExpr(2);
                var expression = new MinusExpr(lhs, rhs);

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

                Assert.AreEqual("1-2", actual);
            }
Ejemplo n.º 15
0
        /// <param name="e">
        ///            is the minus expression. </param>
        /// <returns> new sub expression </returns>
        public virtual object visit(MinusExpr e)
        {
            SubExpr se = new SubExpr(make_int_lit(0), e.arg());

            return(se.accept(this));
        }
Ejemplo n.º 16
0
 /// <param name="e">
 ///            is the minus expression. </param>
 /// <returns> new sub expression </returns>
 public virtual object visit(MinusExpr e)
 {
     e.arg().accept(this);
     return(null);
 }
Ejemplo n.º 17
0
 public ValueType Visit(MinusExpr expr, Scope scope)
 {
     return(BinaryOperatorTypeCheck(expr, scope, numericTypesOnly: true));
 }
Ejemplo n.º 18
0
            public void VisitMinusExpr()
            {
                var target = new EvaluateVisitor();

                var lhs = new ConstantExpr(1);
                var rhs = new ConstantExpr(2);
                var expression = new MinusExpr(lhs, rhs);

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

                Assert.AreEqual("-1", actual.ToString());
            }