diff options
Diffstat (limited to 'plugins/org.eclipse.net4j.db.tests/src/org/eclipse/net4j/db/tests/AbstractDBTest.java')
-rw-r--r-- | plugins/org.eclipse.net4j.db.tests/src/org/eclipse/net4j/db/tests/AbstractDBTest.java | 143 |
1 files changed, 99 insertions, 44 deletions
diff --git a/plugins/org.eclipse.net4j.db.tests/src/org/eclipse/net4j/db/tests/AbstractDBTest.java b/plugins/org.eclipse.net4j.db.tests/src/org/eclipse/net4j/db/tests/AbstractDBTest.java index 69d0a170d1..af98636a14 100644 --- a/plugins/org.eclipse.net4j.db.tests/src/org/eclipse/net4j/db/tests/AbstractDBTest.java +++ b/plugins/org.eclipse.net4j.db.tests/src/org/eclipse/net4j/db/tests/AbstractDBTest.java @@ -13,7 +13,10 @@ package org.eclipse.net4j.db.tests; import org.eclipse.net4j.db.DBType; import org.eclipse.net4j.db.DBUtil; import org.eclipse.net4j.db.IDBAdapter; +import org.eclipse.net4j.db.IDBConnection; import org.eclipse.net4j.db.IDBConnectionProvider; +import org.eclipse.net4j.db.IDBInstance; +import org.eclipse.net4j.db.IDBSchemaTransaction; import org.eclipse.net4j.db.ddl.IDBField; import org.eclipse.net4j.db.ddl.IDBIndex; import org.eclipse.net4j.db.ddl.IDBSchema; @@ -30,9 +33,11 @@ import java.util.Set; */ public abstract class AbstractDBTest extends AbstractOMTest { - protected IDBAdapter dbAdapter; + private IDBAdapter dbAdapter; - protected IDBConnectionProvider dbConnectionProvider; + private IDBConnectionProvider dbConnectionProvider; + + private Connection internalConnection; @Override protected void doSetUp() throws Exception @@ -46,44 +51,58 @@ public abstract class AbstractDBTest extends AbstractOMTest @Override protected void doTearDown() throws Exception { + if (internalConnection != null) + { + DBUtil.dropAllTables(internalConnection, null); + DBUtil.close(internalConnection); + internalConnection = null; + } + + dbConnectionProvider = null; + dbAdapter = null; } protected abstract IDBAdapter createDBAdapter(); protected abstract DataSource createDataSource(); - protected Connection getConnection() + private Connection getConnection() { - return dbConnectionProvider.getConnection(); + if (internalConnection == null) + { + internalConnection = dbConnectionProvider.getConnection(); + } + + return internalConnection; } - public void testDBTypes() throws Exception + public void _testDBTypes() throws Exception { - IDBSchema schema = DBUtil.createSchema("testDBTypes"); //$NON-NLS-1$ + IDBSchema schema = DBUtil.createSchema("testDBTypes"); DBType[] dbTypes = DBType.values(); int count = 0; int i = 0; for (DBType dbType : dbTypes) { - IDBTable table = schema.addTable("table_" + i); //$NON-NLS-1$ - table.addField("field", dbType); //$NON-NLS-1$ + IDBTable table = schema.addTable("table_" + i); + table.addField("field", dbType); ++count; if (dbAdapter.isTypeIndexable(dbType)) { - IDBTable idx_table = schema.addTable("idx_table" + i); //$NON-NLS-1$ - IDBField idx_field = idx_table.addField("field", dbType); //$NON-NLS-1$ + IDBTable idx_table = schema.addTable("idx_table" + i); + IDBField idx_field = idx_table.addField("field", dbType); idx_table.addIndex(IDBIndex.Type.NON_UNIQUE, idx_field); ++count; - IDBTable uni_table = schema.addTable("uni_table" + i); //$NON-NLS-1$ - IDBField uni_field = uni_table.addField("field", dbType); //$NON-NLS-1$ + IDBTable uni_table = schema.addTable("uni_table" + i); + IDBField uni_field = uni_table.addField("field", dbType); uni_table.addIndex(IDBIndex.Type.UNIQUE, uni_field); ++count; - IDBTable pk_table = schema.addTable("pk_table" + i); //$NON-NLS-1$ - IDBField pk_field = pk_table.addField("field", dbType); //$NON-NLS-1$ + IDBTable pk_table = schema.addTable("pk_table" + i); + IDBField pk_field = pk_table.addField("field", dbType); pk_table.addIndex(IDBIndex.Type.PRIMARY_KEY, pk_field); ++count; } @@ -91,37 +110,73 @@ public abstract class AbstractDBTest extends AbstractOMTest ++i; } - Set<IDBTable> tables = schema.create(dbAdapter, dbConnectionProvider); + Set<IDBTable> tables = schema.create(dbAdapter, getConnection()); assertEquals(count, tables.size()); } - // public void testEscapeStrings() throws Exception - // { - // IDBSchema schema = DBUtil.createSchema("testEscapeStrings"); //$NON-NLS-1$ - // IDBTable table = schema.addTable("testtable"); //$NON-NLS-1$ - // IDBField field = table.addField("strval", DBType.VARCHAR, 255); //$NON-NLS-1$ - // schema.create(dbAdapter, dbConnectionProvider); - // - // insertString(field, "My name is 'nobody', not body"); //$NON-NLS-1$ - // insertString(field, "a = 'hello'"); //$NON-NLS-1$ - // insertString(field, "'hello' == a"); //$NON-NLS-1$ - // insertString(field, "'hello'"); //$NON-NLS-1$ - // } - // - // private void insertString(IDBField field, String val) - // { - // Connection connection = getConnection(); - // IDBTable table = field.getTable(); - // - // try - // { - // DBUtil.insertRow(connection, dbAdapter, table, val); - // Object[] result = DBUtil.select(connection, (String)null, field); - // assertEquals(val, result[0]); - // } - // finally - // { - // DBUtil.update(connection, "DELETE FROM " + table); //$NON-NLS-1$ - // } - // } + public void testSchemaEmpty() throws Exception + { + IDBSchema schema = DBUtil.readSchema("test", getConnection()); + assertEquals(true, schema.isEmpty()); + } + + public void testSchemaAddition() throws Exception + { + IDBInstance dbInstance = DBUtil.createInstance(dbAdapter, dbConnectionProvider, "test"); + assertEquals(true, dbInstance.getDBSchema().isLocked()); + assertEquals(true, dbInstance.getDBSchema().isEmpty()); + + IDBConnection dbConnection = dbInstance.openDBConnection(); + IDBSchemaTransaction transaction = dbConnection.startSchemaTransaction(); + assertEquals(false, transaction.getDBSchema().isLocked()); + assertEquals(true, transaction.getDBSchema().isEmpty()); + assertEquals(dbInstance.getDBSchema().getName(), transaction.getDBSchema().getName()); + + IDBTable table1 = transaction.getDBSchema().addTable("table1"); + IDBField field11 = table1.addField("field1", DBType.INTEGER); + IDBField field12 = table1.addField("field2", DBType.VARCHAR, 64); + IDBField field13 = table1.addField("field3", DBType.BOOLEAN); + IDBIndex index11 = table1.addIndex("index1", IDBIndex.Type.PRIMARY_KEY, field11, field12); + IDBIndex index12 = table1.addIndex("index2", IDBIndex.Type.UNIQUE, field11, field12); + IDBIndex index13 = table1.addIndex("index3", IDBIndex.Type.NON_UNIQUE, field12); + + IDBTable table2 = transaction.getDBSchema().addTable("table2"); + IDBField field21 = table2.addField("field1", DBType.INTEGER); + IDBField field22 = table2.addField("field2", DBType.VARCHAR, 64); + IDBField field23 = table2.addField("field3", DBType.BOOLEAN); + IDBIndex index21 = table2.addIndex("index1", IDBIndex.Type.PRIMARY_KEY, field21, field22); + IDBIndex index22 = table2.addIndex("index2", IDBIndex.Type.UNIQUE, field21, field22); + IDBIndex index23 = table2.addIndex("index3", IDBIndex.Type.NON_UNIQUE, field22); + + transaction.commit(); + assertEquals(true, dbInstance.getDBSchema().isLocked()); + assertEquals(false, dbInstance.getDBSchema().isEmpty()); + assertEquals(2, dbInstance.getDBSchema().getTables().length); + + assertEquals(table1.getName(), dbInstance.getDBSchema().getTables()[0].getName()); + assertEquals(table1.getFieldCount(), dbInstance.getDBSchema().getTables()[0].getFieldCount()); + assertEquals(field11.getName(), dbInstance.getDBSchema().getTables()[0].getField(0).getName()); + assertEquals(field12.getName(), dbInstance.getDBSchema().getTables()[0].getField(1).getName()); + assertEquals(field13.getName(), dbInstance.getDBSchema().getTables()[0].getField(2).getName()); + assertEquals(table1.getIndexCount(), dbInstance.getDBSchema().getTables()[0].getIndexCount()); + assertEquals(index11.getName(), dbInstance.getDBSchema().getTables()[0].getIndex(0).getName()); + assertEquals(index11.getType(), dbInstance.getDBSchema().getTables()[0].getIndex(0).getType()); + assertEquals(index12.getName(), dbInstance.getDBSchema().getTables()[0].getIndex(1).getName()); + assertEquals(index12.getType(), dbInstance.getDBSchema().getTables()[0].getIndex(1).getType()); + assertEquals(index13.getName(), dbInstance.getDBSchema().getTables()[0].getIndex(2).getName()); + assertEquals(index13.getType(), dbInstance.getDBSchema().getTables()[0].getIndex(2).getType()); + + assertEquals(table2.getName(), dbInstance.getDBSchema().getTables()[1].getName()); + assertEquals(table2.getFieldCount(), dbInstance.getDBSchema().getTables()[1].getFieldCount()); + assertEquals(field21.getName(), dbInstance.getDBSchema().getTables()[1].getField(0).getName()); + assertEquals(field22.getName(), dbInstance.getDBSchema().getTables()[1].getField(1).getName()); + assertEquals(field23.getName(), dbInstance.getDBSchema().getTables()[1].getField(2).getName()); + assertEquals(table2.getIndexCount(), dbInstance.getDBSchema().getTables()[1].getIndexCount()); + assertEquals(index21.getName(), dbInstance.getDBSchema().getTables()[1].getIndex(0).getName()); + assertEquals(index21.getType(), dbInstance.getDBSchema().getTables()[1].getIndex(0).getType()); + assertEquals(index22.getName(), dbInstance.getDBSchema().getTables()[1].getIndex(1).getName()); + assertEquals(index22.getType(), dbInstance.getDBSchema().getTables()[1].getIndex(1).getType()); + assertEquals(index23.getName(), dbInstance.getDBSchema().getTables()[1].getIndex(2).getName()); + assertEquals(index23.getType(), dbInstance.getDBSchema().getTables()[1].getIndex(2).getType()); + } } |