You are viewing a plain text version of this content. The canonical link for it is here.
Posted to torque-dev@db.apache.org by tf...@apache.org on 2006/06/15 12:07:46 UTC
svn commit: r414531 [2/2] - in /db/torque:
generator/trunk/src/java/org/apache/torque/engine/database/model/
runtime/trunk/src/java/org/apache/torque/map/
runtime/trunk/src/java/org/apache/torque/om/ runtime/trunk/xdocs/reference/
site/trunk/xdocs/ tem...
Added: db/torque/test/trunk/test-project/src/java/org/apache/torque/map/DatabaseMapTest.java
URL: http://svn.apache.org/viewvc/db/torque/test/trunk/test-project/src/java/org/apache/torque/map/DatabaseMapTest.java?rev=414531&view=auto
==============================================================================
--- db/torque/test/trunk/test-project/src/java/org/apache/torque/map/DatabaseMapTest.java (added)
+++ db/torque/test/trunk/test-project/src/java/org/apache/torque/map/DatabaseMapTest.java Thu Jun 15 03:07:45 2006
@@ -0,0 +1,297 @@
+package org.apache.torque.map;
+
+import org.apache.torque.BaseRuntimeTestCase;
+import org.apache.torque.Torque;
+import org.apache.torque.TorqueException;
+
+/*
+ * Copyright 2001-2006 The Apache Software Foundation.
+ *
+ * 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.
+ */
+
+/**
+ * Test code for Database Map functions
+ *
+ * @author <a href="mailto:greg.monroe@dukece.com">Greg Monroe</a>
+ * @version $Id
+ */
+public class DatabaseMapTest extends BaseRuntimeTestCase
+{
+
+ public static final String TABLE_NAME1 = "Not_Used_Before_Map_Init";
+
+ public static final String DATABASE_NAME = "bookstore";
+
+ public static final String INVALID_DATABASE_NAME = "erotskoob";
+
+ public static final String TABLE_NAME2 = "After_NotUsedBeforeMapInit";
+
+ public static final String[] COLUMN_NAMES =
+ {
+ "ID", "ONE", "TWO", "THREE"
+ };
+
+ public DatabaseMapTest(String name)
+ {
+ super(name);
+ }
+
+ /**
+ * Test initializing the default database. <p> Assumptions: <ul> A table
+ * called NotUsedBeforeMapInit table exists in the default schema
+ * (bookstore)<br> This table has not been used by any other test prior to
+ * this test.<br> </ul>
+ */
+ public void testDatabaseMapInitialize() throws TorqueException
+ {
+ // Get default schema DB
+ DatabaseMap map = Torque.getDatabaseMap();
+ TableMap tMap = map.getTable(TABLE_NAME1);
+ assertTrue(
+ "Did not expect to find NotUsedBeforeMapInit table before " +
+ "initialize!",
+ tMap == null);
+ try
+ {
+ map.initialize();
+ }
+ catch (Exception e)
+ {
+ fail("The following error occured while initializing the " +
+ "database map, msg='"
+ + e.getMessage() + "'");
+ }
+ tMap = map.getTable(TABLE_NAME1);
+ assertTrue(
+ "Did not find table named NotUsedBeforeMapInit after " +
+ "initialization!",
+ tMap != null);
+ }
+
+ /**
+ * Test that XML column order is preserved in TableMap objects.
+ * <p>
+ * Assumptions:
+ * <ul>
+ * The default database is bookstore<br>
+ * The book table has columns ordered as in COLUMN_NAMES property<br>
+ * </ul>
+ *
+ * @throws TorqueException
+ */
+ public void testColumnOrder() throws TorqueException
+ {
+ DatabaseMap map = Torque.getDatabaseMap(DATABASE_NAME);
+ map.initialize();
+ TableMap tMap = map.getTable(TABLE_NAME1);
+ ColumnMap[] columns = tMap.getColumns();
+ assertTrue("TestColumnOrder: Did not get enough columns from table!",
+ columns.length >= COLUMN_NAMES.length);
+ for (int i = 0; i < COLUMN_NAMES.length; i++)
+ {
+ String cName = columns[i].getColumnName();
+ String expected = COLUMN_NAMES[i];
+ assertTrue("TableMap for " + TABLE_NAME1
+ + " did not preserve XML column order! Expected "
+ + expected + " but found " +
+ cName, cName.equals(expected));
+ }
+ }
+
+ /**
+ * Test that XML table order is preserved in DatabaseMap objects.
+ * <p>
+ * Assumptions:
+ * <ul>
+ * The default database is bookstore<br>
+ * TABLE_NAME1 is followed by TABLE_NAME2 in the array<br>
+ * </ul>
+ *
+ * @throws TorqueException
+ */
+ public void testTableOrder() throws TorqueException
+ {
+ DatabaseMap map = Torque.getDatabaseMap(DATABASE_NAME);
+ map.initialize();
+ TableMap[] tables = map.getTables();
+ boolean found1 = false;
+ int i;
+ for (i = 0; i < tables.length; i++)
+ {
+ String tName = tables[i].getName();
+ if (tName.equals(TABLE_NAME1))
+ {
+ found1 = true;
+ break;
+ }
+ }
+ assertTrue("XML Table order not preserved!\nDid not find table '"
+ + TABLE_NAME1 + "' in DatabaseMap.getTables() array!", found1);
+ assertTrue("XML Table order not preserved!\nDid not find table '"
+ + TABLE_NAME2 + "' after '" + TABLE_NAME1
+ + " in DatabaseMap.getTables() array!", TABLE_NAME2
+ .equals(tables[i + 1].getName()));
+ }
+
+ /**
+ * Test that XML table order is preserved in DatabaseMap objects.
+ * <p>
+ * Assumptions:
+ * <ul>
+ * The default database is bookstore<br>
+ * TABLE_NAME1 is followed by TABLE_NAME2 in the array<br>
+ * </ul>
+ *
+ * @throws TorqueException
+ */
+ public void testExternalSchemaTables() throws TorqueException
+ {
+ DatabaseMap map = Torque.getDatabaseMap(DATABASE_NAME);
+ map.initialize();
+
+ TableMap table = map.getTable("ext");
+ assertTrue("Did not find external schema table, 'ext'!",
+ table != null);
+
+ table = map.getTable("extext");
+ assertTrue("Did not find external schema table, 'extext'!",
+ table != null);
+ }
+
+ /**
+ * Test that various table properties get set correctly from the XML
+ */
+ public void testTableAttributes() throws TorqueException
+ {
+ DatabaseMap map = Torque.getDatabaseMap(DATABASE_NAME);
+ map.initialize();
+ TableMap table = map.getTable(TABLE_NAME1);
+
+ validateAttribute("TableMap Javaname", "UninitializedTable", table
+ .getJavaName());
+ validateAttribute("TableMap description", "A table description", table
+ .getDescription());
+ assertTrue("TableMap OM Class was null!", table.getOMClass() != null);
+ assertTrue("TableMap Peer Class was null!",
+ table.getPeerClass() != null);
+ }
+
+ /**
+ * Test that various column properties get set correctly from the XML
+ */
+ public void testColumnAttributes() throws TorqueException
+ {
+ DatabaseMap map = Torque.getDatabaseMap(DATABASE_NAME);
+ map.initialize();
+ TableMap table = map.getTable(TABLE_NAME1);
+
+ ColumnMap column = table.getColumn("ID");
+
+ validateAttribute("Column JavaName", "Id", column.getJavaName());
+ validateAttribute("Column description", "id column", column
+ .getDescription());
+
+ assertTrue(
+ "Column isPrimaryKey attribute returned false instead of true!",
+ column.isPrimaryKey());
+ assertTrue(
+ "Column isAutoIncrement attribute returned false instead of true!",
+ column.isAutoIncrement());
+ assertTrue(
+ "Column isNotNull attribute returned false instead of true!",
+ column.isNotNull());
+ assertTrue(
+ "Column isUsePrimitive attribute returned false instead of true!",
+ column.isUsePrimitive());
+ assertTrue("Column type attribute was not Integer!",
+ column.getType() instanceof Integer);
+
+ column = table.getColumn("ONE");
+ assertTrue(
+ "Column isProtected attribute returned false instead of true!",
+ column.isProtected());
+ assertTrue("Column size != 50", column.getSize() == 50);
+ validateAttribute("Column default", "unknown", column
+ .getDefault());
+
+ column = table.getColumn("THREE");
+ assertTrue("Column position attribute != 4",
+ column.getPosition() == 4);
+ assertTrue("Column isForeignKey attribute was false instead of true!",
+ column.isForeignKey());
+ validateAttribute("Column relatedTableName", "CIRCULAR_REFERENCE_A",
+ column.getRelatedTableName());
+ validateAttribute("Column relatedColumnName",
+ "CIRCULAR_REFERENCE_A_ID", column.getRelatedColumnName());
+ }
+
+ /**
+ * Test that Inheritance info is stored correctly
+ */
+ public void testInheritanceMapping() throws TorqueException
+ {
+ DatabaseMap map = Torque.getDatabaseMap(DATABASE_NAME);
+ map.initialize();
+ TableMap table = map.getTable(TABLE_NAME1);
+ assertTrue("Table isUseInheritance returned false!", table
+ .isUseInheritance());
+
+ ColumnMap column = table.getColumn("CLASS_NAME");
+
+ assertTrue("Column isUseInheritance returned false!", column
+ .isUseInheritance());
+
+ InheritanceMap[] inhArray = column.getInheritanceMaps();
+
+ assertTrue("Did not get 3 mappings back!", inhArray.length == 3);
+ InheritanceMap inh = column.getInheritanceMap("C");
+ assertTrue("Inheritance map did not preserve XML order!", inh.getKey()
+ .equals(inhArray[1].getKey()));
+ validateAttribute("Inheritance key", "C", inh.getKey());
+ validateAttribute("Inheritance className", "MapInheritanceChildC", inh
+ .getClassName());
+ validateAttribute("Inheritance extends",
+ "org.apache.torque.test.UninitializedTable", inh.getExtends());
+ }
+
+ /**
+ * Test for controlled error on getting invalid database
+ */
+ public void testInvalidDatabaseName() throws TorqueException
+ {
+ DatabaseMap map = Torque.getDatabaseMap(INVALID_DATABASE_NAME);
+ try
+ {
+ map.initialize();
+ }
+ catch (TorqueException e)
+ {
+ return;
+ }
+ fail("DatabaseMap.initialize() should fail if invalid DB name used!");
+ }
+
+ /**
+ * Validate that the attribute value matches
+ * @param name
+ */
+ protected void validateAttribute(String name,
+ String expected,
+ String result)
+ {
+ assertTrue(name + " attribute not set correctly!\n Expected '"
+ + expected + "' and got '" + result + "'", expected
+ .equals(result));
+ }
+}
Modified: db/torque/test/trunk/test-project/src/schema/test-schema.xml
URL: http://svn.apache.org/viewvc/db/torque/test/trunk/test-project/src/schema/test-schema.xml?rev=414531&r1=414530&r2=414531&view=diff
==============================================================================
--- db/torque/test/trunk/test-project/src/schema/test-schema.xml (original)
+++ db/torque/test/trunk/test-project/src/schema/test-schema.xml Thu Jun 15 03:07:45 2006
@@ -366,8 +366,8 @@
foreign="CIRCULAR_REFERENCE_A_ID"/>
</foreign-key>
</table>
-
- <!-- Torque OM generated code does not compile if bean generation is activated and a table references an other table several times -->
+
+ <!-- Torque OM generated code did not compile if bean generation is activated and a table references an other table several times -->
<table name="referenced" javaName="Referenced" description="Table referenced by several columns of an other table">
<column name="referenced_pk" javaName="referencedPK" required="true" primaryKey="true" type="VARCHAR" size="12"/>
<column name="other_information" javaName="otherInformation" type="VARCHAR" size="255"/>
@@ -388,5 +388,29 @@
<foreign-key foreignTable="referenced">
<reference local="reference_3" foreign="referenced_pk"/>
</foreign-key>
+ </table>
+
+<!-- Table for use by Database Map tests -->
+ <table name="Not_Used_Before_Map_Init" javaName="UninitializedTable"
+ description="A table description">
+ <column name="id" required="true" primaryKey="true" type="INTEGER"
+ description="id column" autoIncrement="true" />
+ <column name="one" required="true" type="VARCHAR" size="50" default="unknown" protected="true"/>
+ <column name="two" required="true" type="VARCHAR" size="50" />
+ <column name="three" required="true" type="INTEGER"/>
+ <column name="CLASS_NAME" inheritance="single" type="CHAR" size="1">
+ <inheritance key="B" class="MapInheritanceChildB" extends="org.apache.torque.test.UninitializedTable"/>
+ <inheritance key="C" class="MapInheritanceChildC" extends="org.apache.torque.test.UninitializedTable"/>
+ <inheritance key="D" class="MapInheritanceChildD" extends="org.apache.torque.test.MapInheritanceChildC"/>
+ </column>
+ <foreign-key foreignTable="CIRCULAR_REFERENCE_A">
+ <reference
+ local="three"
+ foreign="CIRCULAR_REFERENCE_A_ID"/>
+ </foreign-key>
+ </table>
+ <table name="After_NotUsedBeforeMapInit" javaName="AfterNotUsedBeforeMapInit">
+ <column name="id" required="true" primaryKey="true" type="INTEGER"
+ description="id column" autoIncrement="true"/>
</table>
</database>
---------------------------------------------------------------------
To unsubscribe, e-mail: torque-dev-unsubscribe@db.apache.org
For additional commands, e-mail: torque-dev-help@db.apache.org