public void VisitSqlLikeExpression() { var sqlInExpression = new SqlLikeExpression(new SqlLiteralExpression(1), new SqlLiteralExpression(2), new SqlLiteralExpression(@"\")); SqlGeneratingExpressionVisitor.GenerateSql(sqlInExpression, _commandBuilder, _stageMock); Assert.That(_commandBuilder.GetCommandText(), Is.EqualTo(@"1 LIKE 2 ESCAPE '\'")); }
public void SetUp() { var leftExpression = Expression.Constant("left"); var rightExpression = Expression.Constant("right"); var escapeExpression = new SqlLiteralExpression(@"\"); _likeExpression = new SqlLikeExpression(leftExpression, rightExpression, escapeExpression); }
public Expression Transform(MethodCallExpression methodCallExpression) { ArgumentUtility.CheckNotNull("methodCallExpression", methodCallExpression); MethodCallTransformerUtility.CheckArgumentCount(methodCallExpression, 1); MethodCallTransformerUtility.CheckInstanceMethod(methodCallExpression); return(SqlLikeExpression.Create(methodCallExpression.Object, methodCallExpression.Arguments[0], "%", "%")); }
public void Transform() { MethodCallExpression expression = (MethodCallExpression)ExpressionHelper.MakeExpression <string, bool> (s => s.SqlLike("%es%")); var transformer = new LikeMethodCallTransformer(); var result = transformer.Transform(expression); var expectedResult = new SqlLikeExpression(expression.Arguments[0], expression.Arguments[1], new SqlLiteralExpression(@"\")); SqlExpressionTreeComparer.CheckAreEqualTrees(expectedResult, result); }
public void Create_ArgumentIsNotNull() { var objectExpression = Expression.Constant("Test"); var argument1 = Expression.Constant("test"); var result = SqlLikeExpression.Create(objectExpression, argument1, "%", "%"); var rightExpression = Expression.Constant(string.Format("%{0}%", argument1.Value)); var expectedResult = new SqlLikeExpression(objectExpression, rightExpression, new SqlLiteralExpression(@"\")); SqlExpressionTreeComparer.CheckAreEqualTrees(expectedResult, result); }
public Expression VisitSqlLikeExpression(SqlLikeExpression expression) { ArgumentUtility.CheckNotNull("expression", expression); VisitExpression(expression.Left); _commandBuilder.Append(" LIKE "); VisitExpression(expression.Right); _commandBuilder.Append(" ESCAPE "); VisitExpression(expression.EscapeExpression); return(expression); }
public void Transform_ArgumentNotNull() { var method = typeof(string).GetMethod("EndsWith", new[] { typeof(string) }); var objectExpression = Expression.Constant("Test"); var argument1 = Expression.Constant("test"); var expression = Expression.Call(objectExpression, method, argument1); var transformer = new EndsWithMethodCallTransformer(); var result = transformer.Transform(expression); var rightExpression = Expression.Constant(string.Format("%{0}", argument1.Value)); var expectedResult = new SqlLikeExpression(objectExpression, rightExpression, new SqlLiteralExpression(@"\")); SqlExpressionTreeComparer.CheckAreEqualTrees(expectedResult, result); }
private void GenerateLike(SqlGenerator sql, SqlLikeExpression like) { GenerateField(sql, like.Body); sql.Add(" LIKE '"); if (like.PatternType != SqlLikePattern.End) { sql.Add("%"); } sql.Add(like.Pattern); if (like.PatternType != SqlLikePattern.Start) { sql.Add("%"); } sql.Add("'"); }
public void Escape_Expression() { var expression = Expression.Constant("test[test"); var result = SqlLikeExpression.Escape(expression, @"\"); var expectedResult = new SqlFunctionExpression(typeof(string), "REPLACE", new SqlFunctionExpression(typeof(string), "REPLACE", new SqlFunctionExpression(typeof(string), "REPLACE", new SqlFunctionExpression(typeof(string), "REPLACE", expression, new SqlLiteralExpression(@"\"), new SqlLiteralExpression(@"\\")), new SqlLiteralExpression("%"), new SqlLiteralExpression(@"\%")), new SqlLiteralExpression("_"), new SqlLiteralExpression(@"\_")), new SqlLiteralExpression("["), new SqlLiteralExpression(@"\[")); SqlExpressionTreeComparer.CheckAreEqualTrees(expectedResult, result); }
public void Transform_ArgumentIsNotNullAndIsNoConstantValue() { var method = typeof(string).GetMethod("Contains", new[] { typeof(string) }); var objectExpression = Expression.Constant("Test"); var argument1 = Expression.MakeMemberAccess(Expression.Constant(new Cook()), typeof(Cook).GetProperty("Name")); var expression = Expression.Call(objectExpression, method, argument1); var transformer = new ContainsMethodCallTransformer(); var result = transformer.Transform(expression); Expression rightExpression = new SqlFunctionExpression( typeof(string), "REPLACE", new SqlFunctionExpression( typeof(string), "REPLACE", new SqlFunctionExpression( typeof(string), "REPLACE", new SqlFunctionExpression( typeof(string), "REPLACE", argument1, new SqlLiteralExpression(@"\"), new SqlLiteralExpression(@"\\")), new SqlLiteralExpression(@"%"), new SqlLiteralExpression(@"\%")), new SqlLiteralExpression(@"_"), new SqlLiteralExpression(@"\_")), new SqlLiteralExpression(@"["), new SqlLiteralExpression(@"\[")); rightExpression = Expression.Add( new SqlLiteralExpression("%"), rightExpression, typeof(string).GetMethod("Concat", new[] { typeof(string), typeof(string) })); rightExpression = Expression.Add( rightExpression, new SqlLiteralExpression("%"), typeof(string).GetMethod("Concat", new[] { typeof(string), typeof(string) })); var expectedResult = new SqlLikeExpression(objectExpression, rightExpression, new SqlLiteralExpression(@"\")); SqlExpressionTreeComparer.CheckAreEqualTrees(expectedResult, result); }
protected virtual void ParseLikeExpression(SqlLikeExpression expression) { ParseExpression(expression.Left, GetExpressionPriority(expression)); builder.Append(" LIKE "); ParseExpression(expression.Right, GetExpressionPriority(expression)); }
public void Escape_Bracket() { var result = SqlLikeExpression.Escape("test[test", @"\"); Assert.That(result, Is.EqualTo(@"test\[test")); }
public void Escape_EscapeSequence() { var result = SqlLikeExpression.Escape(@"test\test", @"\"); Assert.That(result, Is.EqualTo(@"test\\test")); }
public void Escape_Underline() { var result = SqlLikeExpression.Escape("test_test", @"\"); Assert.That(result, Is.EqualTo(@"test\_test")); }
public void Escape_Percent() { var result = SqlLikeExpression.Escape("test%test", @"\"); Assert.That(result, Is.EqualTo(@"test\%test")); }
public Expression VisitSqlLike(SqlLikeExpression expression) { return(VisitChildrenWithGivenSemantics(expression, SqlExpressionContext.SingleValueRequired)); }