Add test cases for nested record, collection with a record
diff --git a/java/src/org/eclipse/persistence/tools/oracleddl/test/ddlparser/PackageDDLTestSuite.java b/java/src/org/eclipse/persistence/tools/oracleddl/test/ddlparser/PackageDDLTestSuite.java
index 1d5812d..dedb57b 100644
--- a/java/src/org/eclipse/persistence/tools/oracleddl/test/ddlparser/PackageDDLTestSuite.java
+++ b/java/src/org/eclipse/persistence/tools/oracleddl/test/ddlparser/PackageDDLTestSuite.java
@@ -73,6 +73,14 @@
assertNull("empty package should have no types", packageType.getTypes());
}
+ /*
+ TYPE EREC IS RECORD(
+ FLAG PLS_INTEGER,
+ EMPNO NUMERIC,
+ ENAME VARCHAR2,
+ JOB VARCHAR2)
+ );
+ */
static final String SIMPLE_PACKAGE = "SIMPLE_PACKAGE";
static final String SIMPLE_TYPE = "EREC";
static final String FIELD1_NAME = "FLAG";
@@ -89,7 +97,7 @@
"\n" + FIELD1_NAME + " " + FIELD1_TYPE + "," +
"\n" + FIELD2_NAME + " " + FIELD2_TYPE + "," +
"\n" + FIELD3_NAME + " " + FIELD3_TYPE + "," +
- "\n" + FIELD4_NAME + " " + FIELD4_TYPE +
+ "\n" + FIELD4_NAME + " " + FIELD4_TYPE +
"\n);" +
"\nEND " + SIMPLE_PACKAGE + ";";
@Test
@@ -156,15 +164,15 @@
"\n" + NT1_FIELD3_NAME + " " + NT1_FIELD_TYPE + "," +
"\n" + NT1_FIELD4_NAME + " " + NT1_FIELD_TYPE + "," +
"\n" + NT1_FIELD5_NAME + " " + NT1_FIELD_TYPE + "," +
- "\n" + NT1_FIELD6_NAME + " " + NT1_FIELD_TYPE +
+ "\n" + NT1_FIELD6_NAME + " " + NT1_FIELD_TYPE +
"\n);" +
"\nTYPE " + NTYPE2 + " IS RECORD (" +
"\n" + NT2_FIELD1_NAME + " " + NT2_FIELD_TYPE + "," +
- "\n" + NT2_FIELD2_NAME + " " + NT2_FIELD_TYPE +
+ "\n" + NT2_FIELD2_NAME + " " + NT2_FIELD_TYPE +
"\n);" +
"\nEND " + NPACKAGE + ";";
@Test
- public void testNPackage() {
+ public void testPackageWithNestedRecords() {
parser.ReInit(new StringReader(CREATE_NPACKAGE));
boolean worked = true;
@SuppressWarnings("unused") PLSQLPackageType packageType = null;
@@ -198,4 +206,86 @@
assertEquals("ntype2 field2 has wrong name", NT2_FIELD2_NAME, fields.get(1).getFieldName());
assertEquals("ntype2 field1 has wrong type", NT2_FIELD_TYPE, fields.get(1).getTypeName());
}
+
+ //TYPE VCHAR_ARRAY IS TABLE OF VARCHAR2(20) INDEX BY BINARY_INTEGER;
+ static final String PACKAGE_WCOLLECTION = "PACKAGE_WCOLLECTION";
+ static final String PACKAGE_WCOLLECTION_NAME = "VCHAR_ARRAY";
+ static final String PACKAGE_WCOLLECTION_TYPE = "VARCHAR2(20)";
+ static final String PACKAGE_WCOLLECTION_INDEXBY = "BINARY_INTEGER";
+ static final String CREATE_PACKAGE_WCOLLECTION =
+ CREATE_PACKAGE_PREFIX + PACKAGE_WCOLLECTION + " AS " +
+ "\nTYPE " + PACKAGE_WCOLLECTION_NAME + " IS TABLE OF " +
+ PACKAGE_WCOLLECTION_TYPE + " INDEX BY " + PACKAGE_WCOLLECTION_INDEXBY + ";" +
+ "\nEND " + PACKAGE_WCOLLECTION + ";";
+ @Test
+ public void testPackageWithCollection() {
+ parser.ReInit(new StringReader(CREATE_PACKAGE_WCOLLECTION));
+ boolean worked = true;
+ @SuppressWarnings("unused") PLSQLPackageType packageType = null;
+ try {
+ packageType = parser.parsePLSQLPackage();
+ }
+ catch (ParseException pe) {
+ worked = false;
+ }
+ assertTrue("package with collection should parse", worked);
+ assertEquals("package with collection has wrong name", packageType.getPackageName(),
+ PACKAGE_WCOLLECTION);
+ assertNull("package with collection should have no procedures", packageType.getProcedures());
+ assertNotNull("package with collection should have types", packageType.getTypes());
+ assertEquals("package with collection should have exactly 1 type", 1,
+ packageType.getTypes().size());
+ PLSQLType t1 = packageType.getTypes().get(0);
+ assertEquals("collection type1 has wrong name", PACKAGE_WCOLLECTION_NAME, t1.getTypeName());
+ }
+
+ /*
+ TYPE BOOK_TYPE IS RECORD (
+ ISBN VARCHAR2(20)
+ ,TITLE VARCHAR2(2000)
+ ,AUTHOR VARCHAR2(2000)
+ ,PUBLISHER VARCHAR2(120)
+ ,PUBLISHED_ON DATE
+ );
+ TYPE BOOKS_TAB IS TABLE OF BOOK_TYPE;
+ */
+ static final String PACKAGE_WCOLLECTION_WRECORD = "PACKAGE_WCOLLECTION_WRECORD";
+ static final String PACKAGE_WCOLLECTION_WRECORD_TYPE1 = "BOOK_TYPE";
+ static final String PACKAGE_WCOLLECTION_WRECORD_TYPE1_FIELD1_NAME = "ISBN";
+ static final String PACKAGE_WCOLLECTION_WRECORD_TYPE1_FIELD1_TYPE = "VARCHAR2(20)";
+ static final String PACKAGE_WCOLLECTION_WRECORD_TYPE1_FIELD2_NAME = "TITLE";
+ static final String PACKAGE_WCOLLECTION_WRECORD_TYPE1_FIELD2_TYPE = "VARCHAR2(2000)";
+ static final String PACKAGE_WCOLLECTION_WRECORD_TYPE1_FIELD3_NAME = "AUTHOR";
+ static final String PACKAGE_WCOLLECTION_WRECORD_TYPE1_FIELD3_TYPE = "VARCHAR2(2000)";
+ static final String PACKAGE_WCOLLECTION_WRECORD_TYPE1_FIELD4_NAME = "PUBLISHER";
+ static final String PACKAGE_WCOLLECTION_WRECORD_TYPE1_FIELD4_TYPE = "VARCHAR2";
+ static final String PACKAGE_WCOLLECTION_WRECORD_TYPE1_FIELD5_NAME = "PUBLISHED_ON";
+ static final String PACKAGE_WCOLLECTION_WRECORD_TYPE1_FIELD5_TYPE = "DATE";
+ static final String PACKAGE_WCOLLECTION_WRECORD_NAME = "BOOKS_TAB";
+ static final String CREATE_PACKAGE_WCOLLECTION_WRECORD =
+ CREATE_PACKAGE_PREFIX + PACKAGE_WCOLLECTION_WRECORD + " AS " +
+ "\nTYPE " + PACKAGE_WCOLLECTION_WRECORD_TYPE1 + " IS RECORD (" +
+ "\n" + PACKAGE_WCOLLECTION_WRECORD_TYPE1_FIELD1_NAME + " " + PACKAGE_WCOLLECTION_WRECORD_TYPE1_FIELD1_TYPE + "," +
+ "\n" + PACKAGE_WCOLLECTION_WRECORD_TYPE1_FIELD2_NAME + " " + PACKAGE_WCOLLECTION_WRECORD_TYPE1_FIELD2_TYPE + "," +
+ "\n" + PACKAGE_WCOLLECTION_WRECORD_TYPE1_FIELD3_NAME + " " + PACKAGE_WCOLLECTION_WRECORD_TYPE1_FIELD3_TYPE + "," +
+ "\n" + PACKAGE_WCOLLECTION_WRECORD_TYPE1_FIELD4_NAME + " " + PACKAGE_WCOLLECTION_WRECORD_TYPE1_FIELD4_TYPE + "," +
+ "\n" + PACKAGE_WCOLLECTION_WRECORD_TYPE1_FIELD5_NAME + " " + PACKAGE_WCOLLECTION_WRECORD_TYPE1_FIELD5_TYPE +
+ "\n);" +
+ "\nTYPE " + PACKAGE_WCOLLECTION_WRECORD_NAME + " IS TABLE OF " +
+ PACKAGE_WCOLLECTION_WRECORD_TYPE1 + ";" +
+ "\nEND " + PACKAGE_WCOLLECTION_WRECORD + ";";
+ @Test
+ public void testPackageWithCollectionWithNestedRecord() {
+ parser.ReInit(new StringReader(CREATE_PACKAGE_WCOLLECTION_WRECORD));
+ boolean worked = true;
+ @SuppressWarnings("unused") PLSQLPackageType packageType = null;
+ try {
+ packageType = parser.parsePLSQLPackage();
+ }
+ catch (ParseException pe) {
+ worked = false;
+ }
+ assertTrue("package with collection with record should parse", worked);
+
+ }
}
\ No newline at end of file