package net.sourceforge.mayfly.acceptance.expression;
import net.sourceforge.mayfly.acceptance.SqlTestCase;
/**
* @internal
* See also {@link WhereTest#testLikePrecedence()} although that is about
* parsing/precedence as much as LIKE.
*/
public class LikeTest extends SqlTestCase {
public void testBasics() throws Exception {
execute("create table foo(a varchar(255))");
execute("insert into foo(a) values('cat')");
execute("insert into foo(a) values('cut')");
execute("insert into foo(a) values('category')");
execute("insert into foo(a) values('tomcat')");
execute("insert into foo(a) values('dog')");
execute("insert into foo(a) values(null)");
assertResultSet(new String[] { " 'cat' " },
query("select a from foo where a like 'cat'"));
assertResultSet(new String[] { " 'cat' ", " 'category' " },
query("select a from foo where a like 'cat%'"));
assertResultSet(new String[] {
" 'cat' ", " 'category' ", " 'tomcat' " },
query("select a from foo where a like '%cat%'"));
assertResultSet(new String[] {
" 'cat' ", " 'tomcat' " },
query("select a from foo where a like '%cat'"));
assertResultSet(new String[] { " 'cat' " , " 'cut' " },
query("select a from foo where a like 'c_t'"));
}
public void testCaseInsensitive() throws Exception {
execute("create table foo(a varchar(255))");
execute("insert into foo(a) values('CAP')");
execute("insert into foo(a) values('cap')");
execute("insert into foo(a) values('Cap')");
if (dialect.likeIsCaseSensitive()) {
assertResultSet(new String[] { " 'cap' " },
query("select a from foo where a like 'cap'"));
assertResultSet(new String[] { " 'CAP' "},
query("select a from foo where a like 'CAP'"));
assertResultSet(new String[] { },
query("select a from foo where a like 'caP'"));
}
else {
assertResultSet(new String[] { " 'cap' ", " 'Cap' ", " 'CAP' " },
query("select a from foo where a like 'cap'"));
assertResultSet(new String[] { " 'cap' ", " 'Cap' ", " 'CAP' " },
query("select a from foo where a like 'CAP'"));
assertResultSet(new String[] { " 'cap' ", " 'Cap' ", " 'CAP' " },
query("select a from foo where a like 'caP'"));
}
}
}