Author: tfischer Date: Tue Oct 21 22:56:35 2014 New Revision: 1633481 URL: http://svn.apache.org/r1633481 Log: TORQUE-331 - test enum handling
Added: db/torque/torque4/trunk/torque-test/src/main/java/org/apache/torque/TestEnum.java db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/datatypes/EnumTest.java Modified: db/torque/torque4/trunk/torque-test/src/main/schema/test-schema.xml Added: db/torque/torque4/trunk/torque-test/src/main/java/org/apache/torque/TestEnum.java URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-test/src/main/java/org/apache/torque/TestEnum.java?rev=1633481&view=auto ============================================================================== --- db/torque/torque4/trunk/torque-test/src/main/java/org/apache/torque/TestEnum.java (added) +++ db/torque/torque4/trunk/torque-test/src/main/java/org/apache/torque/TestEnum.java Tue Oct 21 22:56:35 2014 @@ -0,0 +1,20 @@ +package org.apache.torque; + + +/** Predefines enum for testing enum handling in Columns. */ +public enum TestEnum +{ + A, + B, + C; + + public String getValue() + { + return toString(); + } + + public static TestEnum getByValue(final String arg) + { + return valueOf(arg); + } +} Modified: db/torque/torque4/trunk/torque-test/src/main/schema/test-schema.xml URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-test/src/main/schema/test-schema.xml?rev=1633481&r1=1633480&r2=1633481&view=diff ============================================================================== --- db/torque/torque4/trunk/torque-test/src/main/schema/test-schema.xml (original) +++ db/torque/torque4/trunk/torque-test/src/main/schema/test-schema.xml Tue Oct 21 22:56:35 2014 @@ -145,6 +145,7 @@ <column name="name" type="VARCHAR" size="50" /> <column name="version" type="INTEGER" version="true" javaType="object"/> </table> + <table name="optimistic_locking_simple" optimisticLockingMode="simpleSelect" interface="org.apache.torque.OptimisticLockingInterface" peerInterface="org.apache.torque.OptimisticLockingPeerInterface<org.apache.torque.test.dbobject.OptimisticLockingSimple>" @@ -155,4 +156,25 @@ <column name="name" type="VARCHAR" size="50" /> <column name="version" type="INTEGER" version="true" javaType="object"/> </table> + + <table name="ENUM_TABLE" + description="this table is used for testing enum values in columns"> + <column name="id" primaryKey="true" type="INTEGER" /> + <column name="varchar_column" type="VARCHAR" size="50"> + <enum-value value="x"/> + <enum-value value="y"/> + <enum-value value="z" javaName="ZZZ"/> + </column> + <column name="int_column" type="INTEGER" default="1" enumName="MyIntColumnEnum" javaType="object"> + <enum-value value="1"/> + <enum-value value="2" javaName="TWO"/> + <enum-value value="3"/> + </column> + <column name="predefined_enum_column" type="VARCHAR" size="50" enumName="org.apache.torque.TestEnum" /> + <column name="int_primitive_column" type="INTEGER" default="1" javaType="primitive"> + <enum-value value="1"/> + <enum-value value="2"/> + <enum-value value="3"/> + </column> + </table> </database> Added: db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/datatypes/EnumTest.java URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/datatypes/EnumTest.java?rev=1633481&view=auto ============================================================================== --- db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/datatypes/EnumTest.java (added) +++ db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/datatypes/EnumTest.java Tue Oct 21 22:56:35 2014 @@ -0,0 +1,160 @@ +package org.apache.torque.datatypes; + +/* + * 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. + */ + +import org.apache.torque.BaseDatabaseTestCase; +import org.apache.torque.TestEnum; +import org.apache.torque.TorqueException; +import org.apache.torque.criteria.Criteria; +import org.apache.torque.test.dbobject.EnumTable; +import org.apache.torque.test.dbobject.IntPrimitiveColumnEnum; +import org.apache.torque.test.dbobject.MyIntColumnEnum; +import org.apache.torque.test.dbobject.VarcharColumnEnum; +import org.apache.torque.test.peer.EnumTablePeer; + +/** + * Tests the enum data types. + * @version $Id: BooleanIntCharTest.java 1439295 2013-01-28 08:21:41Z tfischer $ + */ +public class EnumTest extends BaseDatabaseTestCase +{ + @Override + public void setUp() throws Exception + { + super.setUp(); + fillTables(); + } + + /** + * Checks whether we can read enum values. + * + * @throws Exception if the test fails + */ + public void testRead() throws Exception + { + // prepare + fillTables(); + + // execute + EnumTable enumTable = EnumTablePeer.retrieveByPK(1); + // verify + assertEquals(1, enumTable.getId()); + assertEquals(MyIntColumnEnum._1, enumTable.getIntColumn()); + assertEquals(IntPrimitiveColumnEnum._1, enumTable.getIntPrimitiveColumn()); + assertEquals(TestEnum.A, enumTable.getPredefinedEnumColumn()); + assertEquals(VarcharColumnEnum.X, enumTable.getVarcharColumn()); + + // execute + enumTable = EnumTablePeer.retrieveByPK(2); + // verify + assertEquals(2, enumTable.getId()); + assertEquals(MyIntColumnEnum.TWO, enumTable.getIntColumn()); + assertEquals(IntPrimitiveColumnEnum._2, enumTable.getIntPrimitiveColumn()); + assertEquals(TestEnum.B, enumTable.getPredefinedEnumColumn()); + assertEquals(VarcharColumnEnum.Y, enumTable.getVarcharColumn()); + } + + /** + * Checks whether we can update enum values. + * + * @throws Exception if the test fails + */ + public void testUpdate() throws Exception + { + // prepare + EnumTable enumTable = EnumTablePeer.retrieveByPK(1); + assertEquals(1, enumTable.getId()); + assertEquals(MyIntColumnEnum._1, enumTable.getIntColumn()); + assertEquals(IntPrimitiveColumnEnum._1, enumTable.getIntPrimitiveColumn()); + assertEquals(TestEnum.A, enumTable.getPredefinedEnumColumn()); + assertEquals(VarcharColumnEnum.X, enumTable.getVarcharColumn()); + + // execute + enumTable.setIntColumn(MyIntColumnEnum._3); + enumTable.setIntPrimitiveColumn(IntPrimitiveColumnEnum._3); + enumTable.setPredefinedEnumColumn(TestEnum.C); + enumTable.setVarcharColumn(VarcharColumnEnum.ZZZ); + enumTable.save(); + + // verify + enumTable = EnumTablePeer.retrieveByPK(1); + assertEquals(1, enumTable.getId()); + assertEquals(MyIntColumnEnum._3, enumTable.getIntColumn()); + assertEquals(IntPrimitiveColumnEnum._3, enumTable.getIntPrimitiveColumn()); + assertEquals(TestEnum.C, enumTable.getPredefinedEnumColumn()); + assertEquals(VarcharColumnEnum.ZZZ, enumTable.getVarcharColumn()); + } + + /** + * Checks whether we can select enum values. + * + * @throws Exception if the test fails + */ + public void testSelect() throws Exception + { + // prepare + Criteria criteria = new Criteria() + .where(EnumTablePeer.INT_COLUMN, MyIntColumnEnum._1.getValue()) + .and(EnumTablePeer.INT_PRIMITIVE_COLUMN, IntPrimitiveColumnEnum._1.getValue()) + .and(EnumTablePeer.PREDEFINED_ENUM_COLUMN, TestEnum.A.getValue()) + .and(EnumTablePeer.VARCHAR_COLUMN, VarcharColumnEnum.X.getValue()); + // execute + EnumTable enumTable = EnumTablePeer.doSelectSingleRecord(criteria); + // verify + assertEquals(1, enumTable.getId()); + + // prepare + criteria = new Criteria() + .where(EnumTablePeer.INT_COLUMN, MyIntColumnEnum._1) + .and(EnumTablePeer.INT_PRIMITIVE_COLUMN, IntPrimitiveColumnEnum._1) + .and(EnumTablePeer.PREDEFINED_ENUM_COLUMN, TestEnum.A) + .and(EnumTablePeer.VARCHAR_COLUMN, VarcharColumnEnum.X); + // execute + enumTable = EnumTablePeer.doSelectSingleRecord(criteria); + // verify + assertEquals(1, enumTable.getId()); + } + + /** + * Delete all previous data from the tested tables + * and re-inserts test data. + */ + private void fillTables() throws TorqueException + { + Criteria criteria = new Criteria(); + EnumTablePeer.doDelete(criteria); + + EnumTable enumTable = new EnumTable(); + enumTable.setId(1); + enumTable.setIntColumn(MyIntColumnEnum._1); + enumTable.setIntPrimitiveColumn(IntPrimitiveColumnEnum._1); + enumTable.setPredefinedEnumColumn(TestEnum.A); + enumTable.setVarcharColumn(VarcharColumnEnum.X); + enumTable.save(); + + enumTable = new EnumTable(); + enumTable.setId(2); + enumTable.setIntColumn(MyIntColumnEnum.TWO); + enumTable.setIntPrimitiveColumn(IntPrimitiveColumnEnum._2); + enumTable.setPredefinedEnumColumn(TestEnum.B); + enumTable.setVarcharColumn(VarcharColumnEnum.Y); + enumTable.save(); + } +} --------------------------------------------------------------------- To unsubscribe, e-mail: torque-dev-unsubscr...@db.apache.org For additional commands, e-mail: torque-dev-h...@db.apache.org