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); }
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()); }
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); }
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); }); }
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); }
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); }); }