DBUTILS-124 Add tests for new column and property handlers. git-svn-id: https://svn.apache.org/repos/asf/commons/proper/dbutils/trunk@1674746 13f79535-47bb-0310-9956-ffa450edef68
Project: http://git-wip-us.apache.org/repos/asf/commons-dbutils/repo Commit: http://git-wip-us.apache.org/repos/asf/commons-dbutils/commit/7bb41746 Tree: http://git-wip-us.apache.org/repos/asf/commons-dbutils/tree/7bb41746 Diff: http://git-wip-us.apache.org/repos/asf/commons-dbutils/diff/7bb41746 Branch: refs/heads/master Commit: 7bb417462f63c9a91c757fba5c5f00f937032879 Parents: 6f6e4bc Author: Carl Franklin Hall <[email protected]> Authored: Mon Apr 20 06:32:39 2015 +0000 Committer: Carl Franklin Hall <[email protected]> Committed: Mon Apr 20 06:32:39 2015 +0000 ---------------------------------------------------------------------- src/changes/changes.xml | 61 +++++++++--------- .../apache/commons/dbutils/BeanProcessor.java | 8 ++- .../columns/BooleanColumnHandlerTest.java | 37 +++++++++++ .../handlers/columns/ByteColumnHandlerTest.java | 37 +++++++++++ .../handlers/columns/ColumnHandlerTestBase.java | 36 +++++++++++ .../columns/DoubleColumnHandlerTest.java | 37 +++++++++++ .../columns/FloatColumnHandlerTest.java | 37 +++++++++++ .../columns/IntegerColumnHandlerTest.java | 43 +++++++++++++ .../handlers/columns/LongColumnHandlerTest.java | 37 +++++++++++ .../columns/SQLXMLColumnHandlerTest.java | 43 +++++++++++++ .../columns/ShortColumnHandlerTest.java | 37 +++++++++++ .../columns/StringColumnHandlerTest.java | 37 +++++++++++ .../columns/TimestampColumnHandlerTest.java | 40 ++++++++++++ .../properties/DatePropertyHandlerTest.java | 65 ++++++++++++++++++++ .../StringEnumPropertyHandlerTest.java | 44 +++++++++++++ .../dbutils/handlers/properties/TestEnum.java | 21 +++++++ 16 files changed, 588 insertions(+), 32 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/commons-dbutils/blob/7bb41746/src/changes/changes.xml ---------------------------------------------------------------------- diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 906d000..5139fc7 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -20,13 +20,13 @@ This file is used by the maven-changes-plugin to generate the release notes. Useful ways of finding items to add to this file are: -1. Add items when you fix a bug or add a feature (this makes the +1. Add items when you fix a bug or add a feature (this makes the release process easy :-). 2. Do a bugzilla search for tickets closed since the previous release. 3. Use the report generated by the maven-changelog-plugin to see all -CVS commits. Set the project.properties' maven.changelog.range +CVS commits. Set the project.properties' maven.changelog.range property to the number of days since the last release. To regenerate the RELEASE-NOTES.txt: @@ -68,6 +68,9 @@ The <action> type attribute can be add,update,fix,remove. <action dev="thecarlhall" type="add" issue="DBUTILS-50" due-to="Dan Fabulich"> Support CallableStatement "out" parameters </action> + <action dev="thecarlhall" type="add" issue="DBUTILS-124"> + Implement column and property handlers using Java's service interfaces. + </action> </release> <release version="1.6" date="2014-07-20" description="Bugfixes and addition of insert methods"> @@ -126,7 +129,7 @@ The <action> type attribute can be add,update,fix,remove. Enhance BasicRowProcessor to have row mapping easier to configure </action> <action due-to="wspeirs" type="update"> - Updated pom.xml: Java 1.6 now required, clirr and compiler plugin removed + Updated pom.xml: Java 1.6 now required, clirr and compiler plugin removed </action> <action due-to="Tiago Cavaleiro" dev="wspeirs" type="fix" issue="DBUTILS-84"> BeanProcessor method processColumn should take SQLXML in consideration @@ -208,7 +211,7 @@ The <action> type attribute can be add,update,fix,remove. </action> <action dev="dfabulich" type="fix" issue="DBUTILS-40"> NullPointerException occured at rethrow method - </action> + </action> <action dev="dfabulich" type="update" issue="DBUTILS-42"> Object with Long or Decimal got initial zero value while database field is null </action> @@ -222,7 +225,7 @@ The <action> type attribute can be add,update,fix,remove. <release version="1.1" date="2006-12-01" description="Last couple of years of fixes"> <action dev="bayard" type="fix" issue="DBUTILS-32"> - Tests fail to build under 1.6, and warning while compiling source + Tests fail to build under 1.6, and warning while compiling source </action> <action dev="bayard" type="fix" issue="DBUTILS-1"> BeanListHandler and BeanHandler fail to support java.sql.Date() @@ -234,7 +237,7 @@ The <action> type attribute can be add,update,fix,remove. Setting bean properties fails silently </action> <action dev="dgraham" type="fix" issue="DBUTILS-9"> - MockResultSet needs to handle equals and hashCode + MockResultSet needs to handle equals and hashCode </action> <action dev="bayard" type="fix" issue="DBUTILS-7"> MockResultSet: Throw UnsupportedOperationException for not implemented methods @@ -243,16 +246,16 @@ The <action> type attribute can be add,update,fix,remove. Implement Pluggable Adaptors to Make BeanHandler Smarter </action> <action dev="dgraham" type="update" issue="DBUTILS-15"> - Patch for extending BasicRowProcessor + Patch for extending BasicRowProcessor </action> <action dev="dgraham" type="add" issue="DBUTILS-12"> - Protected QueryRunner.close() methods + Protected QueryRunner.close() methods </action> <action dev="dgraham" type="update" issue="DBUTILS-23"> - Updated docs for example.html page (select AS) + Updated docs for example.html page (select AS) </action> <action dev="dgraham" type="add" issue="DBUTILS-4"> - Added protected ResultSetIterator.rethrow() method to wrap SQLExceptions in + Added protected ResultSetIterator.rethrow() method to wrap SQLExceptions in RuntimeExceptions. </action> <action dev="dgraham" type="update" issue="DBUTILS-5"> @@ -267,7 +270,7 @@ The <action> type attribute can be add,update,fix,remove. </action> <action dev="dgraham" type="update" issue="DBUTILS-22"> Made QueryLoader.loadQueries() protected so subclasses can use query - repositories other than properties files. + repositories other than properties files. </action> <action dev="dgraham" type="update"> QueryRunner now calls getDataSource() internally any time it needs access @@ -277,15 +280,15 @@ The <action> type attribute can be add,update,fix,remove. Added DbUtils.rollbackAndClose() and DbUtils.rollbackAndCloseQuietly(). </action> <action dev="dgraham" type="update" issue="DBUTILS-26"> - Call ResultSet.getTimestamp() in BeanProcessor.processColumn() if - the bean property is a java.sql.Timestamp. Oracle's getObject() + Call ResultSet.getTimestamp() in BeanProcessor.processColumn() if + the bean property is a java.sql.Timestamp. Oracle's getObject() implementation returns its own incompatible Timestamp class. </action> <action dev="dgraham" type="update" issue="DBUTILS-18"> - Changed QueryRunner.fillStatement() null handling - to use Types.VARCHAR instead of Types.OTHER. This works for the + Changed QueryRunner.fillStatement() null handling + to use Types.VARCHAR instead of Types.OTHER. This works for the following tested drivers: Firebird 1.5/firebirdsql 1.5RC3, - Oracle 9/ Thin driver, MySQL 4.0/Msql Connecttor 3.0 and mm.mysql + Oracle 9/ Thin driver, MySQL 4.0/Msql Connecttor 3.0 and mm.mysql 2.0.4 MaxDB 7.5, HSQLDB 1.7.1, and MS Access/ODBC Bridge. </action> <action dev="dgraham" type="add" issue="DBUTILS-21"> @@ -294,7 +297,7 @@ The <action> type attribute can be add,update,fix,remove. the DataSource before they're used. </action> <action dev="dgraham" type="add"> - Refactored bean handling from BasicRowProcessor into new + Refactored bean handling from BasicRowProcessor into new BeanProcessor class. This also fixes the common problem with Oracle NUMERIC fields not being set into bean properties. </action> @@ -302,35 +305,35 @@ The <action> type attribute can be add,update,fix,remove. Added QueryRunner.batch() methods for batch updates. </action> <action dev="dgraham" type="add" issue="DBUTILS-11"> - Added new ResultSetHandler implementation, ColumnListHandler, that + Added new ResultSetHandler implementation, ColumnListHandler, that converts one ResultSet column into a List of Objects. </action> </release> - + <release version="1.0" date="2003-11-10" description="First release of DbUtils"> <action type="add"> This is the first release of the Commons DbUtils package. DbUtils is a small set of classes designed to make working with JDBC easier. - </action> + </action> <action type="add"> QueryRunner class with ResultSetHandler interface allow you to easily query or update a database and handle the ResultSet. Several useful implementations - of the ResultSetHandler interface are located in the + of the ResultSetHandler interface are located in the org.apache.commons.dbutils.handlers.* package. - </action> + </action> <action type="add"> - ResultSet wrappers that decorate ResultSets with specialized - behavior. See the classes in the org.apache.commons.dbutils.wrappers.* + ResultSet wrappers that decorate ResultSets with specialized + behavior. See the classes in the org.apache.commons.dbutils.wrappers.* package for details. </action> <action type="add"> - Dynamic JDBC API interface implementations via the standard - java.lang.reflect.Proxy class. This allows you to implement JDBC - interfaces such as ResultSet at runtime to avoid API version - incompatibilities. See org.apache.commons.dbutils.ProxyFactory + Dynamic JDBC API interface implementations via the standard + java.lang.reflect.Proxy class. This allows you to implement JDBC + interfaces such as ResultSet at runtime to avoid API version + incompatibilities. See org.apache.commons.dbutils.ProxyFactory for details. </action> </release> - + </body> </document> http://git-wip-us.apache.org/repos/asf/commons-dbutils/blob/7bb41746/src/main/java/org/apache/commons/dbutils/BeanProcessor.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/dbutils/BeanProcessor.java b/src/main/java/org/apache/commons/dbutils/BeanProcessor.java index 7580655..ce1098a 100644 --- a/src/main/java/org/apache/commons/dbutils/BeanProcessor.java +++ b/src/main/java/org/apache/commons/dbutils/BeanProcessor.java @@ -341,9 +341,7 @@ public class BeanProcessor { */ private boolean isCompatibleType(Object value, Class<?> type) { // Do object check first, then primitives - if (value == null - || type.isInstance(value) - || (type.isPrimitive() && matchesPrimitive(type, value.getClass()))) { + if (value == null || type.isInstance(value) || matchesPrimitive(type, value.getClass())) { return true; } @@ -359,6 +357,10 @@ public class BeanProcessor { * @return Whether <code>valueType</code> can be coerced (e.g. autoboxed) into <code>targetType</code>. */ private boolean matchesPrimitive(Class<?> targetType, Class<?> valueType) { + if (!targetType.isPrimitive()) { + return false; + } + try { // see if there is a "TYPE" field. This is present for primitive wrappers. Field typeField = valueType.getField("TYPE"); http://git-wip-us.apache.org/repos/asf/commons-dbutils/blob/7bb41746/src/test/java/org/apache/commons/dbutils/handlers/columns/BooleanColumnHandlerTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/commons/dbutils/handlers/columns/BooleanColumnHandlerTest.java b/src/test/java/org/apache/commons/dbutils/handlers/columns/BooleanColumnHandlerTest.java new file mode 100644 index 0000000..d9e49fd --- /dev/null +++ b/src/test/java/org/apache/commons/dbutils/handlers/columns/BooleanColumnHandlerTest.java @@ -0,0 +1,37 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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.apache.commons.dbutils.handlers.columns; + +import static org.junit.Assert.assertEquals; +import static org.mockito.Mockito.when; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.runners.MockitoJUnitRunner; + +@RunWith(MockitoJUnitRunner.class) +public class BooleanColumnHandlerTest extends ColumnHandlerTestBase { + public BooleanColumnHandlerTest() { + super(new BooleanColumnHandler(), Boolean.class); + } + + @Test + public void testApplyType() throws Exception { + when(rs.getBoolean(1)).thenReturn(Boolean.TRUE); + assertEquals(Boolean.class, handler.apply(rs, 1).getClass()); + } +} http://git-wip-us.apache.org/repos/asf/commons-dbutils/blob/7bb41746/src/test/java/org/apache/commons/dbutils/handlers/columns/ByteColumnHandlerTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/commons/dbutils/handlers/columns/ByteColumnHandlerTest.java b/src/test/java/org/apache/commons/dbutils/handlers/columns/ByteColumnHandlerTest.java new file mode 100644 index 0000000..23d38bc --- /dev/null +++ b/src/test/java/org/apache/commons/dbutils/handlers/columns/ByteColumnHandlerTest.java @@ -0,0 +1,37 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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.apache.commons.dbutils.handlers.columns; + +import static org.junit.Assert.assertEquals; +import static org.mockito.Mockito.when; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.runners.MockitoJUnitRunner; + +@RunWith(MockitoJUnitRunner.class) +public class ByteColumnHandlerTest extends ColumnHandlerTestBase { + public ByteColumnHandlerTest() { + super(new ByteColumnHandler(), Byte.class); + } + + @Test + public void testApplyType() throws Exception { + when(rs.getByte(1)).thenReturn(Byte.MIN_VALUE); + assertEquals(Byte.class, handler.apply(rs, 1).getClass()); + } +} http://git-wip-us.apache.org/repos/asf/commons-dbutils/blob/7bb41746/src/test/java/org/apache/commons/dbutils/handlers/columns/ColumnHandlerTestBase.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/commons/dbutils/handlers/columns/ColumnHandlerTestBase.java b/src/test/java/org/apache/commons/dbutils/handlers/columns/ColumnHandlerTestBase.java new file mode 100644 index 0000000..e3d638b --- /dev/null +++ b/src/test/java/org/apache/commons/dbutils/handlers/columns/ColumnHandlerTestBase.java @@ -0,0 +1,36 @@ +package org.apache.commons.dbutils.handlers.columns; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import java.sql.ResultSet; + +import org.apache.commons.dbutils.ColumnHandler; +import org.junit.Test; +import org.mockito.Mock; + +public abstract class ColumnHandlerTestBase { + + @Mock + protected ResultSet rs; + protected final ColumnHandler handler; + protected final Class<?> matchingType; + + public ColumnHandlerTestBase(ColumnHandler handler, Class<?> matchingType) { + this.handler = handler; + this.matchingType = matchingType; + } + + @Test + public void testMatch() { + assertTrue(handler.match(matchingType)); + } + + @Test + public void testMatchNegative() { + assertFalse(handler.match(Integer.class)); + } + + @Test + public abstract void testApplyType() throws Exception; +} http://git-wip-us.apache.org/repos/asf/commons-dbutils/blob/7bb41746/src/test/java/org/apache/commons/dbutils/handlers/columns/DoubleColumnHandlerTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/commons/dbutils/handlers/columns/DoubleColumnHandlerTest.java b/src/test/java/org/apache/commons/dbutils/handlers/columns/DoubleColumnHandlerTest.java new file mode 100644 index 0000000..b6dbf38 --- /dev/null +++ b/src/test/java/org/apache/commons/dbutils/handlers/columns/DoubleColumnHandlerTest.java @@ -0,0 +1,37 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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.apache.commons.dbutils.handlers.columns; + +import static org.junit.Assert.assertEquals; +import static org.mockito.Mockito.when; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.runners.MockitoJUnitRunner; + +@RunWith(MockitoJUnitRunner.class) +public class DoubleColumnHandlerTest extends ColumnHandlerTestBase { + public DoubleColumnHandlerTest() { + super(new DoubleColumnHandler(), Double.class); + } + + @Test + public void testApplyType() throws Exception { + when(rs.getDouble(1)).thenReturn(Double.MIN_VALUE); + assertEquals(Double.class, handler.apply(rs, 1).getClass()); + } +} http://git-wip-us.apache.org/repos/asf/commons-dbutils/blob/7bb41746/src/test/java/org/apache/commons/dbutils/handlers/columns/FloatColumnHandlerTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/commons/dbutils/handlers/columns/FloatColumnHandlerTest.java b/src/test/java/org/apache/commons/dbutils/handlers/columns/FloatColumnHandlerTest.java new file mode 100644 index 0000000..b1dfc33 --- /dev/null +++ b/src/test/java/org/apache/commons/dbutils/handlers/columns/FloatColumnHandlerTest.java @@ -0,0 +1,37 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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.apache.commons.dbutils.handlers.columns; + +import static org.junit.Assert.assertEquals; +import static org.mockito.Mockito.when; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.runners.MockitoJUnitRunner; + +@RunWith(MockitoJUnitRunner.class) +public class FloatColumnHandlerTest extends ColumnHandlerTestBase { + public FloatColumnHandlerTest() { + super(new FloatColumnHandler(), Float.class); + } + + @Test + public void testApplyType() throws Exception { + when(rs.getFloat(1)).thenReturn(Float.MIN_VALUE); + assertEquals(Float.class, handler.apply(rs, 1).getClass()); + } +} http://git-wip-us.apache.org/repos/asf/commons-dbutils/blob/7bb41746/src/test/java/org/apache/commons/dbutils/handlers/columns/IntegerColumnHandlerTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/commons/dbutils/handlers/columns/IntegerColumnHandlerTest.java b/src/test/java/org/apache/commons/dbutils/handlers/columns/IntegerColumnHandlerTest.java new file mode 100644 index 0000000..c75893a --- /dev/null +++ b/src/test/java/org/apache/commons/dbutils/handlers/columns/IntegerColumnHandlerTest.java @@ -0,0 +1,43 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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.apache.commons.dbutils.handlers.columns; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.mockito.Mockito.when; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.runners.MockitoJUnitRunner; + +@RunWith(MockitoJUnitRunner.class) +public class IntegerColumnHandlerTest extends ColumnHandlerTestBase { + public IntegerColumnHandlerTest() { + super(new IntegerColumnHandler(), Integer.class); + } + + @Test + public void testMatchNegative() { + assertFalse(handler.match(Float.class)); + } + + @Test + public void testApplyType() throws Exception { + when(rs.getInt(1)).thenReturn(Integer.MIN_VALUE); + assertEquals(Integer.class, handler.apply(rs, 1).getClass()); + } +} http://git-wip-us.apache.org/repos/asf/commons-dbutils/blob/7bb41746/src/test/java/org/apache/commons/dbutils/handlers/columns/LongColumnHandlerTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/commons/dbutils/handlers/columns/LongColumnHandlerTest.java b/src/test/java/org/apache/commons/dbutils/handlers/columns/LongColumnHandlerTest.java new file mode 100644 index 0000000..0c96bdc --- /dev/null +++ b/src/test/java/org/apache/commons/dbutils/handlers/columns/LongColumnHandlerTest.java @@ -0,0 +1,37 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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.apache.commons.dbutils.handlers.columns; + +import static org.junit.Assert.assertEquals; +import static org.mockito.Mockito.when; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.runners.MockitoJUnitRunner; + +@RunWith(MockitoJUnitRunner.class) +public class LongColumnHandlerTest extends ColumnHandlerTestBase { + public LongColumnHandlerTest() { + super(new LongColumnHandler(), Long.class); + } + + @Test + public void testApplyType() throws Exception { + when(rs.getLong(1)).thenReturn(Long.MIN_VALUE); + assertEquals(Long.class, handler.apply(rs, 1).getClass()); + } +} http://git-wip-us.apache.org/repos/asf/commons-dbutils/blob/7bb41746/src/test/java/org/apache/commons/dbutils/handlers/columns/SQLXMLColumnHandlerTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/commons/dbutils/handlers/columns/SQLXMLColumnHandlerTest.java b/src/test/java/org/apache/commons/dbutils/handlers/columns/SQLXMLColumnHandlerTest.java new file mode 100644 index 0000000..629f863 --- /dev/null +++ b/src/test/java/org/apache/commons/dbutils/handlers/columns/SQLXMLColumnHandlerTest.java @@ -0,0 +1,43 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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.apache.commons.dbutils.handlers.columns; + +import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.when; + +import java.sql.SQLXML; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.runners.MockitoJUnitRunner; + +@RunWith(MockitoJUnitRunner.class) +public class SQLXMLColumnHandlerTest extends ColumnHandlerTestBase { + @Mock + private SQLXML sqlxml; + + public SQLXMLColumnHandlerTest() { + super(new SQLXMLColumnHandler(), SQLXML.class); + } + + @Test + public void testApplyType() throws Exception { + when(rs.getSQLXML(1)).thenReturn(sqlxml); + assertTrue(SQLXML.class.isAssignableFrom(handler.apply(rs, 1).getClass())); + } +} http://git-wip-us.apache.org/repos/asf/commons-dbutils/blob/7bb41746/src/test/java/org/apache/commons/dbutils/handlers/columns/ShortColumnHandlerTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/commons/dbutils/handlers/columns/ShortColumnHandlerTest.java b/src/test/java/org/apache/commons/dbutils/handlers/columns/ShortColumnHandlerTest.java new file mode 100644 index 0000000..71d8020 --- /dev/null +++ b/src/test/java/org/apache/commons/dbutils/handlers/columns/ShortColumnHandlerTest.java @@ -0,0 +1,37 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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.apache.commons.dbutils.handlers.columns; + +import static org.junit.Assert.assertEquals; +import static org.mockito.Mockito.when; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.runners.MockitoJUnitRunner; + +@RunWith(MockitoJUnitRunner.class) +public class ShortColumnHandlerTest extends ColumnHandlerTestBase { + public ShortColumnHandlerTest() { + super(new ShortColumnHandler(), Short.class); + } + + @Test + public void testApplyType() throws Exception { + when(rs.getShort(1)).thenReturn(Short.MIN_VALUE); + assertEquals(Short.class, handler.apply(rs, 1).getClass()); + } +} http://git-wip-us.apache.org/repos/asf/commons-dbutils/blob/7bb41746/src/test/java/org/apache/commons/dbutils/handlers/columns/StringColumnHandlerTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/commons/dbutils/handlers/columns/StringColumnHandlerTest.java b/src/test/java/org/apache/commons/dbutils/handlers/columns/StringColumnHandlerTest.java new file mode 100644 index 0000000..36aea31 --- /dev/null +++ b/src/test/java/org/apache/commons/dbutils/handlers/columns/StringColumnHandlerTest.java @@ -0,0 +1,37 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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.apache.commons.dbutils.handlers.columns; + +import static org.junit.Assert.assertEquals; +import static org.mockito.Mockito.when; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.runners.MockitoJUnitRunner; + +@RunWith(MockitoJUnitRunner.class) +public class StringColumnHandlerTest extends ColumnHandlerTestBase { + public StringColumnHandlerTest() { + super(new StringColumnHandler(), String.class); + } + + @Test + public void testApplyType() throws Exception { + when(rs.getString(1)).thenReturn("tester"); + assertEquals(String.class, handler.apply(rs, 1).getClass()); + } +} http://git-wip-us.apache.org/repos/asf/commons-dbutils/blob/7bb41746/src/test/java/org/apache/commons/dbutils/handlers/columns/TimestampColumnHandlerTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/commons/dbutils/handlers/columns/TimestampColumnHandlerTest.java b/src/test/java/org/apache/commons/dbutils/handlers/columns/TimestampColumnHandlerTest.java new file mode 100644 index 0000000..b8d19e0 --- /dev/null +++ b/src/test/java/org/apache/commons/dbutils/handlers/columns/TimestampColumnHandlerTest.java @@ -0,0 +1,40 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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.apache.commons.dbutils.handlers.columns; + +import static org.junit.Assert.assertEquals; +import static org.mockito.Mockito.when; + +import java.sql.Timestamp; +import java.util.Date; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.runners.MockitoJUnitRunner; + +@RunWith(MockitoJUnitRunner.class) +public class TimestampColumnHandlerTest extends ColumnHandlerTestBase { + public TimestampColumnHandlerTest() { + super(new TimestampColumnHandler(), Timestamp.class); + } + + @Test + public void testApplyType() throws Exception { + when(rs.getTimestamp(1)).thenReturn(new Timestamp(new Date().getTime())); + assertEquals(Timestamp.class, handler.apply(rs, 1).getClass()); + } +} http://git-wip-us.apache.org/repos/asf/commons-dbutils/blob/7bb41746/src/test/java/org/apache/commons/dbutils/handlers/properties/DatePropertyHandlerTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/commons/dbutils/handlers/properties/DatePropertyHandlerTest.java b/src/test/java/org/apache/commons/dbutils/handlers/properties/DatePropertyHandlerTest.java new file mode 100644 index 0000000..d3550ce --- /dev/null +++ b/src/test/java/org/apache/commons/dbutils/handlers/properties/DatePropertyHandlerTest.java @@ -0,0 +1,65 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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.apache.commons.dbutils.handlers.properties; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import java.sql.Time; +import java.sql.Timestamp; + +import org.junit.Before; +import org.junit.Test; + +public class DatePropertyHandlerTest { + private DatePropertyHandler handler; + + @Before + public void setUp() { + this.handler = new DatePropertyHandler(); + } + + @Test + public void testMatch() { + assertTrue(handler.match(java.sql.Date.class, new java.util.Date())); + assertTrue(handler.match(java.sql.Time.class, new java.util.Date())); + assertTrue(handler.match(java.sql.Timestamp.class, new java.util.Date())); + } + + @Test + public void testMatchNegative() { + assertFalse(handler.match(Float.class, null)); + assertFalse(handler.match(Float.class, new java.util.Date())); + } + + @Test + public void testApplyTypeOfDate() throws Exception { + assertEquals(java.sql.Date.class, handler.apply(java.sql.Date.class, new java.util.Date()).getClass()); + } + + @Test + public void testApplyTypeOfTime() throws Exception { + assertEquals(Time.class, handler.apply(java.sql.Time.class, new java.util.Date()).getClass()); + } + + @Test + public void testApplyTypeOfTimestamp() throws Exception { + Timestamp ts = new Timestamp(new java.util.Date().getTime()); + assertEquals(Timestamp.class, handler.apply(java.sql.Timestamp.class, ts).getClass()); + } +} http://git-wip-us.apache.org/repos/asf/commons-dbutils/blob/7bb41746/src/test/java/org/apache/commons/dbutils/handlers/properties/StringEnumPropertyHandlerTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/commons/dbutils/handlers/properties/StringEnumPropertyHandlerTest.java b/src/test/java/org/apache/commons/dbutils/handlers/properties/StringEnumPropertyHandlerTest.java new file mode 100644 index 0000000..8077343 --- /dev/null +++ b/src/test/java/org/apache/commons/dbutils/handlers/properties/StringEnumPropertyHandlerTest.java @@ -0,0 +1,44 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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.apache.commons.dbutils.handlers.properties; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import org.junit.Before; +import org.junit.Test; + +public class StringEnumPropertyHandlerTest { + private StringEnumPropertyHandler handler; + + @Before + public void setUp() { + this.handler = new StringEnumPropertyHandler(); + } + + @Test + public void testMatch() { + assertTrue(handler.match(TestEnum.class, "test")); + } + + @Test + public void testMatchNegative() { + assertFalse(handler.match(TestEnum.class, Double.valueOf(1))); + + assertFalse(handler.match(Integer.class, "")); + } +} http://git-wip-us.apache.org/repos/asf/commons-dbutils/blob/7bb41746/src/test/java/org/apache/commons/dbutils/handlers/properties/TestEnum.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/commons/dbutils/handlers/properties/TestEnum.java b/src/test/java/org/apache/commons/dbutils/handlers/properties/TestEnum.java new file mode 100644 index 0000000..bf42dfc --- /dev/null +++ b/src/test/java/org/apache/commons/dbutils/handlers/properties/TestEnum.java @@ -0,0 +1,21 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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.apache.commons.dbutils.handlers.properties; + +public enum TestEnum { + TESTER +}
