public void GivenAMultiaryExpressionWithASingleElement_WhenFlattened_RemovesTheMultiary() { MultiaryExpression inputExpression = Expression.And(Expression.Equals(FieldName.Number, null, 1)); Expression visitedExpression = inputExpression.AcceptVisitor(FlatteningRewriter.Instance); Assert.Equal("(FieldEqual Number 1)", visitedExpression.ToString()); }
public void GivenAnOrExpressionWithAnAndChild_WhenFlattened_RemainsTheSame() { MultiaryExpression inputExpression = Expression.Or( Expression.And(Expression.GreaterThan(FieldName.Number, null, 1), Expression.LessThan(FieldName.Number, null, 5)), Expression.And(Expression.GreaterThan(FieldName.Quantity, null, 1), Expression.LessThan(FieldName.Quantity, null, 5))); Expression visitedExpression = inputExpression.AcceptVisitor(FlatteningRewriter.Instance); Assert.Equal("(Or (And (FieldGreaterThan Number 1) (FieldLessThan Number 5)) (And (FieldGreaterThan Quantity 1) (FieldLessThan Quantity 5)))", visitedExpression.ToString()); }
public void GivenTwoLayersOfOrExpressions_WhenFlattened_CombinesToOneOrExpression() { MultiaryExpression inputExpression = Expression.Or( Expression.Or(Expression.GreaterThan(FieldName.Number, null, 1), Expression.LessThan(FieldName.Number, null, 5)), Expression.Or(Expression.GreaterThan(FieldName.Quantity, null, 1), Expression.LessThan(FieldName.Quantity, null, 5))); Expression visitedExpression = inputExpression.AcceptVisitor(FlatteningRewriter.Instance); Assert.Equal("(Or (FieldGreaterThan Number 1) (FieldLessThan Number 5) (FieldGreaterThan Quantity 1) (FieldLessThan Quantity 5))", visitedExpression.ToString()); }