public void GivenExpressionWithSingleTableExpression_WhenReordered_ReturnsOriginalExpression()
        {
            var inputExpression = SqlRootExpression.WithSearchParamTableExpressions(
                new SearchParamTableExpression(null, null, SearchParamTableExpressionKind.Normal));
            var visitedExpression = (SqlRootExpression)inputExpression.AcceptVisitor(SearchParamTableExpressionReorderer.Instance);

            Assert.Equal(inputExpression, visitedExpression);
        }
        public void GivenExpressionWithNoResourceColumnExpressions_WhenRewritten_ReturnsOriginalExpression()
        {
            var inputExpression = SqlRootExpression.WithSearchParamTableExpressions(
                new SearchParamTableExpression(null, null, SearchParamTableExpressionKind.Normal));
            var visitedExpression = (SqlRootExpression)inputExpression.AcceptVisitor(ResourceColumnPredicatePushdownRewriter.Instance);

            Assert.Equal(inputExpression, visitedExpression);
        }
コード例 #3
0
        public void GivenExpressionWithNoNotExpression_WhenVisited_OriginalExpressionReturned()
        {
            var searchParamTableExpressions = new List <SearchParamTableExpression>
            {
                new SearchParamTableExpression(null, null, SearchParamTableExpressionKind.Normal),
            };

            var inputExpression   = SqlRootExpression.WithSearchParamTableExpressions(searchParamTableExpressions);
            var visitedExpression = (SqlRootExpression)inputExpression.AcceptVisitor(NotExpressionRewriter.Instance);

            Assert.Equal(inputExpression, visitedExpression);
        }
        public void GivenExpressionWithMultipleTableExpressions_WhenReordered_IncludeExpressionReturnedLast()
        {
            var tableExpressions = new List <SearchParamTableExpression>
            {
                new SearchParamTableExpression(new IncludeQueryGenerator(), NormalExpression, SearchParamTableExpressionKind.Include),
                new SearchParamTableExpression(null, NormalExpression, SearchParamTableExpressionKind.Normal),
            };

            var inputExpression   = SqlRootExpression.WithSearchParamTableExpressions(tableExpressions);
            var visitedExpression = (SqlRootExpression)inputExpression.AcceptVisitor(SearchParamTableExpressionReorderer.Instance);

            Assert.Collection(visitedExpression.SearchParamTableExpressions, new[] { 1, 0 }.Select <int, Action <SearchParamTableExpression> >(x => e => Assert.Equal(tableExpressions[x], e)).ToArray());
        }
        public void GivenExpressionWithMultipleTableExpressions_WhenReordered_MissingParameterExpressionReturnedBeforeNotExpression()
        {
            var tableExpressions = new List <SearchParamTableExpression>
            {
                new SearchParamTableExpression(null, NotExpression, SearchParamTableExpressionKind.Normal),
                new SearchParamTableExpression(null, new MissingSearchParameterExpression(new SearchParameterInfo("TestParam"), true), SearchParamTableExpressionKind.Normal),
            };

            var inputExpression   = SqlRootExpression.WithSearchParamTableExpressions(tableExpressions);
            var visitedExpression = (SqlRootExpression)inputExpression.AcceptVisitor(SearchParamTableExpressionReorderer.Instance);

            Assert.Collection(visitedExpression.SearchParamTableExpressions, new[] { 1, 0 }.Select <int, Action <SearchParamTableExpression> >(x => e => Assert.Equal(tableExpressions[x], e)).ToArray());
        }
コード例 #6
0
        public void GivenExpressionWithMissingParameterExpressionFalseLast_WhenVisited_OriginalExpressionReturned()
        {
            var tableExpressions = new List <SearchParamTableExpression>
            {
                new SearchParamTableExpression(null, null, SearchParamTableExpressionKind.Normal),
                new SearchParamTableExpression(null, new MissingSearchParameterExpression(new SearchParameterInfo("TestParam", "TestParam"), false), SearchParamTableExpressionKind.Normal),
            };

            var inputExpression   = SqlRootExpression.WithSearchParamTableExpressions(tableExpressions);
            var visitedExpression = (SqlRootExpression)inputExpression.AcceptVisitor(MissingSearchParamVisitor.Instance);

            Assert.Equal(inputExpression, visitedExpression);
        }
コード例 #7
0
        public void GivenExpressionWithMissingParameterExpressionLast_WhenVisited_MissingParameterExpressionNegated()
        {
            var tableExpressions = new List <SearchParamTableExpression>
            {
                new SearchParamTableExpression(null, null, SearchParamTableExpressionKind.Normal),
                new SearchParamTableExpression(null, new MissingSearchParameterExpression(new SearchParameterInfo("TestParam", "TestParam"), true), SearchParamTableExpressionKind.Normal),
            };

            var inputExpression   = SqlRootExpression.WithSearchParamTableExpressions(tableExpressions);
            var visitedExpression = (SqlRootExpression)inputExpression.AcceptVisitor(MissingSearchParamVisitor.Instance);

            Assert.Collection(
                visitedExpression.SearchParamTableExpressions,
                e => { Assert.Equal(tableExpressions[0], e); },
                e => { Assert.Equal(SearchParamTableExpressionKind.NotExists, e.Kind); });
        }
コード例 #8
0
        public void GivenExpressionWithMissingParameterExpression_WhenVisited_AllExpressionPrependedToExpressionList()
        {
            var tableExpressions = new List <SearchParamTableExpression>
            {
                new SearchParamTableExpression(null, new MissingSearchParameterExpression(new SearchParameterInfo("TestParam", "TestParam"), true), SearchParamTableExpressionKind.Normal),
            };

            var inputExpression   = SqlRootExpression.WithSearchParamTableExpressions(tableExpressions);
            var visitedExpression = (SqlRootExpression)inputExpression.AcceptVisitor(MissingSearchParamVisitor.Instance);

            Assert.Collection(
                visitedExpression.SearchParamTableExpressions,
                e => { Assert.Equal(SearchParamTableExpressionKind.All, e.Kind); },
                e => { Assert.NotNull(e.Predicate as MissingSearchParameterExpression); });
            Assert.Equal(tableExpressions.Count + 1, visitedExpression.SearchParamTableExpressions.Count);
        }
コード例 #9
0
        public void GivenExpressionWithNotExpressionLast_WhenVisited_NotExpressionUnwrapped()
        {
            var subExpression = Expression.StringEquals(FieldName.TokenCode, 0, "TestValue123", false);
            var searchParamTableExpressions = new List <SearchParamTableExpression>
            {
                new SearchParamTableExpression(null, null, SearchParamTableExpressionKind.Normal),
                new SearchParamTableExpression(null, new SearchParameterExpression(new SearchParameterInfo("TestParam"), Expression.Not(subExpression)), SearchParamTableExpressionKind.Normal),
            };

            var inputExpression   = SqlRootExpression.WithSearchParamTableExpressions(searchParamTableExpressions);
            var visitedExpression = (SqlRootExpression)inputExpression.AcceptVisitor(NotExpressionRewriter.Instance);

            Assert.Collection(
                visitedExpression.SearchParamTableExpressions,
                e => { Assert.Equal(searchParamTableExpressions[0], e); },
                e => { ValidateNotExpression(subExpression, e); });
        }