/* * 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; import java.util.ArrayList; import java.util.List; import junit.framework.TestCase; import org.seasar.extension.jdbc.exception.NonArrayInConditionRuntimeException; import org.seasar.extension.jdbc.exception.NonBooleanIsNullConditionRuntimeException; /** * @author higa * */ public class ConditionTypeTest extends TestCase { /** * */ public void testGetSuffix() { assertEquals("_EQ", ConditionType.EQ.getSuffix()); } /** * */ public void testHasSuffix() { assertTrue(ConditionType.EQ.hasSuffix("aaa_EQ")); assertFalse(ConditionType.EQ.hasSuffix("aaa_NE")); } /** * */ public void testRemoveSuffix() { assertEquals("aaa", ConditionType.EQ.removeSuffix("aaa_EQ")); } /** * */ public void testRemoveSuffix_notSuffix() { assertEquals("aaa", ConditionType.EQ.removeSuffix("aaa")); } /** * */ public void testGetConditionType() { assertEquals(ConditionType.EQ, ConditionType.getConditionType("aaa_EQ")); assertEquals(ConditionType.NE, ConditionType.getConditionType("aaa_NE")); assertEquals(ConditionType.LT, ConditionType.getConditionType("aaa_LT")); assertEquals(ConditionType.LE, ConditionType.getConditionType("aaa_LE")); assertEquals(ConditionType.GT, ConditionType.getConditionType("aaa_GT")); assertEquals(ConditionType.GE, ConditionType.getConditionType("aaa_GE")); assertEquals(ConditionType.NOT_IN, ConditionType .getConditionType("aaa_NOT_IN")); assertEquals(ConditionType.IN, ConditionType.getConditionType("aaa_IN")); assertEquals(ConditionType.LIKE, ConditionType .getConditionType("aaa_LIKE")); assertEquals(ConditionType.STARTS, ConditionType .getConditionType("aaa_STARTS")); assertEquals(ConditionType.ENDS, ConditionType .getConditionType("aaa_ENDS")); assertEquals(ConditionType.CONTAINS, ConditionType .getConditionType("aaa_CONTAINS")); assertEquals(ConditionType.IS_NULL, ConditionType .getConditionType("aaa_IS_NULL")); assertEquals(ConditionType.IS_NOT_NULL, ConditionType .getConditionType("aaa_IS_NOT_NULL")); } /** * */ public void testMakeCondition() { assertEquals("T1_.ID = ?", ConditionType.EQ.makeCondition("T1_", "ID", "=")); assertEquals("ID = ?", ConditionType.EQ.makeCondition(null, "ID", "=")); } /** * */ public void testEQ_getCondition() { assertEquals("T1_.ID = ?", ConditionType.EQ .getCondition("T1_", "ID", 1)); } /** * */ public void testEQ_getCondition_name() { assertEquals("id = ?", ConditionType.EQ.getCondition("id", 1)); } /** * */ public void testEQ_addValue() { List<Object> paramList = new ArrayList<Object>(); assertEquals(1, ConditionType.EQ.addValue(paramList, 1)); assertEquals(1, paramList.size()); assertEquals(1, paramList.get(0)); } /** * */ public void testEQ_isTarget() { assertTrue(ConditionType.EQ.isTarget(1)); assertFalse(ConditionType.EQ.isTarget(null)); } /** * */ public void testNE_getCondition() { assertEquals("T1_.ID <> ?", ConditionType.NE.getCondition("T1_", "ID", 1)); } /** * */ public void testNE_getCondition_name() { assertEquals("id <> ?", ConditionType.NE.getCondition("id", 1)); } /** * */ public void testNE_addValue() { List<Object> paramList = new ArrayList<Object>(); assertEquals(1, ConditionType.NE.addValue(paramList, 1)); assertEquals(1, paramList.size()); assertEquals(1, paramList.get(0)); } /** * */ public void testNE_isTarget() { assertTrue(ConditionType.NE.isTarget(1)); assertFalse(ConditionType.NE.isTarget(null)); } /** * */ public void testLT_getCondition() { assertEquals("T1_.ID < ?", ConditionType.LT .getCondition("T1_", "ID", 1)); } /** * */ public void testLT_getCondition_name() { assertEquals("id < ?", ConditionType.LT.getCondition("id", 1)); } /** * */ public void testLT_addValue() { List<Object> paramList = new ArrayList<Object>(); assertEquals(1, ConditionType.LT.addValue(paramList, 1)); assertEquals(1, paramList.size()); assertEquals(1, paramList.get(0)); } /** * */ public void testLT_isTarget() { assertTrue(ConditionType.LT.isTarget(1)); assertFalse(ConditionType.LT.isTarget(null)); } /** * */ public void testLE_getCondition() { assertEquals("T1_.ID <= ?", ConditionType.LE.getCondition("T1_", "ID", 1)); } /** * */ public void testLE_getCondition_name() { assertEquals("id <= ?", ConditionType.LE.getCondition("id", 1)); } /** * */ public void testLE_addValue() { List<Object> paramList = new ArrayList<Object>(); assertEquals(1, ConditionType.LE.addValue(paramList, 1)); assertEquals(1, paramList.size()); assertEquals(1, paramList.get(0)); } /** * */ public void testLE_isTarget() { assertTrue(ConditionType.LE.isTarget(1)); assertFalse(ConditionType.LE.isTarget(null)); } /** * */ public void testGT_getCondition() { assertEquals("T1_.ID > ?", ConditionType.GT .getCondition("T1_", "ID", 1)); } /** * */ public void testGT_getCondition_name() { assertEquals("id > ?", ConditionType.GT.getCondition("id", 1)); } /** * */ public void testGT_addValue() { List<Object> paramList = new ArrayList<Object>(); assertEquals(1, ConditionType.GT.addValue(paramList, 1)); assertEquals(1, paramList.size()); assertEquals(1, paramList.get(0)); } /** * */ public void testGT_isTarget() { assertTrue(ConditionType.GT.isTarget(1)); assertFalse(ConditionType.GT.isTarget(null)); } /** * */ public void testGetInConditionInternal() { assertEquals("T1_.ID in (?, ?)", ConditionType.IN.getCondition("T1_", "ID", new Object[] { 1, 2 })); } /** * */ public void testIN_getCondition() { assertEquals("T1_.ID in (?, ?)", ConditionType.IN.getCondition("T1_", "ID", new Object[] { 1, 2 })); } /** * */ public void testIN_getCondition_name() { assertEquals("id in (?, ?)", ConditionType.IN.getCondition("id", new Object[] { 1, 2 })); } /** * */ public void testIN_addValue() { List<Object> paramList = new ArrayList<Object>(); assertEquals(2, ConditionType.IN.addValue(paramList, new Object[] { 1, 2 })); assertEquals(2, paramList.size()); assertEquals(1, paramList.get(0)); assertEquals(2, paramList.get(1)); } /** * */ public void testIN_isTarget() { assertTrue(ConditionType.IN.isTarget(new Object[] { 1 })); assertFalse(ConditionType.IN.isTarget(null)); assertFalse(ConditionType.IN.isTarget(new Object[0])); assertFalse(ConditionType.IN.isTarget(new Object[] { null })); assertFalse(ConditionType.IN.isTarget(new Object[] { null, null })); } /** * */ public void testIN_isTarget_notArray() { try { ConditionType.IN.isTarget("hoge"); fail(); } catch (NonArrayInConditionRuntimeException e) { System.out.println(e); assertEquals("in", e.getConditionName()); assertEquals(String.class, e.getValueClass()); } } /** * */ public void testNOT_IN_getCondition() { assertEquals("T1_.ID not in (?, ?)", ConditionType.NOT_IN.getCondition( "T1_", "ID", new Object[] { 1, 2 })); } /** * */ public void testNOT_IN_getCondition_name() { assertEquals("id not in (?, ?)", ConditionType.NOT_IN.getCondition( "id", new Object[] { 1, 2 })); } /** * */ public void testNOT_IN_addValue() { List<Object> paramList = new ArrayList<Object>(); assertEquals(2, ConditionType.NOT_IN.addValue(paramList, new Object[] { 1, 2 })); assertEquals(2, paramList.size()); assertEquals(1, paramList.get(0)); assertEquals(2, paramList.get(1)); } /** * */ public void testNOT_IN_isTarget() { assertTrue(ConditionType.NOT_IN.isTarget(new Object[] { 1 })); assertFalse(ConditionType.NOT_IN.isTarget(null)); assertFalse(ConditionType.NOT_IN.isTarget(new Object[0])); assertFalse(ConditionType.NOT_IN.isTarget(new Object[] { null })); assertFalse(ConditionType.NOT_IN.isTarget(new Object[] { null, null })); } /** * */ public void testNOT_IN_isTarget_notArray() { try { ConditionType.NOT_IN.isTarget("hoge"); fail(); } catch (NonArrayInConditionRuntimeException e) { System.out.println(e); assertEquals("not in", e.getConditionName()); assertEquals(String.class, e.getValueClass()); } } /** * */ public void testLIKE_getCondition() { assertEquals("T1_.ID like ?", ConditionType.LIKE.getCondition("T1_", "ID", "hoge")); } /** * */ public void testLIKE_getCondition_name() { assertEquals("id like ?", ConditionType.LIKE.getCondition("id", "hoge")); } /** * */ public void testLIKE_addValue() { List<Object> paramList = new ArrayList<Object>(); assertEquals(1, ConditionType.LIKE.addValue(paramList, "hoge")); assertEquals(1, paramList.size()); assertEquals("hoge", paramList.get(0)); } /** * */ public void testLIKE_isTarget() { assertTrue(ConditionType.LIKE.isTarget("hoge")); assertFalse(ConditionType.LIKE.isTarget(null)); } /** * */ public void testLIKE_ESCAPE_getCondition() { assertEquals("T1_.ID like ? escape ?", ConditionType.LIKE_ESCAPE .getCondition("T1_", "ID", "hoge")); } /** * */ public void testLIKE_ESCAPE_getCondition_name() { assertEquals("id like ? escape ?", ConditionType.LIKE_ESCAPE .getCondition("id", "hoge")); } /** * */ public void testLIKE_ESCAPE_addValue() { List<Object> paramList = new ArrayList<Object>(); assertEquals(2, ConditionType.LIKE_ESCAPE.addValue(paramList, new Object[] { "hoge", '$' })); assertEquals(2, paramList.size()); assertEquals("hoge", paramList.get(0)); assertEquals('$', paramList.get(1)); } /** * */ public void testLIKE_ESCAPE_isTarget() { assertTrue(ConditionType.LIKE_ESCAPE.isTarget("hoge")); assertFalse(ConditionType.LIKE_ESCAPE.isTarget(null)); } /** * */ public void testSTARTS_getCondition() { assertEquals("T1_.ID like ?", ConditionType.STARTS.getCondition("T1_", "ID", "hoge")); } /** * */ public void testSTARTS_getCondition_name() { assertEquals("id like ?", ConditionType.STARTS.getCondition("id", "hoge")); } /** * */ public void testSTARTS_addValue() { List<Object> paramList = new ArrayList<Object>(); assertEquals(1, ConditionType.STARTS.addValue(paramList, "hoge")); assertEquals(1, paramList.size()); assertEquals("hoge%", paramList.get(0)); } /** * */ public void testSTARTS_isTarget() { assertTrue(ConditionType.STARTS.isTarget("hoge")); assertFalse(ConditionType.STARTS.isTarget(null)); } /** * */ public void testSTARTS_ESCAPE_getCondition() { assertEquals("T1_.ID like ? escape '$'", ConditionType.STARTS_ESCAPE .getCondition("T1_", "ID", "hoge")); } /** * */ public void testSTARTS_ESCAPE_getCondition_name() { assertEquals("id like ? escape '$'", ConditionType.STARTS_ESCAPE .getCondition("id", "hoge")); } /** * */ public void testSTARTS_ESCAPE_addValue() { List<Object> paramList = new ArrayList<Object>(); assertEquals(1, ConditionType.STARTS_ESCAPE.addValue(paramList, "hoge")); assertEquals(1, paramList.size()); assertEquals("hoge%", paramList.get(0)); } /** * */ public void testSTARTS_ESCAPE_isTarget() { assertTrue(ConditionType.STARTS_ESCAPE.isTarget("hoge")); assertFalse(ConditionType.STARTS_ESCAPE.isTarget(null)); } /** * */ public void testENDS_getCondition() { assertEquals("T1_.ID like ?", ConditionType.ENDS.getCondition("T1_", "ID", "hoge")); } /** * */ public void testENDS_getCondition_name() { assertEquals("id like ?", ConditionType.ENDS.getCondition("id", "hoge")); } /** * */ public void testENDS_addValue() { List<Object> paramList = new ArrayList<Object>(); assertEquals(1, ConditionType.ENDS.addValue(paramList, "hoge")); assertEquals(1, paramList.size()); assertEquals("%hoge", paramList.get(0)); } /** * */ public void testENDS_isTarget() { assertTrue(ConditionType.ENDS.isTarget("hoge")); assertFalse(ConditionType.ENDS.isTarget(null)); } /** * */ public void testENDS_ESCAPE_getCondition() { assertEquals("T1_.ID like ? escape '$'", ConditionType.ENDS_ESCAPE .getCondition("T1_", "ID", "hoge")); } /** * */ public void testENDS_ESCAPE_getCondition_name() { assertEquals("id like ? escape '$'", ConditionType.ENDS_ESCAPE .getCondition("id", "hoge")); } /** * */ public void testENDS_ESCAPE_addValue() { List<Object> paramList = new ArrayList<Object>(); assertEquals(1, ConditionType.ENDS_ESCAPE.addValue(paramList, "hoge")); assertEquals(1, paramList.size()); assertEquals("%hoge", paramList.get(0)); } /** * */ public void testENDS_ESCAPE_isTarget() { assertTrue(ConditionType.ENDS_ESCAPE.isTarget("hoge")); assertFalse(ConditionType.ENDS_ESCAPE.isTarget(null)); } /** * */ public void testCONTAINS_getCondition() { assertEquals("T1_.ID like ?", ConditionType.CONTAINS.getCondition( "T1_", "ID", "hoge")); } /** * */ public void testCONTAINS_getCondition_name() { assertEquals("id like ?", ConditionType.CONTAINS.getCondition("id", "hoge")); } /** * */ public void testCONTAINS_addValue() { List<Object> paramList = new ArrayList<Object>(); assertEquals(1, ConditionType.CONTAINS.addValue(paramList, "hoge")); assertEquals(1, paramList.size()); assertEquals("%hoge%", paramList.get(0)); } /** * */ public void testCONTAINS_isTarget() { assertTrue(ConditionType.CONTAINS.isTarget("hoge")); assertFalse(ConditionType.CONTAINS.isTarget(null)); } /** * */ public void testCONTAINS_ESCAPE_getCondition() { assertEquals("T1_.ID like ? escape '$'", ConditionType.CONTAINS_ESCAPE .getCondition("T1_", "ID", "hoge")); } /** * */ public void testCONTAINS_ESCAPE_getCondition_name() { assertEquals("id like ? escape '$'", ConditionType.CONTAINS_ESCAPE .getCondition("id", "hoge")); } /** * */ public void testCONTAINS_ESCAPE_addValue() { List<Object> paramList = new ArrayList<Object>(); assertEquals(1, ConditionType.CONTAINS_ESCAPE.addValue(paramList, "hoge")); assertEquals(1, paramList.size()); assertEquals("%hoge%", paramList.get(0)); } /** * */ public void testCONTAINS_ESCAPE_isTarget() { assertTrue(ConditionType.CONTAINS_ESCAPE.isTarget("hoge")); assertFalse(ConditionType.CONTAINS_ESCAPE.isTarget(null)); } /** * */ public void testIS_NULL_getCondition() { assertEquals("T1_.ID is null", ConditionType.IS_NULL.getCondition( "T1_", "ID", true)); } /** * */ public void testIS_NULL_getCondition_name() { assertEquals("id is null", ConditionType.IS_NULL.getCondition("id", true)); } /** * */ public void testIS_NULL_addValue() { List<Object> paramList = new ArrayList<Object>(); assertEquals(0, ConditionType.IS_NULL.addValue(paramList, true)); assertEquals(0, paramList.size()); } /** * */ public void testIS_NULL_isTarget() { assertTrue(ConditionType.IS_NULL.isTarget(true)); assertFalse(ConditionType.IS_NULL.isTarget(null)); assertFalse(ConditionType.IS_NULL.isTarget(false)); } /** * */ public void testIS_NULL_isTarget_notArray() { try { ConditionType.IS_NULL.isTarget("hoge"); fail(); } catch (NonBooleanIsNullConditionRuntimeException e) { System.out.println(e); assertEquals("is null", e.getConditionName()); assertEquals(String.class, e.getValueClass()); } } /** * */ public void testIS_NOT_NULL_getCondition() { assertEquals("T1_.ID is not null", ConditionType.IS_NOT_NULL .getCondition("T1_", "ID", true)); } /** * */ public void testIS_NOT_NULL_getCondition_name() { assertEquals("id is not null", ConditionType.IS_NOT_NULL.getCondition( "id", true)); } /** * */ public void testIS_NOT_NULL_addValue() { List<Object> paramList = new ArrayList<Object>(); assertEquals(0, ConditionType.IS_NOT_NULL.addValue(paramList, true)); assertEquals(0, paramList.size()); } /** * */ public void testIS_NOT_NULL_isTarget() { assertTrue(ConditionType.IS_NOT_NULL.isTarget(true)); assertFalse(ConditionType.IS_NOT_NULL.isTarget(null)); assertFalse(ConditionType.IS_NOT_NULL.isTarget(false)); } /** * */ public void testIS_NOT_NULL_isTarget_notArray() { try { ConditionType.IS_NOT_NULL.isTarget("hoge"); fail(); } catch (NonBooleanIsNullConditionRuntimeException e) { System.out.println(e); assertEquals("is not null", e.getConditionName()); assertEquals(String.class, e.getValueClass()); } } /** * */ public void testAddCondition() { List<Object> valueList = new ArrayList<Object>(); WhereClause whereClause = new WhereClause(); ConditionType.EQ.addCondition("id", 1, whereClause, valueList); assertEquals(" where id = ?", whereClause.toSql()); assertEquals(1, valueList.size()); assertEquals(1, valueList.get(0)); } }