add tests for DatabaseTypeBuilderException move around some existing tests - 'pure' DDL strings in DDLParserTest (not from database)
Todo - create tests in DatabaseTypeBuilderTestSuite that setUp,
fetch and tearDown DDL from database
diff --git a/java/src/org/eclipse/persistence/tools/oracleddl/test/DDLParserTest.java b/java/src/org/eclipse/persistence/tools/oracleddl/test/DDLParserTest.java
index e0bfbdf..8dd0604 100644
--- a/java/src/org/eclipse/persistence/tools/oracleddl/test/DDLParserTest.java
+++ b/java/src/org/eclipse/persistence/tools/oracleddl/test/DDLParserTest.java
@@ -4,77 +4,29 @@
import java.io.IOException;
import java.io.InputStream;
import java.io.StringReader;
-import java.sql.CallableStatement;
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
//JUnit4 imports
import org.junit.BeforeClass;
-import org.junit.Ignore;
+//import org.junit.Ignore;
import org.junit.Test;
-import static org.junit.Assert.fail;
-import static junit.framework.Assert.assertTrue;
+import static junit.framework.Assert.assertEquals;
import static junit.framework.Assert.assertFalse;
+import static junit.framework.Assert.assertTrue;
//DDL parser imports
-import org.eclipse.persistence.tools.oracleddl.metadata.CompositeDatabaseType;
-import org.eclipse.persistence.tools.oracleddl.metadata.FunctionType;
-import org.eclipse.persistence.tools.oracleddl.metadata.PLSQLPackageType;
-import org.eclipse.persistence.tools.oracleddl.metadata.ProcedureType;
import org.eclipse.persistence.tools.oracleddl.metadata.TableType;
import org.eclipse.persistence.tools.oracleddl.parser.DDLParser;
import org.eclipse.persistence.tools.oracleddl.parser.ParseException;
-import org.eclipse.persistence.tools.oracleddl.util.DatabaseTypeBuilder;
import org.eclipse.persistence.tools.oracleddl.util.DatabaseTypesRepository;
import org.eclipse.persistence.tools.oracleddl.util.UnresolvedTypesVisitor;
public class DDLParserTest {
- static final String DATABASE_USERNAME_KEY = "db.user";
- static final String DATABASE_PASSWORD_KEY = "db.pwd";
- static final String DATABASE_URL_KEY = "db.url";
- static final String DATABASE_DRIVER_KEY = "db.driver";
- static final String DEFAULT_DATABASE_USERNAME = "scott";
- static final String DEFAULT_DATABASE_PASSWORD = "tiger";
- static final String DEFAULT_DATABASE_URL = "jdbc:oracle:thin:@localhost:1521:ORCL";
- static final String DEFAULT_DATABASE_DRIVER = "oracle.jdbc.OracleDriver";
-
- //fixtures
- static String username;
- static String password;
- static String url;
- static String driver;
- static Connection conn;
- static DDLParser parser = null;
- static DatabaseTypeBuilder typeBuilder = null;
+ //JUnit fixture(s)
+ static DDLParser parser = null;
@BeforeClass
- static public void setUp() throws ClassNotFoundException, SQLException {
- username = System.getProperty(DATABASE_USERNAME_KEY, DEFAULT_DATABASE_USERNAME);
- password = System.getProperty(DATABASE_PASSWORD_KEY, DEFAULT_DATABASE_PASSWORD);
- url = System.getProperty(DATABASE_URL_KEY, DEFAULT_DATABASE_URL);
- driver = System.getProperty(DATABASE_DRIVER_KEY, DEFAULT_DATABASE_DRIVER);
- Class.forName(driver);
- conn = DriverManager.getConnection(url, username, password);
- typeBuilder = new DatabaseTypeBuilder();
- /*
- CallableStatement callableStatement = conn.prepareCall(DBMS_METADATA_SESSION_TRANSFORM_STMT);
- boolean worked = true;
- String msg = "";
- try {
- callableStatement.execute();
- }
- catch (SQLException e) {
- worked = false;
- msg = e.getMessage();
- }
- if (!worked) {
- fail(msg);
- }
- */
+ static public void setUp() {
parser = new DDLParser(new InputStream() {
public int read() throws IOException {
return 0;
@@ -83,574 +35,117 @@
parser.setTypesRepository(new DatabaseTypesRepository());
}
- static String getDDL(String psSpec) {
- String ddl = null;
+ static final String EMPTY_TABLE = "CREATE TABLE EMPTY_TABLE();";
+ @Test
+ public void testEmptyTable() {
+ parser.ReInit(new StringReader(EMPTY_TABLE));
+ boolean worked = true;
+ @SuppressWarnings("unused") TableType tableType = null;
try {
- PreparedStatement ps = conn.prepareStatement(psSpec);
- ResultSet rs = ps.executeQuery();
- rs.next();
- ddl = rs.getString("RESULT").trim();
- try {
- rs.close();
- ps.close();
- }
- catch (Exception e) {
- e.printStackTrace();
- }
+ tableType = parser.parseTable();
}
- catch (SQLException e) {
- e.printStackTrace();
+ catch (ParseException pe) {
+ worked = false;
}
- if (ddl.endsWith("/")) {
- ddl = (String)ddl.subSequence(0, ddl.length()-1);
+ assertFalse("empty table should not parse", worked);
+ }
+
+ static final String CREATE_TABLE_PREFIX = "CREATE TABLE ";
+ static final String DUMMY_TABLE = "DUMMY_TABLE ( DUMMY VARCHAR2(1) );";
+ @Test
+ public void testDummyTable() {
+ parser.ReInit(new StringReader(CREATE_TABLE_PREFIX + DUMMY_TABLE));
+ boolean worked = true;
+ String message = "";
+ TableType tableType = null;
+ try {
+ tableType = parser.parseTable();
}
- return ddl;
+ catch (ParseException pe) {
+ message = pe.getMessage();
+ worked = false;
+ }
+ assertTrue("dummy table did not parse:\n" + message, worked);
+ UnresolvedTypesVisitor l = new UnresolvedTypesVisitor();
+ l.visit(tableType);
+ assertTrue("dummy table should not contain any unresolved column datatypes",
+ l.getUnresolvedTypes().isEmpty());
}
- static final String PACKAGE_NAME = "CURSOR_TEST";
- static final String DOT_NAME = "SCOTT.CURSOR_TEST";
- static final String QUOTED_DOT_NAME = "\"SCOTT\".\"CURSOR_TEST\"";
- static final String EMPTY_PACKAGE_PREFIX =
- "CREATE OR REPLACE PACKAGE ";
- static final String EMPTY_PACKAGE_BODY = " AS \n";
- static final String EMPTY_PACKAGE_SUFFIX =
- "END CURSOR_TEST;";
- @Ignore
+ static final String DUMMY_TABLE_SCHEMA = "SCOTT.";
@Test
- public void testEmptyPackage() {
- parser.setTypesRepository(new DatabaseTypesRepository());
- parser.ReInit(new StringReader(EMPTY_PACKAGE_PREFIX + PACKAGE_NAME +
- EMPTY_PACKAGE_BODY + EMPTY_PACKAGE_SUFFIX));
- //@SuppressWarnings("unused") PLSQLPackageType packageType = parsePackage(PACKAGE_NAME);
+ public void testDummyTable_WithSchema() {
+ parser.ReInit(new StringReader(CREATE_TABLE_PREFIX + DUMMY_TABLE_SCHEMA +
+ DUMMY_TABLE));
+ boolean worked = true;
+ String message = "";
+ TableType tableType = null;
+ try {
+ tableType = parser.parseTable();
+ }
+ catch (ParseException pe) {
+ message = pe.getMessage();
+ worked = false;
+ }
+ assertTrue("dummy table did not parse:\n" + message, worked);
+ UnresolvedTypesVisitor l = new UnresolvedTypesVisitor();
+ l.visit(tableType);
+ assertTrue("dummy table should not contain any unresolved column datatypes",
+ l.getUnresolvedTypes().isEmpty());
+ assertEquals("", DUMMY_TABLE_SCHEMA.subSequence(0, DUMMY_TABLE_SCHEMA.length()-1),
+ tableType.getSchema());
}
- @Ignore
+ static final String DUMMY_TABLE_QUOTED_SCHEMA = "\"SCOTT\".";
@Test
- public void testEmptyPackageDN() {
- parser.setTypesRepository(new DatabaseTypesRepository());
- parser.ReInit(new StringReader(EMPTY_PACKAGE_PREFIX + DOT_NAME +
- EMPTY_PACKAGE_BODY + EMPTY_PACKAGE_SUFFIX));
- //@SuppressWarnings("unused") PLSQLPackageType packageType = parsePackage(DOT_NAME);
- }
-
- @Ignore
- @Test
- public void testEmptyPackageQDN() {
- parser.setTypesRepository(new DatabaseTypesRepository());
- parser.ReInit(new StringReader(EMPTY_PACKAGE_PREFIX + QUOTED_DOT_NAME +
- EMPTY_PACKAGE_BODY + EMPTY_PACKAGE_SUFFIX));
- //@SuppressWarnings("unused") PLSQLPackageType packageType = parsePackage(DOT_NAME);
+ public void testDummyTable_WithQuotedSchema() {
+ parser.ReInit(new StringReader(CREATE_TABLE_PREFIX + DUMMY_TABLE_QUOTED_SCHEMA +
+ DUMMY_TABLE));
+ boolean worked = true;
+ String message = "";
+ TableType tableType = null;
+ try {
+ tableType = parser.parseTable();
+ }
+ catch (ParseException pe) {
+ message = pe.getMessage();
+ worked = false;
+ }
+ assertTrue("dummy table did not parse:\n" + message, worked);
+ UnresolvedTypesVisitor l = new UnresolvedTypesVisitor();
+ l.visit(tableType);
+ assertTrue("dummy table should not contain any unresolved column datatypes",
+ l.getUnresolvedTypes().isEmpty());
+ assertEquals("", DUMMY_TABLE_SCHEMA.subSequence(0, DUMMY_TABLE_SCHEMA.length()-1),
+ tableType.getSchema());
}
-
- static final String VARIABLE_DECLARATION =
- "urban_legend CONSTANT BOOLEAN := FALSE; -- PL/SQL-only data type\n";
- @Ignore
- @Test
- public void testVariableDeclaration() {
- parser.setTypesRepository(new DatabaseTypesRepository());
- parser.ReInit(new StringReader(EMPTY_PACKAGE_PREFIX + PACKAGE_NAME +
- EMPTY_PACKAGE_BODY + VARIABLE_DECLARATION + EMPTY_PACKAGE_SUFFIX));
- //@SuppressWarnings("unused") PLSQLPackageType packageType = parsePackage(PACKAGE_NAME);
- }
-
- static final String SIMPLE_RECORD_DECLARATION =
- "TYPE EREC IS RECORD (\n" +
- "FLAG PLS_INTEGER,\n" +
- "EMPNO NUMBER(4),\n" +
+
+ static final String NORMAL_TABLE =
+ " BONUS (\n" +
"ENAME VARCHAR2(10),\n" +
- "JOB VARCHAR2(9)\n" +
- ");";
- @Ignore
- @Test
- public void testSimpleRecordDeclaration() {
- parser.setTypesRepository(new DatabaseTypesRepository());
- parser.ReInit(new StringReader(EMPTY_PACKAGE_PREFIX + PACKAGE_NAME +
- EMPTY_PACKAGE_BODY + SIMPLE_RECORD_DECLARATION + EMPTY_PACKAGE_SUFFIX));
- //@SuppressWarnings("unused") PLSQLPackageType packageType = parsePackage(PACKAGE_NAME);
- }
-
- static final String COMPLEX_RECORD_DECLARATION =
- "TYPE EREC IS RECORD (\n" +
- "FLAG PLS_INTEGER,\n" +
- "EMPNO EMPNO%TYPE,\n" +
- "ENAME SCOTT.ENAME%TYPE,\n" +
- "JOB VARCHAR2(9)\n" +
+ "JOB VARCHAR2(9),\n" +
+ "SAL NUMBER,\n" +
+ "COMM NUMBER\n" +
");";
- @Ignore
@Test
- public void testComplexRecordDeclaration() {
- parser.setTypesRepository(new DatabaseTypesRepository());
- parser.ReInit(new StringReader(EMPTY_PACKAGE_PREFIX + PACKAGE_NAME +
- EMPTY_PACKAGE_BODY + COMPLEX_RECORD_DECLARATION + EMPTY_PACKAGE_SUFFIX));
- //@SuppressWarnings("unused") PLSQLPackageType packageType = parsePackage(PACKAGE_NAME);
- }
-
- static final String NESTED_RECORD_DECLARATION =
- "TYPE DREC IS RECORD (\n" +
- "DEPT NUMBER(4),\n" +
- "EMP EREC\n" +
- ");";
- @Ignore
- @Test
- public void testNestedRecordDeclaration() {
- parser.setTypesRepository(new DatabaseTypesRepository());
- parser.ReInit(new StringReader(EMPTY_PACKAGE_PREFIX + PACKAGE_NAME +
- EMPTY_PACKAGE_BODY + NESTED_RECORD_DECLARATION + EMPTY_PACKAGE_SUFFIX));
- //@SuppressWarnings("unused") PLSQLPackageType packageType = parsePackage(PACKAGE_NAME);
- }
-
- static final String WEAK_REF_CURSOR_DECLARATION =
- "TYPE rcursor IS REF CURSOR;";
- @Ignore
- @Test
- public void testWeakRefCursorDeclaration() {
- parser.setTypesRepository(new DatabaseTypesRepository());
- parser.ReInit(new StringReader(EMPTY_PACKAGE_PREFIX + PACKAGE_NAME +
- EMPTY_PACKAGE_BODY + WEAK_REF_CURSOR_DECLARATION + EMPTY_PACKAGE_SUFFIX));
- //@SuppressWarnings("unused") PLSQLPackageType packageType = parsePackage(PACKAGE_NAME);
- }
-
- static final String TYPED_REF_CURSOR_DECLARATION =
- "TYPE EREC IS RECORD (\n" +
- "FLAG PLS_INTEGER,\n" +
- "EMPNO NUMBER(4),\n" +
- "ENAME EMP.ENAME%TYPE,\n" +
- "JOB VARCHAR2(9)\n" +
- ");\n" +
- "TYPE EREC_CURSOR IS REF CURSOR RETURN EREC;";
- @Ignore
- @Test
- public void testTypedRefCursorDeclaration() {
- parser.setTypesRepository(new DatabaseTypesRepository());
- parser.ReInit(new StringReader(EMPTY_PACKAGE_PREFIX + PACKAGE_NAME +
- EMPTY_PACKAGE_BODY + TYPED_REF_CURSOR_DECLARATION + EMPTY_PACKAGE_SUFFIX));
- //@SuppressWarnings("unused") PLSQLPackageType packageType = parsePackage(PACKAGE_NAME);
- }
-
- static final String QUALCOMM_PACKAGE = "yms_pkg";
- static final String QUALCOMM_DECLARATION =
- "CREATE OR REPLACE PACKAGE " + QUALCOMM_PACKAGE + "\n" +
- "AS\n" +
- "\n" +
- " TYPE rMetadataRecord IS RECORD (\n" +
- " lot_id CLASSIFIED_TEST_DATA.lot_id%TYPE,\n" +
- " source_lot CLASSIFIED_TEST_DATA.source_lot_id%TYPE,\n" +
- " document_id DATA_FILE_LOG.document_id%TYPE,\n" +
- " supplier TRADING_PARTNER.TP_NAME%TYPE,\n" +
- " fab CLASSIFIED_TEST_DATA.fab%TYPE,\n" +
- " test_program CLASSIFIED_TEST_DATA.test_program%TYPE,\n" +
- " program_class CLASSIFIED_TEST_DATA.program_class%TYPE,\n" +
- " lot_type CLASSIFIED_TEST_DATA.lot_type%TYPE,\n" +
- " mpn CLASSIFIED_TEST_DATA.mpn%TYPE,\n" +
- " mcn CLASSIFIED_TEST_DATA.mcn%TYPE,\n" +
- " orig_start_timestamp CLASSIFIED_TEST_DATA.orig_start_timestamp%TYPE,\n" +
- " orig_end_timestamp CLASSIFIED_TEST_DATA.orig_end_timestamp%TYPE,\n" +
- " orig_publish_timestamp CLASSIFIED_TEST_DATA.orig_publish_timestamp%TYPE,\n" +
- " received_timestamp DATA_FILE_LOG.received_timestamp%TYPE,\n" +
- " data_type_name DATA_TYPE.data_type_name%TYPE,\n" +
- " file_format_name FILE_FORMAT.file_format_name%TYPE,\n" +
- " retest_code CLASSIFIED_TEST_DATA.retest_code%TYPE,\n" +
- " test_location CLASSIFIED_TEST_DATA.test_location%TYPE,\n" +
- " product CLASSIFIED_TEST_DATA.product%TYPE,\n" +
- " family CLASSIFIED_TEST_DATA.family%TYPE,\n" +
- " foundry CLASSIFIED_TEST_DATA.foundry%TYPE,\n" +
- " project CLASSIFIED_TEST_DATA.project%TYPE,\n" +
- " process CLASSIFIED_TEST_DATA.process%TYPE,\n" +
- " technology CLASSIFIED_TEST_DATA.technology%TYPE,\n" +
- " gdpw CLASSIFIED_TEST_DATA.gdpw%TYPE,\n" +
- " checksum CLASSIFIED_TEST_DATA.checksum%TYPE,\n" +
- " operation CLASSIFIED_TEST_DATA.operation%TYPE,\n" +
- " isReconciledData VARCHAR2(8),\n" +
- " package_count CLASSIFIED_TEST_DATA.package_count%TYPE,\n" +
- " total_bin_count CLASSIFIED_TEST_DATA.total_bin_count%TYPE,\n" +
- " overall_quantity_in CLASSIFIED_TEST_DATA.overall_quantity_in%TYPE,\n" +
- " overall_quantity_out CLASSIFIED_TEST_DATA.overall_quantity_out%TYPE,\n" +
- " tp_number TRADING_PARTNER.tp_number%TYPE,\n" +
- " equipment_type CLASSIFIED_TEST_DATA.equipment_type%TYPE,\n" +
- " tester_name CLASSIFIED_TEST_DATA.tester_name%TYPE,\n" +
- " tis_id CLASSIFIED_TEST_DATA.tis_id%TYPE,\n" +
- " testing_mode CLASSIFIED_TEST_DATA.testing_mode%TYPE,\n" +
- " data_type_for_classification DATA_FLOW.data_type%TYPE,\n" +
- " family_number CLASSIFIED_TEST_DATA.family_number%TYPE,\n" +
- " ttr_rule_guid TTR_RULE_DEFINITION.ttr_rule_guid%TYPE,\n" +
- " ttr_rule_version TTR_RULE_DEFINITION.ttr_rule_version%TYPE,\n" +
- " ttr_rule_name TTR_RULE_DEFINITION.ttr_rule_name%TYPE,\n" +
- " ttr_rule_creation_date CLASSIFIED_TTR_RULE_DATA.ttr_rule_creation_date%TYPE,\n" +
- " otmessage_type_name OTMESSAGE_TYPE.otmessage_type_name%TYPE,\n" +
- " otmessage_action_name OTMESSAGE_ACTION.otmessage_action_name%TYPE,\n" +
- " first_pass_total_good CLASSIFIED_MES_DATA.first_pass_total_good%TYPE,\n" +
- " first_pass_total_bad CLASSIFIED_MES_DATA.first_pass_total_bad%TYPE,\n" +
- " last_pass_total_good CLASSIFIED_MES_DATA.last_pass_total_good%TYPE,\n" +
- " last_pass_total_bad CLASSIFIED_MES_DATA.last_pass_total_bad%TYPE,\n" +
- " calculated_yield CLASSIFIED_MES_DATA.calculated_yield%TYPE,\n" +
- " ot_software_version ot_version.ot_software_version%TYPE,\n" +
- " ot_tester_version ot_version.ot_tester_version%TYPE,\n" +
- " ot_tester_type_name ot_tester_type.ot_tester_type_name%TYPE,\n" +
- " specification_version schema_specification.specification_version%TYPE,\n" +
- " schema schema_specification.schema%TYPE,\n" +
- " tp_type_name trading_partner_type.tp_type_name%TYPE\n" +
- " );\n" +
- "\n" +
- " TYPE rcmetadatacursor IS REF CURSOR\n" +
- " RETURN rmetadatarecord;\n" +
- "\n" +
- " FUNCTION get_metadata (\n" +
- " inprocessinstanceid data_file_log.process_instance_id%TYPE\n" +
- " )\n" +
- " RETURN rcmetadatacursor;\n" +
- "\n" +
- " FUNCTION is_reconciled_data (indataflowid data_flow.data_flow_id%TYPE := 3)\n" +
- " RETURN VARCHAR2;\n" +
- "\n" +
- "END yms_pkg;";
- @Ignore
- @Test
- public void testQualcommPackage() {
- parser.setTypesRepository(new DatabaseTypesRepository());
- parser.ReInit(new StringReader(QUALCOMM_DECLARATION));
- //@SuppressWarnings("unused") PLSQLPackageType packageType = parsePackage(QUALCOMM_PACKAGE);
- }
-
- @Ignore
- @Test
- public void testCursorTestPackageFromDatabase() {
- /*
- String ddlForPackage = getDDLForPackage(PACKAGE_NAME);
- parser.setTypesRepository(new DatabaseTypesRepository());
- parser.ReInit(new StringReader(ddlForPackage));
- @SuppressWarnings("unused") PLSQLPackageType packageType = parsePackage(DOT_NAME);
- */
- }
-
- static final String SOME_PACKAGE = "SOMEPACKAGE";
- @Ignore
- @Test
- public void testSomePackageFromDatabase() {
- /*
- String ddlForPackage = getDDLForPackage(SOME_PACKAGE);
- parser.setTypesRepository(new DatabaseTypesRepository());
- parser.ReInit(new StringReader(ddlForPackage));
- @SuppressWarnings("unused") PLSQLPackageType packageType = parsePackage(username.toUpperCase() + "." + SOME_PACKAGE);
- */
- }
-
- static final String ANOTHER_ADVANCED_DEMO_PACKAGE = "ANOTHER_ADVANCED_DEMO";
- @Ignore
- @Test
- public void testAnotherAdvancedDemoPackageFromDatabase() {
- /*
- String ddlForPackage = getDDLForPackage(ANOTHER_ADVANCED_DEMO_PACKAGE);
- parser.setTypesRepository(new DatabaseTypesRepository());
- parser.ReInit(new StringReader(ddlForPackage));
- @SuppressWarnings("unused") PLSQLPackageType packageType = parsePackage(username.toUpperCase() + "." + ANOTHER_ADVANCED_DEMO_PACKAGE);
- */
- }
-
- static final String ADVANCED_OBJECT_DEMO_PACKAGE = "ADVANCED_OBJECT_DEMO";
- @Ignore
- @Test
- public void testAdvancedObjectDemoPackageFromDatabase() {
- /*
- String ddlForPackage = getDDLForPackage(ADVANCED_OBJECT_DEMO_PACKAGE);
- parser.ReInit(new StringReader(ddlForPackage));
- @SuppressWarnings("unused") PLSQLPackageType packageType = parsePackage(username.toUpperCase() + "." + ADVANCED_OBJECT_DEMO_PACKAGE);
- */
- }
-
- static final String TEST_TYPES_PACKAGE = "TEST_TYPES";
- @Ignore
- @Test
- public void testTestTypesPackageFromDatabase() {
- /*
- String ddlForPackage = getDDLForPackage(TEST_TYPES_PACKAGE);
- parser.setTypesRepository(new DatabaseTypesRepository());
- parser.ReInit(new StringReader(ddlForPackage));
- @SuppressWarnings("unused") PLSQLPackageType packageType = parsePackage(username.toUpperCase() + "." + TEST_TYPES_PACKAGE);
- */
- }
-
- static final String LTBL_PACKAGE = "LTBL_PKG";
- @Ignore
- @Test
- public void testLTBLPackageFromDatabase() {
- /*
- String ddlForPackage = getDDLForPackage(LTBL_PACKAGE);
- parser.setTypesRepository(new DatabaseTypesRepository());
- parser.ReInit(new StringReader(ddlForPackage));
- @SuppressWarnings("unused") PLSQLPackageType packageType = parsePackage(username.toUpperCase() + "." + LTBL_PACKAGE);
- */
- }
-
- static final String TESMAN_PACKAGE = "TESMANPACK";
- @Ignore
- @Test
- public void testTesmanFromDatabase() {
- /*
- String ddlForPackage = getDDLForPackage(TESMAN_PACKAGE);
- parser.setTypesRepository(new DatabaseTypesRepository());
- parser.ReInit(new StringReader(ddlForPackage));
- @SuppressWarnings("unused") PLSQLPackageType packageType = parsePackage(username.toUpperCase() + "." + TESMAN_PACKAGE);
- */
- }
-
- static final String TOPLEVEL_PROCEDURE_BOOL_IN_TEST = "BOOL_IN_TEST";
- @Ignore
- @Test
- public void testTopLevelProcedure_BoolInTest() {
- /*
- String ddl = getDDLForProcedure(TOPLEVEL_PROCEDURE_BOOL_IN_TEST);
- parser.setTypesRepository(new DatabaseTypesRepository());
- parser.ReInit(new StringReader(ddl));
+ public void testNormalTable() {
+ parser.ReInit(new StringReader(CREATE_TABLE_PREFIX + NORMAL_TABLE));
boolean worked = true;
String message = "";
- @SuppressWarnings("unused")
- ProcedureType procedureType = null;
+ TableType tableType = null;
try {
- procedureType = parser.parseTopLevelProcedure();
+ tableType = parser.parseTable();
}
catch (ParseException pe) {
- //pe.printStackTrace();
message = pe.getMessage();
worked = false;
}
- assertTrue(TOPLEVEL_PROCEDURE_BOOL_IN_TEST + " did not parse correctly:\n" + message, worked);
- */
- }
-
- static final String TOPLEVEL_FUNCTION_BUILDTBL2 = "BUILDTBL2";
- @Ignore
- @Test
- public void testTopLevelFunction_BUILDTBL2() {
- /*
- String ddl = getDDLForFunction(TOPLEVEL_FUNCTION_BUILDTBL2);
- parser.setTypesRepository(new DatabaseTypesRepository());
- parser.ReInit(new StringReader(ddl));
- boolean worked = true;
- String message = "";
- @SuppressWarnings("unused") FunctionType functionType = null;
- try {
- functionType = parser.parseTopLevelFunction();
- }
- catch (ParseException pe) {
- //pe.printStackTrace();
- message = pe.getMessage();
- worked = false;
- }
- assertTrue(TOPLEVEL_FUNCTION_BUILDTBL2 + " did not parse correctly:\n" + message, worked);
- */
- }
-
- static final String TYPE_EMP_INFO = "EMP_INFO";
- @Ignore
- @Test
- public void testType_EMP_INFO() {
- /*
- String ddl = getDDLForType(TYPE_EMP_INFO);
- parser.setTypesRepository(new DatabaseTypesRepository());
- parser.ReInit(new StringReader(ddl));
- boolean worked = true;
- String message = "";
- @SuppressWarnings("unused") CompositeDatabaseType objectType = null;
- try {
- objectType = parser.parseType();
- }
- catch (ParseException pe) {
- //pe.printStackTrace();
- message = pe.getMessage();
- worked = false;
- }
- assertTrue(TYPE_EMP_INFO + " did not parse correctly:\n" + message, worked);
- */
- }
-
- static final String TYPE_SOMEPACKAGE_TBL1 = "SOMEPACKAGE_TBL1";
- @Ignore
- @Test
- public void testType_SOMEPACKAGE_TBL1() {
- /*
- String ddl = getDDLForType(TYPE_SOMEPACKAGE_TBL1);
- parser.setTypesRepository(new DatabaseTypesRepository());
- parser.ReInit(new StringReader(ddl));
- boolean worked = true;
- String message = "";
- @SuppressWarnings("unused") CompositeDatabaseType objectType = null;
- try {
- objectType = parser.parseType();
- }
- catch (ParseException pe) {
- //pe.printStackTrace();
- message = pe.getMessage();
- worked = false;
- }
- assertTrue(TYPE_SOMEPACKAGE_TBL1 + " did not parse correctly:\n" + message, worked);
- */
- }
-
- static final String TABLE_BONUS = "BONUS";
- @Test
- public void testTable_Bonus() {
- boolean worked = true;
- String message = "";
- TableType table = null;
- try {
- table = typeBuilder.buildTable(conn, TABLE_BONUS);
- }
- catch (ParseException pe) {
- //pe.printStackTrace();
- message = pe.getMessage();
- worked = false;
- }
- assertTrue(TABLE_BONUS + " did not parse correctly:\n" + message, worked);
+ assertTrue("normal table did not parse:\n" + message, worked);
UnresolvedTypesVisitor l = new UnresolvedTypesVisitor();
- l.visit(table);
- assertTrue(TABLE_BONUS + " table should not contain any unresolved column datatypes",
+ l.visit(tableType);
+ assertTrue("normal table should not contain any unresolved column datatypes",
l.getUnresolvedTypes().isEmpty());
- System.out.println(table.toString());
- /*
- String ddl = getDDLForTable(TABLE_BONUS);
- parser.setTypesRepository(new DatabaseTypesRepository());
- parser.ReInit(new StringReader(ddl));
- TableType table = null;
- try {
- table = parser.parseTable();
- }
- catch (ParseException pe) {
- //pe.printStackTrace();
- message = pe.getMessage();
- worked = false;
- }
- assertTrue(TABLE_BONUS + " did not parse correctly:\n" + message, worked);
- UnresolvedTypesVisitor l = new UnresolvedTypesVisitor();
- l.visit(table);
- assertTrue(TABLE_BONUS + " table should not contain any unresolved column datatypes",
- l.getUnresolvedTypes().isEmpty());
- System.out.println(table.toString());
- */
- }
-
- static final String TEMP_TABLE = "TAXABLE_EMP";
- @Ignore
- @Test
- public void testTempTable_TaxableEmp() {
- /*
- String ddl = getDDLForTable(TEMP_TABLE);
- parser.setTypesRepository(new DatabaseTypesRepository());
- parser.ReInit(new StringReader(ddl));
- boolean worked = true;
- String message = "";
- TableType table = null;
- try {
- table = parser.parseTable();
- }
- catch (ParseException pe) {
- //pe.printStackTrace();
- message = pe.getMessage();
- worked = false;
- }
- assertTrue(TEMP_TABLE + " did not parse correctly:\n" + message, worked);
- UnresolvedTypesVisitor l = new UnresolvedTypesVisitor();
- l.visit(table);
- assertTrue(TEMP_TABLE + " table should not contain any unresolved column datatypes",
- l.getUnresolvedTypes().isEmpty());
- System.out.println(table.toString());
- */
- }
-
- static final String TABLE_XR_VEE_ARRAY_EMP = "XR_VEE_ARRAY_EMP";
- @Ignore
- @Test
- public void testTable_XR_VEE_ARRAY_EMP() {
- /*
- String ddl = getDDLForTable(TABLE_XR_VEE_ARRAY_EMP);
- parser.setTypesRepository(new DatabaseTypesRepository());
- parser.ReInit(new StringReader(ddl));
- boolean worked = true;
- String message = "";
- TableType table = null;
- try {
- table = parser.parseTable();
- }
- catch (ParseException pe) {
- //pe.printStackTrace();
- message = pe.getMessage();
- worked = false;
- }
- assertTrue(TABLE_XR_VEE_ARRAY_EMP + " did not parse correctly:\n" + message, worked);
- UnresolvedTypesVisitor l = new UnresolvedTypesVisitor();
- l.visit(table);
- assertFalse(TABLE_XR_VEE_ARRAY_EMP + " table should contain unresolved column datatypes",
- l.getUnresolvedTypes().isEmpty());
- System.out.println(table.toString());
- */
- }
-
- static final String TABLE_SUBIMAGEINFO = "SUBIMAGEINFO";
- @Ignore
- @Test
- public void testTable_SUBIMAGEINFO() {
- /*
- String ddl = getDDLForTable(TABLE_SUBIMAGEINFO);
- parser.setTypesRepository(new DatabaseTypesRepository());
- parser.ReInit(new StringReader(ddl));
- boolean worked = true;
- String message = "";
- TableType table = null;
- try {
- table = (TableType)parser.parseTable();
- }
- catch (ParseException pe) {
- //pe.printStackTrace();
- message = pe.getMessage();
- worked = false;
- }
- assertTrue(TABLE_SUBIMAGEINFO + " did not parse correctly:\n" + message, worked);
- System.out.println(table.toString());
- */
+ //TODO - check each column's name, type
}
- static final String NESTED_TABLE_LTBL = "LTBL_PKG_LTBL_TAB";
- @Ignore
- @Test
- public void testNestedTable_LTBL_PKG_LTBL_TAB() {
- /*
- String ddl = getDDLForType(NESTED_TABLE_LTBL);
- parser.setTypesRepository(new DatabaseTypesRepository());
- parser.ReInit(new StringReader(ddl));
- boolean worked = true;
- String message = "";
- @SuppressWarnings("unused") CompositeDatabaseType tableType = null;
- try {
- tableType = parser.parseType();
- }
- catch (ParseException pe) {
- //pe.printStackTrace();
- message = pe.getMessage();
- worked = false;
- }
- assertTrue(NESTED_TABLE_LTBL + " did not parse correctly:\n" + message, worked);
- */
- }
-
- static final String VARRAY_TYPE = "EMP_INFO_ARRAY";
- @Ignore
- @Test
- public void testVarray_EMP_INFO_ARRAY() {
- /*
- String ddl = getDDLForType(VARRAY_TYPE);
- parser.setTypesRepository(new DatabaseTypesRepository());
- parser.ReInit(new StringReader(ddl));
- boolean worked = true;
- String message = "";
- @SuppressWarnings("unused") CompositeDatabaseType varrayType = null;
- try {
- varrayType = parser.parseType();
- }
- catch (ParseException pe) {
- //pe.printStackTrace();
- message = pe.getMessage();
- worked = false;
- }
- assertTrue(VARRAY_TYPE + " did not parse correctly:\n" + message, worked);
- */
- }
}
\ No newline at end of file
diff --git a/java/src/org/eclipse/persistence/tools/oracleddl/test/DatabaseTypeBuilderTestSuite.java b/java/src/org/eclipse/persistence/tools/oracleddl/test/DatabaseTypeBuilderTestSuite.java
new file mode 100644
index 0000000..09f040e
--- /dev/null
+++ b/java/src/org/eclipse/persistence/tools/oracleddl/test/DatabaseTypeBuilderTestSuite.java
@@ -0,0 +1,85 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
+ * which accompanies this distribution.
+ * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
+ * and the Eclipse Distribution License is available at
+ * http://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * Contributors:
+ * Mike Norman - June 10 2011, created DDL parser package
+ ******************************************************************************/
+package org.eclipse.persistence.tools.oracleddl.test;
+
+//javase imports
+import java.util.Properties;
+import java.util.TreeSet;
+
+//JUnit4 imports
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Ignore;
+import org.junit.Test;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertNotNull;
+
+//Oracleddl imports
+import org.eclipse.persistence.tools.oracleddl.util.DatabaseTypeBuilder;
+import org.eclipse.persistence.tools.oracleddl.util.DatabaseTypeBuilderException;
+
+public class DatabaseTypeBuilderTestSuite {
+
+ //fixtures
+ static DatabaseTypeBuilder dtBuilder = null;
+ static TreeSet<Object> expectedTransformsKeys = null;
+ @BeforeClass
+ public static void setUp() throws Exception {
+ dtBuilder = new DatabaseTypeBuilder();
+ expectedTransformsKeys = new TreeSet<Object>();
+ expectedTransformsKeys.add("BODY");
+ expectedTransformsKeys.add("CONSTRAINTS");
+ expectedTransformsKeys.add("CONSTRAINTS_AS_ALTER");
+ expectedTransformsKeys.add("PRETTY");
+ expectedTransformsKeys.add("REF_CONSTRAINTS");
+ expectedTransformsKeys.add("SEGMENT_ATTRIBUTES");
+ expectedTransformsKeys.add("SPECIFICATION");
+ expectedTransformsKeys.add("SQLTERMINATOR");
+ expectedTransformsKeys.add("STORAGE");
+ expectedTransformsKeys.add("TABLESPACE");
+ //TODO - need to send DDL down to database
+ }
+
+ @AfterClass
+ public static void tearDown() {
+ //TODO - cleanup DDL
+ }
+
+ @Test
+ public void testTransforms() {
+ boolean worked = true;
+ Properties transformProperties = null;
+ String msg = "";
+ try {
+ transformProperties = dtBuilder.getTransformProperties();
+ }
+ catch (DatabaseTypeBuilderException dtbe) {
+ worked = false;
+ msg = dtbe.getMessage();
+ }
+ assertTrue("did not get transforms properties\n\t" + msg, worked);
+ assertNotNull("transforms properties should never be null", transformProperties);
+ assertFalse("transforms properties should never be empty", transformProperties.isEmpty());
+
+ TreeSet<Object> transformsKeySet = new TreeSet<Object>(expectedTransformsKeys.comparator());
+ transformsKeySet.addAll(transformProperties.keySet());
+ assertTrue(expectedTransformsKeys.equals(transformsKeySet));
+ }
+
+ @Ignore
+ public void testDDLforTable() {
+ //TODO - get actual DDL from database:
+ }
+
+}
\ No newline at end of file
diff --git a/java/src/org/eclipse/persistence/tools/oracleddl/test/TestHelper.java b/java/src/org/eclipse/persistence/tools/oracleddl/test/TestHelper.java
new file mode 100644
index 0000000..755faa7
--- /dev/null
+++ b/java/src/org/eclipse/persistence/tools/oracleddl/test/TestHelper.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2011 Oracle. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
+ * which accompanies this distribution.
+ * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
+ * and the Eclipse Distribution License is available at
+ * http://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * Contributors:
+ * Mike Norman - June 10 2011, created DDL parser package
+ ******************************************************************************/
+package org.eclipse.persistence.tools.oracleddl.test;
+
+public class TestHelper {
+
+ static final String DATABASE_DRIVER = "oracle.jdbc.OracleDriver";
+ static final String DATABASE_USERNAME_KEY = "db.user";
+ static final String DEFAULT_DATABASE_USERNAME = "scott";
+ static final String DATABASE_PASSWORD_KEY = "db.pwd";
+ static final String DEFAULT_DATABASE_PASSWORD = "tiger";
+ static final String DATABASE_URL_KEY = "db.url";
+ static final String DEFAULT_DATABASE_URL = "jdbc:oracle:thin:@localhost:1521:ORCL";
+
+}
\ No newline at end of file