private ProjectionExpression Translate(Expression expression) { expression = Evaluator.PartialEval(expression, CanBeEvaluatedLocally); expression = QueryBinder.Bind(this, expression); expression = SubstringExpressionRewriter.Rewrite(expression); expression = SubstringEmptyClauseRemover.Rewrite(expression); expression = BinaryExpressionRewriter.Rewrite(expression); expression = AttributeComparisonReorderingRewriter.Rewrite(expression); expression = NullComparisonRewriter.Rewrite(expression); expression = AndOrExpressionCollector.Rewrite(expression); expression = RedundantExpressionRemover.Rewrite(expression); return((ProjectionExpression)expression); }
public void empty_string_with_no_wildcard_doesnt_become_constant() { // Arrange string value = string.Empty; var substring = CreateSubstring(value, false, false); Expression result; // Act result = SubstringEmptyClauseRemover.Rewrite(substring); // Assert Assert.IsFalse(result.IsConstant(value)); }
public void single_string_with_no_wildcard_becomes_constant() { // Arrange string value = "X"; var substring = CreateSubstring(value, false, false); Expression result; // Act result = SubstringEmptyClauseRemover.Rewrite(substring); // Assert Assert.IsTrue(result.IsConstant(value)); }
public void simple_substring_is_unchanged_1() { // Arrange string value = "X"; var substring = CreateSubstring(value, true, true); Expression result; // Act result = SubstringEmptyClauseRemover.Rewrite(substring); // Assert Assert.IsInstanceOfType(result, typeof(SubstringExpression)); Assert.AreEqual(substring, (SubstringExpression)result); }
public void simple_substring_is_unchanged_2() { // Arrange string value1 = "X"; string value2 = "Y"; string value3 = "Z"; var substring = CreateSubstring(new string[] { value1, value2, value3 }, true, true); Expression result; // Act result = SubstringEmptyClauseRemover.Rewrite(substring); // Assert Assert.IsInstanceOfType(result, typeof(SubstringExpression)); //Assert.AreEqual(substring.WildcardAtStart, result. Assert.AreEqual(substring, (SubstringExpression)result); }
public void empty_string_at_start_is_removed() { // Arrange string value = "X"; var substring = CreateSubstring(new string[] { string.Empty, value }, true, true); Expression result; SubstringExpression substringResult; // Act result = SubstringEmptyClauseRemover.Rewrite(substring); // Assert Assert.IsInstanceOfType(result, typeof(SubstringExpression)); substringResult = (SubstringExpression)result; Assert.AreEqual(1, substringResult.Parts.Count); Assert.IsTrue(substringResult.Parts[0].IsConstant(value)); Assert.AreEqual(true, substringResult.WildcardAtStart); }
public void empty_strings_in_middle_are_removed() { // Arrange string[] strings = { "X", string.Empty, "Y", string.Empty, string.Empty, "Z" }; var substring = CreateSubstring(strings, true, true); Expression result; SubstringExpression substringResult; // Act result = SubstringEmptyClauseRemover.Rewrite(substring); // Assert Assert.IsInstanceOfType(result, typeof(SubstringExpression)); substringResult = (SubstringExpression)result; Assert.AreEqual(3, substringResult.Parts.Count); Assert.IsTrue(substringResult.Parts[0].IsConstant("X")); Assert.IsTrue(substringResult.Parts[1].IsConstant("Y")); Assert.IsTrue(substringResult.Parts[2].IsConstant("Z")); }
public void null_strings_treated_the_same() { // Arrange string value1 = "X"; string value2 = "Y"; var substring = CreateSubstring(new string[] { value1, null, value2 }, true, true); Expression result; SubstringExpression substringResult; // Act result = SubstringEmptyClauseRemover.Rewrite(substring); // Assert Assert.IsInstanceOfType(result, typeof(SubstringExpression)); substringResult = (SubstringExpression)result; Assert.AreEqual(2, substringResult.Parts.Count); Assert.IsTrue(substringResult.Parts[0].IsConstant(value1)); Assert.IsTrue(substringResult.Parts[1].IsConstant(value2)); }