Beispiel #1
0
        public void VisitChildren_ReturnsNewExpression()
        {
            var newExpression = Expression.Constant(5);
            var visitorMock   = MockRepository.GenerateStrictMock <ExpressionVisitor> ();

            visitorMock
            .Expect(mock => mock.Visit(_wrappedExpression))
            .Return(newExpression);
            visitorMock.Replay();

            var result = ExtensionExpressionTestHelper.CallVisitChildren(_aggregationEpression, visitorMock);

            visitorMock.VerifyAllExpectations();
            Assert.That(result, Is.Not.SameAs(_aggregationEpression));
            Assert.That(((AggregationExpression)result).Expression, Is.SameAs(newExpression));
            Assert.That(((AggregationExpression)result).AggregationModifier, Is.EqualTo(AggregationModifier.Max));
        }
        public void VisitChildren_SameOrderingExpressions()
        {
            var visitorMock = MockRepository.GenerateStrictMock <ExpressionTreeVisitor> ();

            visitorMock
            .Expect(mock => mock.VisitExpression(_orderingExpression1))
            .Return(_orderingExpression1);
            visitorMock
            .Expect(mock => mock.VisitExpression(_orderingExpression2))
            .Return(_orderingExpression2);
            visitorMock.Replay();

            var result = ExtensionExpressionTestHelper.CallVisitChildren(_sqlRowNumberExpression, visitorMock);

            visitorMock.VerifyAllExpectations();

            Assert.That(result, Is.SameAs(_sqlRowNumberExpression));
        }
        public void VisitExtension_NonReducibleExpression()
        {
            RelinqExpressionVisitor visitor = new TestThrowingConstantExpressionVisitor();

#if !NET_3_5
            var nonReducibleExpression = MockRepository.GenerateStub <Expression>();
#else
            var nonReducibleExpression = MockRepository.GenerateStub <ExtensionExpression> (typeof(int));
#endif
            nonReducibleExpression
            .Stub(stub => ExtensionExpressionTestHelper.CallAccept(stub, Arg <RelinqExpressionVisitor> .Is.Anything))
            .WhenCalled(mi => PrivateInvoke.InvokeNonPublicMethod(mi.Arguments[0], "VisitExtension", nonReducibleExpression))
            .Return(nonReducibleExpression);
            nonReducibleExpression.Stub(stub => stub.CanReduce).Return(false);
            nonReducibleExpression.Stub(stub => stub.ToString()).Return("Test");

            visitor.Visit(nonReducibleExpression);
        }
        public void VisitChildren_ChangeAggregationExpression()
        {
            var newAggregationExpression = Expression.Constant("newAgg");

            var visitorMock = MockRepository.GenerateMock <ExpressionVisitor>();

            visitorMock.Expect(mock => mock.Visit(_keyExpression)).Return(_keyExpression);
            visitorMock.Expect(mock => mock.Visit(_elementExpression)).Return(_elementExpression);
            visitorMock.Expect(mock => mock.Visit(_sqlGroupingSelectExpression.AggregationExpressions[0])).Return(newAggregationExpression);
            visitorMock.Replay();

            var expression = ExtensionExpressionTestHelper.CallVisitChildren(_sqlGroupingSelectExpression, visitorMock);

            visitorMock.VerifyAllExpectations();
            Assert.That(expression, Is.Not.SameAs(_sqlGroupingSelectExpression));
            Assert.That(expression, Is.TypeOf(typeof(SqlGroupingSelectExpression)));
            Assert.That(((SqlGroupingSelectExpression)expression).AggregationExpressions, Is.EqualTo(new Expression[] { newAggregationExpression }));
        }
Beispiel #5
0
        public void VisitChildren_NewItems()
        {
            var newItem = Expression.Constant(14);

            var visitorMock = MockRepository.GenerateStrictMock <ExpressionVisitor>();

            visitorMock.Expect(mock => mock.Visit(_collectionExpression.Items[0])).Return(newItem);
            visitorMock.Expect(mock => mock.Visit(_collectionExpression.Items[1])).Return(_collectionExpression.Items[1]);

            var result = ExtensionExpressionTestHelper.CallVisitChildren(_collectionExpression, visitorMock);

            visitorMock.VerifyAllExpectations();

            Assert.That(result, Is.Not.SameAs(_collectionExpression));
            Assert.That(result, Is.TypeOf <SqlCollectionExpression>());
            Assert.That(result.Type, Is.SameAs(_collectionExpression.Type));
            Assert.That(((SqlCollectionExpression)result).Items, Is.EqualTo(new[] { newItem, _collectionExpression.Items[1] }));
        }
Beispiel #6
0
        public void VisitChildren_ChangeColumn()
        {
            var newColumnExpression = new SqlColumnDefinitionExpression(typeof(string), "o", "Test", false);

            var visitorMock     = MockRepository.GenerateMock <ExpressionVisitor>();
            var expectedColumns = new[] { _columnExpression1, newColumnExpression, _columnExpression3 };

            visitorMock.Expect(mock => mock.Visit(_originalColumnsReadonly[0])).Return(expectedColumns[0]);
            visitorMock.Expect(mock => mock.Visit(_originalColumnsReadonly[1])).Return(expectedColumns[1]);
            visitorMock.Expect(mock => mock.Visit(_originalColumnsReadonly[2])).Return(expectedColumns[2]);
            visitorMock.Replay();

            var expression = (SqlEntityExpression)ExtensionExpressionTestHelper.CallVisitChildren(_entityExpression, visitorMock);

            Assert.That(expression, Is.Not.SameAs(_entityExpression));
            Assert.That(expression.Type, Is.SameAs(_entityExpression.Type));
            Assert.That(expression.Columns, Is.EqualTo(expectedColumns));
        }
        public void VisitChildren_NewArgs()
        {
            var visitorMock = MockRepository.GenerateStrictMock <ExpressionVisitor> ();
            var newArgs     = new[] { Expression.Constant(1), Expression.Constant(8), Expression.Constant(9) };

            visitorMock.Expect(mock => mock.Visit(_sqlFunctionExpression.Args[0])).Return(newArgs[0]);
            visitorMock.Expect(mock => mock.Visit(_sqlFunctionExpression.Args[1])).Return(newArgs[1]);
            visitorMock.Expect(mock => mock.Visit(_sqlFunctionExpression.Args[2])).Return(newArgs[2]);
            visitorMock.Replay();

            var result = ExtensionExpressionTestHelper.CallVisitChildren(_sqlFunctionExpression, visitorMock);

            visitorMock.VerifyAllExpectations();

            Assert.That(result, Is.Not.SameAs(_sqlFunctionExpression));
            Assert.That(((SqlFunctionExpression)result).Args, Is.EqualTo(newArgs));
            Assert.That(((SqlFunctionExpression)result).SqlFunctioName, Is.EqualTo("Test"));
        }
        public void VisitChildren_KeyExpressionChanged()
        {
            var newKeyExpression = Expression.Constant("newKey");
            var visitorMock      = MockRepository.GenerateMock <ExpressionTreeVisitor> ();

            visitorMock.Expect(mock => mock.VisitExpression(_keyExpression)).Return(newKeyExpression);
            visitorMock.Expect(mock => mock.VisitExpression(_elementExpression)).Return(_elementExpression);
            visitorMock
            .Expect(mock => mock.VisitAndConvert(Arg <ReadOnlyCollection <Expression> > .Is.Anything, Arg.Is("VisitChildren")))
            .Return(null).WhenCalled(invocation => invocation.ReturnValue = invocation.Arguments[0]);
            visitorMock.Replay();

            var expression = ExtensionExpressionTestHelper.CallVisitChildren(_sqlGroupingSelectExpression, visitorMock);

            visitorMock.VerifyAllExpectations();
            Assert.That(expression, Is.Not.SameAs(_sqlGroupingSelectExpression));
            Assert.That(((SqlGroupingSelectExpression)expression).KeyExpression, Is.SameAs(newKeyExpression));
            Assert.That(((SqlGroupingSelectExpression)expression).ElementExpression, Is.SameAs(_elementExpression));
        }
        public void VisitChildren_VisitsIdentityExpression_Changed()
        {
            var newPrimaryKeyExpression = Expression.Constant(6);
            var visitorMock             = MockRepository.GenerateStrictMock <ExpressionVisitor> ();

            visitorMock.Expect(mock => mock.Visit(_identityExpression)).Return(newPrimaryKeyExpression);
            visitorMock.Replay();

            var result = ExtensionExpressionTestHelper.CallVisitChildren(_expression, visitorMock);

            visitorMock.VerifyAllExpectations();
            Assert.That(result, Is.Not.SameAs(_expression));
            Assert.That(result, Is.TypeOf <SqlEntityConstantExpression> ());

            var newSqlEntityConstantExpression = ((SqlEntityConstantExpression)result);

            Assert.That(newSqlEntityConstantExpression.IdentityExpression, Is.SameAs(newPrimaryKeyExpression));
            Assert.That(newSqlEntityConstantExpression.Value, Is.SameAs(_expression.Value));
            Assert.That(newSqlEntityConstantExpression.Type, Is.SameAs(_expression.Type));
        }
Beispiel #10
0
        public void VisitChildren_ReturnsSame()
        {
            var visitorMock = MockRepository.GenerateStrictMock <ExpressionVisitor>();

            visitorMock
            .Expect(mock => mock.Visit(_likeExpression.Left))
            .Return(_likeExpression.Left);
            visitorMock
            .Expect(mock => mock.Visit(_likeExpression.Right))
            .Return(_likeExpression.Right);
            visitorMock
            .Expect(mock => mock.Visit(_likeExpression.EscapeExpression))
            .Return(_likeExpression.EscapeExpression);
            visitorMock.Replay();

            var result = ExtensionExpressionTestHelper.CallVisitChildren(_likeExpression, visitorMock);

            visitorMock.VerifyAllExpectations();
            Assert.That(result, Is.SameAs(_likeExpression));
        }
        public void VisitChildren_NewArgs()
        {
            var visitorMock = MockRepository.GenerateStrictMock <ExpressionTreeVisitor> ();
            var newArgs     = new ReadOnlyCollection <Expression> (new List <Expression> {
                Expression.Constant(1), Expression.Constant(2)
            });

            visitorMock
            .Expect(mock => mock.VisitAndConvert(_sqlFunctionExpression.Args, "SqlFunctionExpression.VisitChildren"))
            .Return(newArgs);
            visitorMock.Replay();

            var result = ExtensionExpressionTestHelper.CallVisitChildren(_sqlFunctionExpression, visitorMock);

            visitorMock.VerifyAllExpectations();

            Assert.That(result, Is.Not.SameAs(_sqlFunctionExpression));
            Assert.That(((SqlFunctionExpression)result).Args, Is.EqualTo(newArgs));
            Assert.That(((SqlFunctionExpression)result).SqlFunctioName, Is.EqualTo("Test"));
        }
        public void VisitChildren_ReturnsNewSqlInExpression()
        {
            var visitorMock        = MockRepository.GenerateStrictMock <ExpressionVisitor>();
            var newLeftExpression  = Expression.Constant(3);
            var newRightExpression = Expression.Constant(4);

            visitorMock
            .Expect(mock => mock.Visit(_leftExpression))
            .Return(newLeftExpression);
            visitorMock
            .Expect(mock => mock.Visit(_rightExpression))
            .Return(newRightExpression);
            visitorMock.Replay();

            var result = ExtensionExpressionTestHelper.CallVisitChildren(_expression, visitorMock);

            visitorMock.VerifyAllExpectations();
            Assert.That(result, Is.Not.SameAs(_expression));
            Assert.That(((SqlInExpression)result).LeftExpression, Is.SameAs(newLeftExpression));
            Assert.That(((SqlInExpression)result).RightExpression, Is.SameAs(newRightExpression));
        }
        public void VisitChildren_ChangeAggregationExpression()
        {
            var newAggregationExpression       = Expression.Constant("newAgg");
            var expectedAggregationExpressions = new Expression[] { _aggregateExpression1, newAggregationExpression };

            var visitorMock = MockRepository.GenerateMock <ExpressionTreeVisitor>();

            visitorMock.Expect(mock => mock.VisitExpression(_keyExpression)).Return(_keyExpression);
            visitorMock.Expect(mock => mock.VisitExpression(_elementExpression)).Return(_elementExpression);
            visitorMock
            .Expect(mock => mock.VisitAndConvert(Arg <ReadOnlyCollection <Expression> > .Is.Anything, Arg.Is("VisitChildren")))
            .Return(Array.AsReadOnly(expectedAggregationExpressions));
            visitorMock.Replay();

            var expression = ExtensionExpressionTestHelper.CallVisitChildren(_sqlGroupingSelectExpression, visitorMock);

            visitorMock.VerifyAllExpectations();
            Assert.That(expression, Is.Not.SameAs(_sqlGroupingSelectExpression));
            Assert.That(expression, Is.TypeOf(typeof(SqlGroupingSelectExpression)));
            Assert.That(((SqlGroupingSelectExpression)expression).AggregationExpressions[0], Is.SameAs(_aggregateExpression1));
            Assert.That(((SqlGroupingSelectExpression)expression).AggregationExpressions[1], Is.SameAs(newAggregationExpression));
        }
        public void VisitChildren_NoElse()
        {
            var visitorMock = MockRepository.GenerateStrictMock <ExpressionVisitor> ();

            visitorMock
            .Expect(mock => mock.Visit(_predicate1))
            .Return(_predicate1);
            visitorMock
            .Expect(mock => mock.Visit(_predicate2))
            .Return(_predicate2);
            visitorMock
            .Expect(mock => mock.Visit(_nullableValue1))
            .Return(_nullableValue1);
            visitorMock
            .Expect(mock => mock.Visit(_value2))
            .Return(_value2);

            var result = ExtensionExpressionTestHelper.CallVisitChildren(_caseExpressionWithoutElse, visitorMock);

            visitorMock.VerifyAllExpectations();
            Assert.That(result, Is.SameAs(_caseExpressionWithoutElse));
        }
        public void VisitChildren_NewOrderingExpressions()
        {
            var visitorMock = MockRepository.GenerateMock <ExpressionTreeVisitor> ();
            var fakeResult  = Expression.Constant(3);

            visitorMock
            .Expect(mock => mock.VisitExpression(_orderingExpression1))
            .Return(fakeResult);
            visitorMock
            .Expect(mock => mock.VisitExpression(_orderingExpression2))
            .Return(_orderingExpression2);
            visitorMock.Replay();

            var result = ExtensionExpressionTestHelper.CallVisitChildren(_sqlRowNumberExpression, visitorMock);

            visitorMock.VerifyAllExpectations();

            Assert.That(result, Is.Not.SameAs(_sqlRowNumberExpression));
            Assert.That(((SqlRowNumberExpression)result).Orderings[0].Expression, Is.SameAs(fakeResult));
            Assert.That(((SqlRowNumberExpression)result).Orderings[0].OrderingDirection, Is.EqualTo(OrderingDirection.Asc));
            Assert.That(((SqlRowNumberExpression)result).Orderings[1].Expression, Is.SameAs(_orderingExpression2));
            Assert.That(((SqlRowNumberExpression)result).Orderings[1].OrderingDirection, Is.EqualTo(OrderingDirection.Desc));
        }
Beispiel #16
0
        public void VisitChildren_ReturnsDifferentEscapeExpression()
        {
            var visitorMock         = MockRepository.GenerateStrictMock <ExpressionTreeVisitor> ();
            var newEscapeExpression = Expression.Constant(3);

            visitorMock
            .Expect(mock => mock.VisitExpression(_likeExpression.Left))
            .Return(_likeExpression.Left);
            visitorMock
            .Expect(mock => mock.VisitExpression(_likeExpression.Right))
            .Return(_likeExpression.Right);
            visitorMock
            .Expect(mock => mock.VisitExpression(_likeExpression.EscapeExpression))
            .Return(newEscapeExpression);
            visitorMock.Replay();

            var result = ExtensionExpressionTestHelper.CallVisitChildren(_likeExpression, visitorMock);

            visitorMock.VerifyAllExpectations();
            Assert.That(result, Is.Not.SameAs(_likeExpression));
            Assert.That(((SqlLikeExpression)result).Left, Is.SameAs(_likeExpression.Left));
            Assert.That(((SqlLikeExpression)result).Right, Is.SameAs(_likeExpression.Right));
            Assert.That(((SqlLikeExpression)result).EscapeExpression, Is.SameAs(newEscapeExpression));
        }
 public void Accept_VisitorSupportingExpressionType()
 {
     ExtensionExpressionTestHelper.CheckAcceptForVisitorSupportingType <SqlCollectionExpression, ISqlCollectionExpressionVisitor> (
         _collectionExpression,
         mock => mock.VisitSqlCollectionExpression(_collectionExpression));
 }
 public void Accept_VisitorNotSupportingExpressionType()
 {
     ExtensionExpressionTestHelper.CheckAcceptForVisitorNotSupportingType(_sqlGroupingSelectExpression);
 }
 public void Accept_VisitorNotSupportingExpressionType()
 {
     ExtensionExpressionTestHelper.CheckAcceptForVisitorNotSupportingType(_caseExpressionWithElse);
 }
 public void Accept_VisitorSupportingExpressionType()
 {
     ExtensionExpressionTestHelper.CheckAcceptForVisitorSupportingType <SqlGroupingSelectExpression, ISqlGroupingSelectExpressionVisitor> (
         _sqlGroupingSelectExpression,
         mock => mock.VisitSqlGroupingSelect(_sqlGroupingSelectExpression));
 }
Beispiel #21
0
 public void Accept_VisitorSupportingExpressionType()
 {
     ExtensionExpressionTestHelper.CheckAcceptForVisitorSupportingType <SqlEntityRefMemberExpression, ISqlEntityRefMemberExpressionVisitor> (
         _expression,
         mock => mock.VisitSqlEntityRefMember(_expression));
 }
 public void Accept_VisitorSupportingExpressionType()
 {
     ExtensionExpressionTestHelper.CheckAcceptForVisitorSupportingType <SqlLengthExpression, ISqlSpecificExpressionVisitor> (
         _lengthExpression,
         mock => mock.VisitSqlLength(_lengthExpression));
 }
Beispiel #23
0
 public void Accept_VisitorSupportingExpressionType()
 {
     ExtensionExpressionTestHelper.CheckAcceptForVisitorSupportingType <SqlEntityExpression, IResolvedSqlExpressionVisitor> (
         _entityExpression,
         mock => mock.VisitSqlEntityExpression(_entityExpression));
 }
Beispiel #24
0
 public void Accept_VisitorNotSupportingExpressionType()
 {
     ExtensionExpressionTestHelper.CheckAcceptForVisitorNotSupportingType(_sqlConvertedBooleanExpression);
 }
 public void Accept_VisitorSupportingExpressionType()
 {
     ExtensionExpressionTestHelper.CheckAcceptForVisitorSupportingType<SqlIsNotNullExpression, ISqlNullCheckExpressionVisitor> (
       _sqlIsNotNullExpression,
       mock => mock.VisitSqlIsNotNullExpression (_sqlIsNotNullExpression));
 }
 public void Accept_VisitorNotSupportingExpressionType()
 {
     ExtensionExpressionTestHelper.CheckAcceptForVisitorNotSupportingType(_collectionExpression);
 }
Beispiel #27
0
 public void Accept_VisitorNotSupportingExpressionType()
 {
     ExtensionExpressionTestHelper.CheckAcceptForVisitorNotSupportingType(_tableReferenceExpression);
 }
Beispiel #28
0
 public void Accept_VisitorSupportingExpressionType()
 {
     ExtensionExpressionTestHelper.CheckAcceptForVisitorSupportingType <SqlTableReferenceExpression, ISqlTableReferenceExpressionVisitor> (
         _tableReferenceExpression,
         mock => mock.VisitSqlTableReferenceExpression(_tableReferenceExpression));
 }
Beispiel #29
0
 public void Accept_VisitorSupportingExpressionType_IResolvedSqlExpressionVisitor()
 {
     ExtensionExpressionTestHelper.CheckAcceptForVisitorSupportingType <SqlColumnReferenceExpression, IResolvedSqlExpressionVisitor> (
         _columnExpression,
         mock => mock.VisitSqlColumnExpression(_columnExpression));
 }
Beispiel #30
0
 public void Accept_VisitorSupportingExpressionType()
 {
     ExtensionExpressionTestHelper.CheckAcceptForVisitorSupportingType <NamedExpression, INamedExpressionVisitor> (
         _namedExpression,
         mock => mock.VisitNamedExpression(_namedExpression));
 }