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)); }