Beispiel #1
0
        public void VisitConstant()
        {
            var expression = (ConstantExpression)ExpressionInstanceCreator.GetExpressionInstance(ExpressionType.Constant);
            var result     = (ConstantExpression)InvokeAndCheckVisit("VisitConstant", expression);

            Assert.That(result, Is.SameAs(expression));
        }
Beispiel #2
0
        public void VisitParameter()
        {
            var expression = (ParameterExpression)ExpressionInstanceCreator.GetExpressionInstance(ExpressionType.Parameter);
            var result     = (ParameterExpression)InvokeAndCheckVisit("VisitParameter", expression);

            Assert.That(result, Is.SameAs(expression));
        }
Beispiel #3
0
        public void VisitAndConvert_Single_ThrowsOnNull()
        {
            var expression = (BinaryExpression)ExpressionInstanceCreator.GetExpressionInstance(ExpressionType.Add);

            Expect.Call(VisitorMock.Visit(expression)).Return(null);

            InvokeVisitAndConvert(expression, "VisitMethod");
        }
Beispiel #4
0
        public void VisitTypeBinary_Unchanged()
        {
            var expression = (TypeBinaryExpression)ExpressionInstanceCreator.GetExpressionInstance(ExpressionType.TypeIs);

            Expect.Call(VisitorMock.Visit(expression.Expression)).Return(expression.Expression);
            var result = (TypeBinaryExpression)InvokeAndCheckVisit("VisitTypeBinary", expression);

            Assert.That(result, Is.SameAs(expression));
        }
Beispiel #5
0
        public void VisitMember_Unchanged()
        {
            var expression = (MemberExpression)ExpressionInstanceCreator.GetExpressionInstance(ExpressionType.MemberAccess);

            Expect.Call(VisitorMock.Visit(expression.Expression)).Return(expression.Expression);
            var result = (MemberExpression)InvokeAndCheckVisit("VisitMember", expression);

            Assert.That(result, Is.SameAs(expression));
        }
Beispiel #6
0
        public void VisitUnary_Unchanges()
        {
            var        expression        = (UnaryExpression)ExpressionInstanceCreator.GetExpressionInstance(ExpressionType.UnaryPlus);
            Expression expectedNextVisit = expression.Operand;

            Expect.Call(VisitorMock.Visit(expectedNextVisit)).Return(expectedNextVisit);

            Assert.That(InvokeAndCheckVisit("VisitUnary", expression), Is.SameAs(expression));
        }
Beispiel #7
0
        public void VisitMemberAssignment_Unchanged()
        {
            MemberAssignment memberAssignment = ExpressionInstanceCreator.CreateMemberAssignment();

            Expect.Call(VisitorMock.Visit(memberAssignment.Expression)).Return(memberAssignment.Expression);
            var result = (MemberAssignment)InvokeAndCheckVisitObject("VisitMemberAssignment", memberAssignment);

            Assert.That(result, Is.SameAs(memberAssignment));
        }
        public void VisitNew_Unchanged()
        {
            var expression = (NewExpression)ExpressionInstanceCreator.GetExpressionInstance(ExpressionType.New);
            var argument   = expression.Arguments.Single();

            Expect.Call(VisitorMock.Visit(argument)).Return(argument);
            var result = (NewExpression)InvokeAndCheckVisit("VisitNew", expression);

            Assert.That(result, Is.SameAs(expression));
        }
Beispiel #9
0
        public void VisitAndConvert_Single_NoConvert()
        {
            var expression = (BinaryExpression)ExpressionInstanceCreator.GetExpressionInstance(ExpressionType.Add);

            Expect.Call(VisitorMock.Visit(expression)).Return(expression);

            var result = InvokeVisitAndConvert(expression, "Add");

            Assert.That(result, Is.SameAs(expression));
        }
Beispiel #10
0
        public void VisitNewArray_Unchanged()
        {
            var expression     = (NewArrayExpression)ExpressionInstanceCreator.GetExpressionInstance(ExpressionType.NewArrayInit);
            var initExpression = expression.Expressions.Single();

            Expect.Call(VisitorMock.Visit(initExpression)).Return(initExpression);
            var result = (NewArrayExpression)InvokeAndCheckVisit("VisitNewArray", expression);

            Assert.That(result, Is.SameAs(expression));
        }
Beispiel #11
0
        public void VisitListInit_Unchanged()
        {
            var expression  = (ListInitExpression)ExpressionInstanceCreator.GetExpressionInstance(ExpressionType.ListInit);
            var elementInit = expression.Initializers.Single();

            Expect.Call(VisitorMock.Visit(expression.NewExpression)).Return(expression.NewExpression);
            Expect.Call(InvokeVisitMethod("VisitElementInit", elementInit)).Return(elementInit);
            var result = (ListInitExpression)InvokeAndCheckVisit("VisitListInit", expression);

            Assert.That(result, Is.SameAs(expression));
        }
Beispiel #12
0
        public void VisitMemberInit_Unchanged()
        {
            var expression = (MemberInitExpression)ExpressionInstanceCreator.GetExpressionInstance(ExpressionType.MemberInit);
            var binding    = expression.Bindings.Single();

            Expect.Call(VisitorMock.Visit(expression.NewExpression)).Return(expression.NewExpression);
            Expect.Call(InvokeVisitMethod("VisitMemberBinding", binding)).Return(binding);
            var result = (MemberInitExpression)InvokeAndCheckVisit("VisitMemberInit", expression);

            Assert.That(result, Is.SameAs(expression));
        }
Beispiel #13
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 #14
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));
        }
Beispiel #15
0
        public void VisitConditional_Unchanged()
        {
            var expression = (ConditionalExpression)ExpressionInstanceCreator.GetExpressionInstance(ExpressionType.Conditional);

            Expect.Call(VisitorMock.Visit(expression.Test)).Return(expression.Test);
            Expect.Call(VisitorMock.Visit(expression.IfTrue)).Return(expression.IfTrue);
            Expect.Call(VisitorMock.Visit(expression.IfFalse)).Return(expression.IfFalse);
            var result = (ConditionalExpression)InvokeAndCheckVisit("VisitConditional", expression);

            Assert.That(result, Is.SameAs(expression));
        }
Beispiel #16
0
        public void VisitElementInit_Unchanged()
        {
            ElementInit elementInit = ExpressionInstanceCreator.CreateElementInit();
            var         argument    = elementInit.Arguments.Single();

            Expect.Call(VisitorMock.Visit(argument)).Return(argument);

            var result = (ElementInit)InvokeAndCheckVisitObject("VisitElementInit", elementInit);

            Assert.That(result, Is.SameAs(elementInit));
        }
        public void VisitBinary_Unchanged()
        {
            BinaryExpression expression = (BinaryExpression)ExpressionInstanceCreator.GetExpressionInstance(ExpressionType.Add);

            Expect.Call(VisitorMock.Visit(expression.Left)).Return(expression.Left);
            Expect.Call(VisitorMock.Visit(expression.Right)).Return(expression.Right);

            BinaryExpression result = (BinaryExpression)InvokeAndCheckVisit("VisitBinary", expression);

            Assert.That(result, Is.SameAs(expression));
        }
Beispiel #18
0
        public void VisitMemberAssignment_Changed()
        {
            MemberAssignment memberAssignment    = ExpressionInstanceCreator.CreateMemberAssignment();
            MemberAssignment newMemberAssignment = Expression.Bind(typeof(List <int>).GetProperty("Capacity"), Expression.Constant(2));

            Expect.Call(VisitorMock.Visit(memberAssignment.Expression)).Return(newMemberAssignment.Expression);

            var result = (MemberAssignment)InvokeAndCheckVisitObject("VisitMemberAssignment", memberAssignment);

            Assert.That(result, Is.Not.SameAs(memberAssignment));
        }
Beispiel #19
0
        public void VisitAndConvert_Collection_ExceptionUsesCallerName()
        {
            var constantExpression = Expression.Constant(1);
            var expressions        = new List <ConstantExpression> (new[] { constantExpression }).AsReadOnly();

            var newExpression = (NewExpression)ExpressionInstanceCreator.GetExpressionInstance(ExpressionType.New);

            Expect.Call(VisitorMock.Visit(constantExpression)).Return(newExpression);
            VisitorMock.Replay();

            VisitorMock.VisitAndConvert(expressions, "Whatever");
        }
Beispiel #20
0
        public void VisitMember_ChangedExpression()
        {
            var        expression    = (MemberExpression)ExpressionInstanceCreator.GetExpressionInstance(ExpressionType.MemberAccess);
            Expression newExpression = Expression.Constant(DateTime.Now);

            Expect.Call(VisitorMock.Visit(expression.Expression)).Return(newExpression);
            var result = (MemberExpression)InvokeAndCheckVisit("VisitMember", expression);

            Assert.That(result, Is.Not.SameAs(expression));
            Assert.That(result.NodeType, Is.EqualTo(ExpressionType.MemberAccess));
            Assert.That(result.Expression, Is.SameAs(newExpression));
        }
Beispiel #21
0
        public void VisitTypeBinary_Changed()
        {
            var        expression    = (TypeBinaryExpression)ExpressionInstanceCreator.GetExpressionInstance(ExpressionType.TypeIs);
            Expression newExpression = Expression.Constant(1);

            Expect.Call(VisitorMock.Visit(expression.Expression)).Return(newExpression);
            var result = (TypeBinaryExpression)InvokeAndCheckVisit("VisitTypeBinary", expression);

            Assert.That(result, Is.Not.SameAs(expression));
            Assert.That(result.NodeType, Is.EqualTo(ExpressionType.TypeIs));
            Assert.That(result.Expression, Is.SameAs(newExpression));
        }
Beispiel #22
0
        public void VisitMemberMemberBinding_Unchanged()
        {
            MemberBinding       memberBinding1      = Expression.Bind(typeof(List <int>).GetProperty("Capacity"), Expression.Constant(0));
            MemberBinding       memberBinding2      = Expression.Bind(typeof(List <int>).GetProperty("Capacity"), Expression.Constant(1));
            MemberMemberBinding memberMemberBinding = ExpressionInstanceCreator.CreateMemberMemberBinding(new[] { memberBinding1, memberBinding2 });

            Expect.Call(InvokeVisitMethod("VisitMemberBinding", memberBinding1)).Return(memberBinding1);
            Expect.Call(InvokeVisitMethod("VisitMemberBinding", memberBinding2)).Return(memberBinding2);
            var result = (MemberMemberBinding)InvokeAndCheckVisitObject("VisitMemberMemberBinding", memberMemberBinding);

            Assert.That(result, Is.SameAs(memberMemberBinding));
        }
        public void VisitNew_ChangedArguments()
        {
            var        expression  = (NewExpression)ExpressionInstanceCreator.GetExpressionInstance(ExpressionType.New);
            var        argument    = expression.Arguments.Single();
            Expression newArgument = Expression.Constant(214578);

            Expect.Call(VisitorMock.Visit(argument)).Return(newArgument);
            var result = (NewExpression)InvokeAndCheckVisit("VisitNew", expression);

            Assert.That(result, Is.Not.SameAs(expression));
            Assert.That(result.NodeType, Is.EqualTo(ExpressionType.New));
            Assert.That(result.Arguments, Is.EqualTo(new[] { newArgument }));
        }
Beispiel #24
0
        public void VisitUnary_Negate_Changes()
        {
            var        expression        = (UnaryExpression)ExpressionInstanceCreator.GetExpressionInstance(ExpressionType.Negate);
            Expression expectedNextVisit = expression.Operand;
            Expression newOperand        = Expression.Constant(1);

            Expect.Call(VisitorMock.Visit(expectedNextVisit)).Return(newOperand);

            var result = (UnaryExpression)InvokeAndCheckVisit("VisitUnary", expression);

            Assert.That(result.Operand, Is.SameAs(newOperand));
            Assert.That(result.NodeType, Is.EqualTo(ExpressionType.Negate));
        }
Beispiel #25
0
        public void VisitMemberListBinding_Unchanged()
        {
            ElementInit elementInit1 = Expression.ElementInit(typeof(List <int>).GetMethod("Add"), Expression.Constant(0));
            ElementInit elementInit2 = Expression.ElementInit(typeof(List <int>).GetMethod("Add"), Expression.Constant(1));
            ReadOnlyCollection <ElementInit> elementInits = new List <ElementInit> (new[] { elementInit1, elementInit2 }).AsReadOnly();
            MemberListBinding memberListBinding           = ExpressionInstanceCreator.CreateMemberListBinding(elementInits);

            Expect.Call(InvokeVisitMethod("VisitElementInit", elementInit1)).Return(elementInit1);
            Expect.Call(InvokeVisitMethod("VisitElementInit", elementInit2)).Return(elementInit2);
            var result = (MemberListBinding)InvokeAndCheckVisitObject("VisitMemberListBinding", memberListBinding);

            Assert.That(result, Is.SameAs(memberListBinding));
        }
Beispiel #26
0
        public void VisitNewArray_Init_Changed()
        {
            var expression        = (NewArrayExpression)ExpressionInstanceCreator.GetExpressionInstance(ExpressionType.NewArrayInit);
            var initExpression    = expression.Expressions.Single();
            var newInitExpression = Expression.Constant(214578);

            Expect.Call(VisitorMock.Visit(initExpression)).Return(newInitExpression);
            var result = (NewArrayExpression)InvokeAndCheckVisit("VisitNewArray", expression);

            Assert.That(result, Is.Not.SameAs(expression));
            Assert.That(result.NodeType, Is.EqualTo(ExpressionType.NewArrayInit));
            Assert.That(result.Expressions, Is.EqualTo(new[] { newInitExpression }));
            Assert.That(result.Type, Is.EqualTo(typeof(int[])));
        }
Beispiel #27
0
        public void VisitElementInit_Changed()
        {
            ElementInit elementInit = ExpressionInstanceCreator.CreateElementInit();
            var         argument    = elementInit.Arguments.Single();
            Expression  newArgument = Expression.Constant(214578);

            Expect.Call(VisitorMock.Visit(argument)).Return(newArgument);

            var result = (ElementInit)InvokeAndCheckVisitObject("VisitElementInit", elementInit);

            Assert.That(result, Is.Not.SameAs(elementInit));
            Assert.That(result.AddMethod, Is.SameAs(elementInit.AddMethod));
            Assert.That(result.Arguments, Is.EqualTo(new[] { newArgument }));
        }
Beispiel #28
0
        public void VisitMemberBinding_Delegation_ListBinding()
        {
            MemberListBinding memberListBinding = ExpressionInstanceCreator.CreateMemberListBinding(new ElementInit[0]);

            Expect.Call(InvokeVisitMethod("VisitMemberBinding", memberListBinding)).CallOriginalMethod(OriginalCallOptions.CreateExpectation);
            Expect.Call(InvokeVisitMethod("VisitMemberListBinding", memberListBinding)).Return(memberListBinding);

            MockRepository.ReplayAll();
            object result = InvokeVisitMethod("VisitMemberBinding", memberListBinding);

            MockRepository.VerifyAll();

            Assert.That(result, Is.SameAs(memberListBinding));
        }
Beispiel #29
0
        public void VisitListInit_ChangedInitializers()
        {
            var expression     = (ListInitExpression)ExpressionInstanceCreator.GetExpressionInstance(ExpressionType.ListInit);
            var initializer    = expression.Initializers.Single();
            var newInitializer = Expression.ElementInit(typeof(List <int>).GetMethod("Add"), Expression.Constant(214578));

            Expect.Call(VisitorMock.Visit(expression.NewExpression)).Return(expression.NewExpression);
            Expect.Call(InvokeVisitMethod("VisitElementInit", initializer)).Return(newInitializer);
            var result = (ListInitExpression)InvokeAndCheckVisit("VisitListInit", expression);

            Assert.That(result, Is.Not.SameAs(expression));
            Assert.That(result.NodeType, Is.EqualTo(ExpressionType.ListInit));
            Assert.That(result.Initializers, Is.EqualTo(new[] { newInitializer }));
            Assert.That(result.NewExpression, Is.SameAs(expression.NewExpression));
        }
Beispiel #30
0
        public void VisitMemberBinding_Delegation_MemberAssignment()
        {
            MemberAssignment memberAssignment = ExpressionInstanceCreator.CreateMemberAssignment();

            Expect.Call(InvokeVisitMethod("VisitMemberBinding", memberAssignment)).CallOriginalMethod(OriginalCallOptions.CreateExpectation);

            Expect.Call(InvokeVisitMethod("VisitMemberAssignment", memberAssignment)).Return(memberAssignment);

            MockRepository.ReplayAll();
            object result = InvokeVisitMethod("VisitMemberBinding", memberAssignment);

            MockRepository.VerifyAll();

            Assert.That(result, Is.SameAs(memberAssignment));
        }