Esempio n. 1
0
        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 '\'"));
        }
Esempio n. 2
0
        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], "%", "%"));
        }
Esempio n. 4
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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        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("'");
 }
Esempio n. 9
0
        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);
        }
Esempio n. 11
0
 protected virtual void ParseLikeExpression(SqlLikeExpression expression)
 {
     ParseExpression(expression.Left, GetExpressionPriority(expression));
     builder.Append(" LIKE ");
     ParseExpression(expression.Right, GetExpressionPriority(expression));
 }
Esempio n. 12
0
        public void Escape_Bracket()
        {
            var result = SqlLikeExpression.Escape("test[test", @"\");

            Assert.That(result, Is.EqualTo(@"test\[test"));
        }
Esempio n. 13
0
        public void Escape_EscapeSequence()
        {
            var result = SqlLikeExpression.Escape(@"test\test", @"\");

            Assert.That(result, Is.EqualTo(@"test\\test"));
        }
Esempio n. 14
0
        public void Escape_Underline()
        {
            var result = SqlLikeExpression.Escape("test_test", @"\");

            Assert.That(result, Is.EqualTo(@"test\_test"));
        }
Esempio n. 15
0
        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));
 }