Beispiel #1
0
        public void VisitInvocation_Unchanged()
        {
            var expression = ExpressionInstanceCreator.CreateInvokeWithArguments();
            var argument   = expression.Arguments.Single();

            Expect.Call(VisitorMock.Visit(expression.Expression)).Return(expression.Expression);
            Expect.Call(VisitorMock.Visit(argument)).Return(argument);
            var result = (InvocationExpression)InvokeAndCheckVisit("VisitInvocation", expression);

            Assert.That(result, Is.SameAs(expression));
        }
Beispiel #2
0
        public void VisitInvocation_ChangedArguments()
        {
            var        expression  = ExpressionInstanceCreator.CreateInvokeWithArguments();
            var        argument    = expression.Arguments.Single();
            Expression newArgument = Expression.Constant(214578);

            Expect.Call(VisitorMock.Visit(expression.Expression)).Return(expression.Expression);
            Expect.Call(VisitorMock.Visit(argument)).Return(newArgument);
            var result = (InvocationExpression)InvokeAndCheckVisit("VisitInvocation", expression);

            Assert.That(result, Is.Not.SameAs(expression));
            Assert.That(result.NodeType, Is.EqualTo(ExpressionType.Invoke));
            Assert.That(result.Arguments, Is.EqualTo(new[] { newArgument }));
            Assert.That(result.Expression, Is.SameAs(expression.Expression));
        }
Beispiel #3
0
        public void VisitInvocation_ChangedObject()
        {
            var        expression    = ExpressionInstanceCreator.CreateInvokeWithArguments();
            var        argument      = expression.Arguments.Single();
            Expression newExpression = Expression.Lambda(Expression.Constant(1), Expression.Parameter(typeof(int), "i"));

            Expect.Call(VisitorMock.Visit(expression.Expression)).Return(newExpression);
            Expect.Call(VisitorMock.Visit(argument)).Return(argument);
            var result = (InvocationExpression)InvokeAndCheckVisit("VisitInvocation", expression);

            Assert.That(result, Is.Not.SameAs(expression));
            Assert.That(result.NodeType, Is.EqualTo(ExpressionType.Invoke));
            Assert.That(result.Expression, Is.SameAs(newExpression));
            Assert.That(result.Arguments, Is.SameAs(expression.Arguments));
        }