예제 #1
0
        public void VisitLambda_Unchanged()
        {
            var expression = ExpressionInstanceCreator.CreateLambdaWithArguments();
            var parameter  = expression.Parameters.Single();

            Expect.Call(VisitorMock.Visit(expression.Body)).Return(expression.Body);
            Expect.Call(VisitorMock.Visit(parameter)).Return(parameter);
            var result = (LambdaExpression)InvokeAndCheckVisit("VisitLambda", expression);

            Assert.That(result, Is.SameAs(expression));
        }
예제 #2
0
        public void VisitLambda_ChangedParameters()
        {
            var        expression   = ExpressionInstanceCreator.CreateLambdaWithArguments();
            var        parameter    = expression.Parameters.Single();
            Expression newParameter = Expression.Parameter(typeof(int), "i");

            Expect.Call(VisitorMock.Visit(expression.Body)).Return(expression.Body);
            Expect.Call(VisitorMock.Visit(parameter)).Return(newParameter);
            var result = (LambdaExpression)InvokeAndCheckVisit("VisitLambda", expression);

            Assert.That(result, Is.Not.SameAs(expression));
            Assert.That(result.NodeType, Is.EqualTo(ExpressionType.Lambda));
            Assert.That(result.Parameters, Is.EqualTo(new[] { newParameter }));
            Assert.That(result.Body, Is.SameAs(expression.Body));
        }