/*
* Copyright 2004-2015 the Seasar Foundation and the Others.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
* either express or implied. See the License for the specific language
* governing permissions and limitations under the License.
*/
package org.seasar.extension.jdbc.where;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import junit.framework.TestCase;
import org.seasar.extension.jdbc.ConditionType;
/**
* @author higa
*
*/
public class SimpleWhereTest extends TestCase {
/**
*
*/
public void testAddCondition() {
SimpleWhere w = new SimpleWhere();
w.addCondition(ConditionType.EQ, "id", 1);
w.addCondition(ConditionType.EQ, "name", "hoge");
assertEquals("id = ? and name = ?", w.getCriteria());
Object[] params = w.getParams();
assertEquals(2, params.length);
assertEquals(1, params[0]);
assertEquals("hoge", params[1]);
String[] names = w.getPropertyNames();
assertEquals(2, params.length);
assertEquals("id", names[0]);
assertEquals("name", names[1]);
}
/**
*
*/
public void testNormalize() {
SimpleWhere w = new SimpleWhere();
assertNull(w.normalizeArray(null));
assertEquals("", w.normalize(""));
assertEquals(" ", w.normalize(" "));
assertEquals(Integer.valueOf(1), w.normalize(Integer.valueOf(1)));
assertNull(w.normalizeArray((Object[]) null));
Object[] normalized = w.normalizeArray(null, "", " ", Integer.valueOf(1));
assertEquals(4, normalized.length);
assertNull(normalized[0]);
assertEquals("", normalized[1]);
assertEquals(" ", normalized[2]);
assertEquals(Integer.valueOf(1), normalized[3]);
w.excludesWhitespace();
assertNull(w.normalizeArray(null));
assertNull(w.normalize(""));
assertNull(w.normalize(" "));
assertEquals(Integer.valueOf(1), w.normalize(Integer.valueOf(1)));
assertNull(w.normalizeArray((Object[]) null));
normalized = w.normalizeArray(null, "", " ", Integer.valueOf(1));
assertEquals(1, normalized.length);
assertEquals(Integer.valueOf(1), normalized[0]);
}
/**
*
*/
public void testEq() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.eq("id", 1));
assertEquals("id = ?", w.getCriteria());
}
/**
*
*/
public void testEq_null() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.eq("id", null));
assertEquals("", w.getCriteria());
}
/**
*
*/
public void testEq_excludesWhitespace() {
SimpleWhere w = new SimpleWhere().excludesWhitespace();
assertSame(w, w.eq("id", ""));
assertEquals("", w.getCriteria());
}
/**
*
*/
public void testNe() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.ne("id", 1));
assertEquals("id <> ?", w.getCriteria());
}
/**
*
*/
public void testNe_null() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.ne("id", null));
assertEquals("", w.getCriteria());
}
/**
*
*/
public void testNe_excludesWhitespace() {
SimpleWhere w = new SimpleWhere().excludesWhitespace();
assertSame(w, w.ne("id", " "));
assertEquals("", w.getCriteria());
}
/**
*
*/
public void testLt() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.lt("id", 1));
assertEquals("id < ?", w.getCriteria());
}
/**
*
*/
public void testLt_null() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.lt("id", null));
assertEquals("", w.getCriteria());
}
/**
*
*/
public void testLt_excludesWhitespace() {
SimpleWhere w = new SimpleWhere().excludesWhitespace();
assertSame(w, w.lt("id", "\t"));
assertEquals("", w.getCriteria());
}
/**
*
*/
public void testLe() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.le("id", 1));
assertEquals("id <= ?", w.getCriteria());
}
/**
*
*/
public void testLe_null() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.le("id", null));
assertEquals("", w.getCriteria());
}
/**
*
*/
public void testLe_excludesWhitespace() {
SimpleWhere w = new SimpleWhere().excludesWhitespace();
assertSame(w, w.le("id", "\n"));
assertEquals("", w.getCriteria());
}
/**
*
*/
public void testGt() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.gt("id", 1));
assertEquals("id > ?", w.getCriteria());
}
/**
*
*/
public void testGt_null() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.gt("id", null));
assertEquals("", w.getCriteria());
}
/**
*
*/
public void testGt_excludesWhitespace() {
SimpleWhere w = new SimpleWhere().excludesWhitespace();
assertSame(w, w.gt("id", "\r"));
assertEquals("", w.getCriteria());
}
/**
*
*/
public void testGe() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.ge("id", 1));
assertEquals("id >= ?", w.getCriteria());
}
/**
*
*/
public void testGe_null() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.ge("id", null));
assertEquals("", w.getCriteria());
}
/**
*
*/
public void testGe_excludesWhitespace() {
SimpleWhere w = new SimpleWhere().excludesWhitespace();
assertSame(w, w.ge("id", "\r\n"));
assertEquals("", w.getCriteria());
}
/**
*
*/
public void testIn() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.in("id", 1, 2));
assertEquals("id in (?, ?)", w.getCriteria());
}
/**
*
*/
public void testIn_null() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.in("id", (Object[]) null));
assertEquals("", w.getCriteria());
}
/**
*
*/
public void testIn_excludesWhitespace() {
SimpleWhere w = new SimpleWhere().excludesWhitespace();
assertSame(w, w.in("id", "", " ", "\t"));
assertEquals("", w.getCriteria());
}
/**
*
*/
public void testIn_zero() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.in("id"));
assertEquals("", w.getCriteria());
}
/**
*
*/
public void testIn_List() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.in("id", Arrays.asList(1, 2)));
assertEquals("id in (?, ?)", w.getCriteria());
}
/**
*
*/
public void testIn_List_null() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.in("id", (List<?>) null));
assertEquals("", w.getCriteria());
}
/**
*
*/
public void testIn_List_excludesWhitespace() {
SimpleWhere w = new SimpleWhere().excludesWhitespace();
assertSame(w, w.in("id", Arrays.asList("", " ", "\t")));
assertEquals("", w.getCriteria());
}
/**
*
*/
public void testIn_List_zero() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.in("id", new ArrayList<Object>()));
assertEquals("", w.getCriteria());
}
/**
*
*/
public void testNotIn() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.notIn("id", 1, 2));
assertEquals("id not in (?, ?)", w.getCriteria());
}
/**
*
*/
public void testNotIn_null() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.notIn("id", (Object[]) null));
assertEquals("", w.getCriteria());
}
/**
*
*/
public void testNotIn_excludesWhitespace() {
SimpleWhere w = new SimpleWhere().excludesWhitespace();
assertSame(w, w.notIn("id", null, "", " ", "\n"));
assertEquals("", w.getCriteria());
}
/**
*
*/
public void testNotIn_zero() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.notIn("id"));
assertEquals("", w.getCriteria());
}
/**
*
*/
public void testNotIn_List() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.notIn("id", Arrays.asList(1, 2)));
assertEquals("id not in (?, ?)", w.getCriteria());
}
/**
*
*/
public void testNotIn_List_null() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.notIn("id", (List<?>) null));
assertEquals("", w.getCriteria());
}
/**
*
*/
public void testNotIn_List_excludesWhitespace() {
SimpleWhere w = new SimpleWhere().excludesWhitespace();
assertSame(w, w.notIn("id", Arrays.asList(null, "", " ", "\n")));
assertEquals("", w.getCriteria());
}
/**
*
*/
public void testNotIn_List_zero() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.notIn("id", new ArrayList<Object>()));
assertEquals("", w.getCriteria());
}
/**
*
*/
public void testLike() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.like("name", "hoge"));
assertEquals("name like ?", w.getCriteria());
}
/**
*
*/
public void testLike_null() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.like("name", null));
assertEquals("", w.getCriteria());
}
/**
*
*/
public void testLike_excludesWhitespace() {
SimpleWhere w = new SimpleWhere().excludesWhitespace();
assertSame(w, w.like("name", ""));
assertEquals("", w.getCriteria());
}
/**
*
*/
public void testLike_escape() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.like("name", "100$%", '$'));
assertEquals("name like ? escape ?", w.getCriteria());
assertEquals("100$%", w.paramList.get(0));
assertEquals('$', w.paramList.get(1));
}
/**
*
*/
public void testLike_escape_null() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.like("name", null, '$'));
assertEquals("", w.getCriteria());
}
/**
*
*/
public void testLike_escape_excludesWhitespace() {
SimpleWhere w = new SimpleWhere().excludesWhitespace();
assertSame(w, w.like("name", "", '$'));
assertEquals("", w.getCriteria());
}
/**
*
*/
public void testNotLike() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.notLike("name", "hoge"));
assertEquals("name not like ?", w.getCriteria());
}
/**
*
*/
public void testNotLike_null() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.notLike("name", null));
assertEquals("", w.getCriteria());
}
/**
*
*/
public void testNotLike_excludesWhitespace() {
SimpleWhere w = new SimpleWhere().excludesWhitespace();
assertSame(w, w.notLike("name", ""));
assertEquals("", w.getCriteria());
}
/**
*
*/
public void testNotLike_escape() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.notLike("name", "100$%", '$'));
assertEquals("name not like ? escape ?", w.getCriteria());
assertEquals("100$%", w.paramList.get(0));
assertEquals('$', w.paramList.get(1));
}
/**
*
*/
public void testNotLike_escape_null() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.notLike("name", null, '$'));
assertEquals("", w.getCriteria());
}
/**
*
*/
public void testNotLike_escape_excludesWhitespace() {
SimpleWhere w = new SimpleWhere().excludesWhitespace();
assertSame(w, w.notLike("name", "", '$'));
assertEquals("", w.getCriteria());
}
/**
*
*/
public void testStarts() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.starts("name", "hoge"));
assertEquals("name like ?", w.getCriteria());
}
/**
*
*/
public void testStarts_withMetachar() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.starts("name", "$100%"));
assertEquals("name like ? escape '$'", w.getCriteria());
assertEquals("$$100$%%", w.paramList.get(0));
}
/**
*
*/
public void testStarts_null() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.starts("name", null));
assertEquals("", w.getCriteria());
}
/**
*
*/
public void testStarts_excludesWhitespace() {
SimpleWhere w = new SimpleWhere().excludesWhitespace();
assertSame(w, w.starts("name", ""));
assertEquals("", w.getCriteria());
}
/**
*
*/
public void testNotStarts() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.notStarts("name", "hoge"));
assertEquals("name not like ?", w.getCriteria());
}
/**
*
*/
public void testNotStarts_withMetachar() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.notStarts("name", "$100%"));
assertEquals("name not like ? escape '$'", w.getCriteria());
assertEquals("$$100$%%", w.paramList.get(0));
}
/**
*
*/
public void testNotStarts_null() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.notStarts("name", null));
assertEquals("", w.getCriteria());
}
/**
*
*/
public void testNotStarts_excludesWhitespace() {
SimpleWhere w = new SimpleWhere().excludesWhitespace();
assertSame(w, w.notStarts("name", ""));
assertEquals("", w.getCriteria());
}
/**
*
*/
public void testEnds() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.ends("name", "hoge"));
assertEquals("name like ?", w.getCriteria());
}
/**
*
*/
public void testEnds_withMetachar() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.ends("name", "$100%"));
assertEquals("name like ? escape '$'", w.getCriteria());
assertEquals("%$$100$%", w.paramList.get(0));
}
/**
*
*/
public void testEnds_null() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.ends("name", null));
assertEquals("", w.getCriteria());
}
/**
*
*/
public void testEnds_excludesWhitespace() {
SimpleWhere w = new SimpleWhere().excludesWhitespace();
assertSame(w, w.ends("name", ""));
assertEquals("", w.getCriteria());
}
/**
*
*/
public void testNotEnds() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.notEnds("name", "hoge"));
assertEquals("name not like ?", w.getCriteria());
}
/**
*
*/
public void testNotEnds_withMetachar() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.notEnds("name", "$100%"));
assertEquals("name not like ? escape '$'", w.getCriteria());
assertEquals("%$$100$%", w.paramList.get(0));
}
/**
*
*/
public void testNotEnds_null() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.notEnds("name", null));
assertEquals("", w.getCriteria());
}
/**
*
*/
public void testNotEnds_excludesWhitespace() {
SimpleWhere w = new SimpleWhere().excludesWhitespace();
assertSame(w, w.notEnds("name", ""));
assertEquals("", w.getCriteria());
}
/**
*
*/
public void testContains() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.contains("name", "hoge"));
assertEquals("name like ?", w.getCriteria());
}
/**
*
*/
public void testContains_withMetachar() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.contains("name", "$100%"));
assertEquals("name like ? escape '$'", w.getCriteria());
assertEquals("%$$100$%%", w.paramList.get(0));
}
/**
*
*/
public void testContains_null() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.contains("name", null));
assertEquals("", w.getCriteria());
}
/**
*
*/
public void testContains_excludesWhitespace() {
SimpleWhere w = new SimpleWhere().excludesWhitespace();
assertSame(w, w.contains("name", ""));
assertEquals("", w.getCriteria());
}
/**
*
*/
public void testNotContains() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.notContains("name", "hoge"));
assertEquals("name not like ?", w.getCriteria());
}
/**
*
*/
public void testNotContains_withMetachar() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.notContains("name", "$100%"));
assertEquals("name not like ? escape '$'", w.getCriteria());
assertEquals("%$$100$%%", w.paramList.get(0));
}
/**
*
*/
public void testNotContains_null() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.notContains("name", null));
assertEquals("", w.getCriteria());
}
/**
*
*/
public void testNotContains_excludesWhitespace() {
SimpleWhere w = new SimpleWhere().excludesWhitespace();
assertSame(w, w.notContains("name", ""));
assertEquals("", w.getCriteria());
}
/**
*
*/
public void testIsNull() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.isNull("name", true));
assertEquals("name is null", w.getCriteria());
}
/**
*
*/
public void testIsNull_null() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.isNull("name", null));
assertEquals("", w.getCriteria());
}
/**
*
*/
public void testIsNull_false() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.isNull("name", false));
assertEquals("", w.getCriteria());
}
/**
*
*/
public void testIsNotNull() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.isNotNull("name", true));
assertEquals("name is not null", w.getCriteria());
}
/**
*
*/
public void testIsNotNull_null() {
SimpleWhere w = new SimpleWhere();
assertSame(w, w.isNotNull("name", null));
assertEquals("", w.getCriteria());
}
}