Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
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.java143
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());
+ }
}

Back to the top