Example #1
0
        public void TestBooleanExpressionLike()
        {
            //Initialize
            var table = new ResultTable();
            var col   = new ResultColumnHeader("TextColumn", typeof(string));

            col.Expression = new ColumnRef("TextColumn");
            table.Columns.Add(col);
            var like = new BooleanLike();

            var row1 = table.NewRow();

            row1.Add(new object[] { "%%ABCDEFG" });

            //Escape character test
            like = new BooleanLike(new ColumnRef("TextColumn"), new StringConstant("!%!%%"), '!');
            Assert.Equal(true, like.Eval(row1));

            //Leading percent test
            like = new BooleanLike(new ColumnRef("TextColumn"), new StringConstant("%EFG"));
            Assert.Equal(true, like.Eval(row1));

            //Trailing percent test
            like = new BooleanLike(new ColumnRef("TextColumn"), new StringConstant("!%!%ABC%"), '!');
            Assert.Equal(true, like.Eval(row1));

            //Middle percent test
            like = new BooleanLike(new ColumnRef("TextColumn"), new StringConstant("!%!%ABC%EFG"), '!');
            Assert.Equal(true, like.Eval(row1));

            //Leading underscore test
            like = new BooleanLike(new ColumnRef("TextColumn"), new StringConstant("_!%ABCDEFG"), '!');
            Assert.Equal(true, like.Eval(row1));

            //Trailing underscore test
            like = new BooleanLike(new ColumnRef("TextColumn"), new StringConstant("!%!%ABCDEF_"), '!');
            Assert.Equal(true, like.Eval(row1));

            //Middle underscore test
            like = new BooleanLike(new ColumnRef("TextColumn"), new StringConstant("!%!%ABC_EFG"), '!');
            Assert.Equal(true, like.Eval(row1));

            //Mixed wild card test
            like = new BooleanLike(new ColumnRef("TextColumn"), new StringConstant("__ABCD%_"));
            Assert.Equal(true, like.Eval(row1));

            //Case insensitive test
            like = new BooleanLike(new ColumnRef("TextColumn"), new StringConstant("___bcd%_"));
            Assert.Equal(true, like.Eval(row1));

            //Invalid escape character test
            like = new BooleanLike(new ColumnRef("TextColumn"), new StringConstant("!%!%!ABCDEF!G!"));
            Assert.Equal(false, like.Eval(row1));

            //Null escape character test
            like = new BooleanLike(new ColumnRef("TextColumn"), new StringConstant("\\%\\%ABCDEFG"), null);
            Assert.Equal(true, like.Eval(row1));
        }
Example #2
0
 public override object VisitLikePredicate([NotNull] PostgresParser.LikePredicateContext context)
 {
     var res = new BooleanLike();
     res.Column = (ColumnRef)Visit(context.predicate()[0]);
     res.SearchValue = (ConstantContainer)Visit(context.predicate()[1]);
     if (context.NOT() != null)
         res.NOT = true;
     if (context.stringLiteral() != null)
         res.EscapeChar = ((StringConstant)Visit(context.stringLiteral())).strvalue[0];
     return res;
 }