blob: 7f3d45644f4ea3f1d2e6dd2f2787477767b12880 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2011, 2014 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
* David McCann - July 2011, visit tests
******************************************************************************/
package org.eclipse.persistence.tools.oracleddl.test.databasetypebuilder;
//javase imports
import java.sql.Connection;
import java.util.List;
//JUnit4 imports
import org.junit.AfterClass;
import org.junit.BeforeClass;
//import org.junit.Ignore;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
//DDL imports
import org.eclipse.persistence.tools.oracleddl.metadata.ArgumentType;
import org.eclipse.persistence.tools.oracleddl.metadata.DatabaseType;
import org.eclipse.persistence.tools.oracleddl.metadata.FunctionType;
import org.eclipse.persistence.tools.oracleddl.metadata.ObjectType;
import org.eclipse.persistence.tools.oracleddl.metadata.PLSQLPackageType;
import org.eclipse.persistence.tools.oracleddl.metadata.PLSQLRecordType;
import org.eclipse.persistence.tools.oracleddl.metadata.ProcedureType;
import org.eclipse.persistence.tools.oracleddl.metadata.TableType;
import org.eclipse.persistence.tools.oracleddl.metadata.visit.UnresolvedTypesVisitor;
import org.eclipse.persistence.tools.oracleddl.parser.ParseException;
import org.eclipse.persistence.tools.oracleddl.test.AllTests;
import org.eclipse.persistence.tools.oracleddl.util.DatabaseTypeBuilder;
//testing imports
import static org.eclipse.persistence.tools.oracleddl.test.TestHelper.DATABASE_DDL_CREATE_KEY;
import static org.eclipse.persistence.tools.oracleddl.test.TestHelper.DEFAULT_DATABASE_DDL_CREATE;
import static org.eclipse.persistence.tools.oracleddl.test.TestHelper.DATABASE_DDL_DEBUG_KEY;
import static org.eclipse.persistence.tools.oracleddl.test.TestHelper.DEFAULT_DATABASE_DDL_DEBUG;
import static org.eclipse.persistence.tools.oracleddl.test.TestHelper.DATABASE_DDL_DROP_KEY;
import static org.eclipse.persistence.tools.oracleddl.test.TestHelper.DEFAULT_DATABASE_DDL_DROP;
import static org.eclipse.persistence.tools.oracleddl.test.TestHelper.buildConnection;
import static org.eclipse.persistence.tools.oracleddl.test.TestHelper.runDdl;
public class TypeResolutionTestSuite {
static final String CREATE_DDLRESOLVTEST_EMP_TABLE =
"CREATE TABLE DDLRESOLVTEST_EMP (" +
"\nEMPNO NUMERIC(4)," +
"\nENAME VARCHAR(10)," +
"\nJOB VARCHAR(9)," +
"\nMGR NUMERIC(4)," +
"\nHIREDATE DATE," +
"\nSAL DECIMAL(7,2)," +
"\nCOMM NUMERIC(7,2)," +
"\nDEPTNO NUMERIC(2)," +
"\nPRIMARY KEY (EMPNO)" +
"\n)";
static final String CREATE_DDLRESOLVTEST_TYPE1 =
"CREATE OR REPLACE TYPE DDLRESOLVTEST_TYPE1 AS OBJECT (" +
"\n\tACCT\tNUMBER," +
"\n\tCOUNTRY\tVARCHAR2(30)," +
"\n\tADDR_DIVISION\tVARCHAR2(30)," +
"\n\tSTATE\tVARCHAR2(30)" +
")";
static final String CREATE_DDLRESOLVTEST_TYPE2 =
"CREATE OR REPLACE TYPE DDLRESOLVTEST_TYPE2 AS OBJECT (" +
"\n\tPNR\tNUMBER," +
"\n\tCOMPANY\tVARCHAR2(30)," +
"\n\tSE\tVARCHAR2(30)," +
"\n\tSCRIP\tVARCHAR2(30)," +
"\n\tTT\tDDLRESOLVTEST_TYPE1" +
")";
static final String CREATE_DDLRESOLVTEST_TYPE3 =
"CREATE OR REPLACE TYPE DDLRESOLVTEST_TYPE3 AS VARRAY(2) OF DDLRESOLVTEST_TYPE2";
static final String CREATE_DDLRESOLVTEST_TYPE4 =
"CREATE OR REPLACE TYPE DDLRESOLVTEST_TYPE4 AS OBJECT (" +
"\n\tACCT\tNUMBER," +
"\n\tSTATE\tVARCHAR2(30)," +
"\nCONSTRUCTOR FUNCTION DDLRESOLVTEST_TYPE4(" +
"\n\tACCT\tNUMBER," +
"\n\tSTATE\tVARCHAR2) RETURN SELF AS RESULT" +
")";
static final String CREATE_DDLRESOLVTEST_TYPE4_BODY =
"CREATE OR REPLACE TYPE BODY DDLRESOLVTEST_TYPE4 AS " +
"\nCONSTRUCTOR FUNCTION DDLRESOLVTEST_TYPE4(" +
"\n\tACCT\tNUMBER," +
"\n\tSTATE\tVARCHAR2) RETURN SELF AS RESULT IS" +
"\n\tBEGIN" +
"\n\t\tSELF.ACCT := ACCT;" +
"\n\t\tSELF.STATE := STATE;" +
"\n\t\tRETURN;" +
"\n\tEND;" +
"\nEND;";
static final String DDLRESOLVTEST_TABLE1 = "DDLRESOLVTEST_TABLE1";
static final String CREATE_DDLRESOLVTEST_TABLE1 =
"CREATE TABLE " + DDLRESOLVTEST_TABLE1 + " (" +
"\n\tIDE\tNUMBER," +
"\n\tIDTT\tDDLRESOLVTEST_TYPE1" +
"\n)";
static final String CREATE_DDLRESOLVTEST_TABLE2 =
"CREATE TABLE DDLRESOLVTEST_TABLE2 (" +
"\n\tSRNO\tNUMBER," +
"\n\tDETAIL\tDDLRESOLVTEST_TYPE2" +
"\n)";
static final String CREATE_DDLRESOLVTEST_TABLE3 =
"CREATE TABLE DDLRESOLVTEST_TABLE3 (" +
"\n\tID\tINTEGER," +
"\n\tTT3\tDDLRESOLVTEST_TYPE3" +
"\n)";
static final String CREATE_DDLRESOLVTEST_REGION =
"CREATE OR REPLACE TYPE DDLRESOLVTEST_REGION AS OBJECT (" +
"\n\tREG_ID\tNUMBER(5)," +
"\n\tREG_NAME\tVARCHAR2(50)" +
"\n)";
static final String CREATE_DDLRESOLVTEST_EMP_ADDRESS =
"CREATE OR REPLACE TYPE DDLRESOLVTEST_EMP_ADDRESS AS OBJECT (" +
"\n\tSTREET\tVARCHAR2(100)," +
"\n\tSUBURB\tVARCHAR2(50)," +
"\n\tADDR_REGION\tDDLRESOLVTEST_REGION," +
"\n\tPOSTCODE\tINTEGER" +
"\n)";
static final String EMP_OBJECT_TYPE = "DDLRESOLVTEST_EMP_OBJECT";
static final String CREATE_EMP_OBJECT =
"CREATE OR REPLACE TYPE " + EMP_OBJECT_TYPE + " AS OBJECT (" +
"\n\tEMPLOYEE_ID\tNUMBER(8)," +
"\n\tADDRESS\tDDLRESOLVTEST_EMP_ADDRESS," +
"\n\tEMPLOYEE_NAME\tVARCHAR2(80)," +
"\n\tDATE_OF_HIRE\tDATE" +
"\n)";
static final String DDLRESOLVTEST_PACKAGE = "DDLRESOLVTEST_PACKAGE";
static final String CREATE_DDLRESOLVTEST_PACKAGE =
"CREATE OR REPLACE PACKAGE " + DDLRESOLVTEST_PACKAGE + " AS" +
"\n\tTYPE EMPREC IS RECORD ( " +
"\n\tEMPNO DDLRESOLVTEST_EMP.EMPNO%TYPE," +
"\n\tENAME DDLRESOLVTEST_EMP.ENAME%TYPE," +
"\n\tJOB DDLRESOLVTEST_EMP.JOB%TYPE," +
"\n\tMGR DDLRESOLVTEST_EMP.MGR%TYPE," +
"\n\tHIREDATE DDLRESOLVTEST_EMP.HIREDATE%TYPE," +
"\n\tSAL DDLRESOLVTEST_EMP.SAL%TYPE," +
"\n\tCOMM DDLRESOLVTEST_EMP.COMM%TYPE," +
"\n\tDEPTNO DDLRESOLVTEST_EMP.DEPTNO%TYPE" +
"\n\t);" +
"\n\tFUNCTION DDLRESOLVTESTFUNC17(PARAM1 IN INTEGER) RETURN DDLRESOLVTEST_TABLE2%ROWTYPE;" +
"\n\tPROCEDURE DDLRESOLVTESTPROC17(PARAM1 IN INTEGER, REC OUT DDLRESOLVTEST_TABLE2%ROWTYPE);" +
"\n\tPROCEDURE DDLRESOLVTESTPROC17b(OLDREC IN DDLRESOLVTEST_TABLE3%ROWTYPE, NEWREC OUT DDLRESOLVTEST_TABLE3%ROWTYPE);" +
"\n\tPROCEDURE EMP_TEST(E1 IN EMPREC, NAME IN VARCHAR2);" +
"\n\tPROCEDURE EMP_TEST2(NAME IN DDLRESOLVTEST_EMP.ENAME%TYPE);" +
"\n\tFUNCTION ECHOREGION(AREGION IN DDLRESOLVTEST_REGION) RETURN DDLRESOLVTEST_REGION;" +
"\n\tFUNCTION ECHOEMPADDRESS(ANEMPADDRESS IN DDLRESOLVTEST_EMP_ADDRESS) RETURN DDLRESOLVTEST_EMP_ADDRESS;" +
"\n\tFUNCTION ECHOEMPOBJECT(ANEMPOBJECT IN DDLRESOLVTEST_EMP_OBJECT) RETURN DDLRESOLVTEST_EMP_OBJECT;" +
"\nEND " + DDLRESOLVTEST_PACKAGE + ";";
static final String CREATE_DDLRESOLVTEST_PACKAGE_BODY =
"CREATE OR REPLACE PACKAGE BODY " + DDLRESOLVTEST_PACKAGE + " AS" +
"\n\tFUNCTION DDLRESOLVTESTFUNC17(PARAM1 IN INTEGER) RETURN DDLRESOLVTEST_TABLE2%ROWTYPE AS" +
"\n\tL_DATA1 DDLRESOLVTEST_TABLE2%ROWTYPE;" +
"\n\tCURSOR C_EMP(PARAMTEMP IN INTEGER) IS SELECT * FROM DDLRESOLVTEST_TABLE2 TE WHERE TE.SRNO=PARAMTEMP;" +
"\n\tBEGIN" +
"\n\tOPEN C_EMP(PARAM1);" +
"\n\tLOOP" +
"\n\tFETCH C_EMP INTO L_DATA1;" +
"\n\tEXIT WHEN C_EMP%NOTFOUND;" +
"\n\tEND LOOP;" +
"\n\tRETURN L_DATA1;" +
"\n\tEND DDLRESOLVTESTFUNC17;" +
"\n\tPROCEDURE DDLRESOLVTESTPROC17( PARAM1 IN INTEGER, REC OUT DDLRESOLVTEST_TABLE2%ROWTYPE) AS" +
"\n\tBEGIN" +
"\n\tREC := DDLRESOLVTESTFUNC17(PARAM1);" +
"\n\tEND DDLRESOLVTESTPROC17;" +
"\n\tPROCEDURE DDLRESOLVTESTPROC17b(OLDREC IN DDLRESOLVTEST_TABLE3%ROWTYPE, NEWREC OUT DDLRESOLVTEST_TABLE3%ROWTYPE) AS" +
"\n\tBEGIN" +
"\n\tNEWREC := OLDREC;" +
"\n\tEND DDLRESOLVTESTPROC17b;" +
"\n\tPROCEDURE EMP_TEST(E1 IN EMPREC, NAME IN VARCHAR2) AS" +
"\n\tBEGIN" +
"\n\tnull;" +
"\n\tEND EMP_TEST;" +
"\n\tPROCEDURE EMP_TEST2(NAME IN DDLRESOLVTEST_EMP.ENAME%TYPE) AS" +
"\n\tBEGIN" +
"\n\tnull;" +
"\n\tEND EMP_TEST2;" +
"\n\tFUNCTION ECHOREGION(AREGION IN DDLRESOLVTEST_REGION) RETURN DDLRESOLVTEST_REGION AS" +
"\n\tBEGIN" +
"\n\tRETURN AREGION;" +
"\n\tEND ECHOREGION;" +
"\n\tFUNCTION ECHOEMPADDRESS(ANEMPADDRESS IN DDLRESOLVTEST_EMP_ADDRESS) RETURN DDLRESOLVTEST_EMP_ADDRESS AS" +
"\n\tBEGIN" +
"\n\tRETURN ANEMPADDRESS;" +
"\n\tEND ECHOEMPADDRESS;" +
"\n\tFUNCTION ECHOEMPOBJECT(ANEMPOBJECT IN DDLRESOLVTEST_EMP_OBJECT) RETURN DDLRESOLVTEST_EMP_OBJECT AS" +
"\n\tBEGIN" +
"\n\tRETURN ANEMPOBJECT;" +
"\n\tEND ECHOEMPOBJECT;" +
"\nEND " + DDLRESOLVTEST_PACKAGE + ";";
static final String OTHER_PACKAGE = "DDLRESOLVTEST_PACKAGE2";
static final String CREATE_OTHER_PACKAGE =
"CREATE OR REPLACE PACKAGE " + OTHER_PACKAGE + " AS" +
"\n\tPROCEDURE SOMEPROC(E1 IN " + DDLRESOLVTEST_PACKAGE + "." + "EMPREC);" +
"\n\tFUNCTION GET_JOB(p_job_id IN VARCHAR2) RETURN DDLRESOLVTEST_TYPE4;" +
"\nEND " + OTHER_PACKAGE + ";";
static final String CREATE_OTHER_PACKAGE_BODY =
"CREATE OR REPLACE PACKAGE BODY " + OTHER_PACKAGE + " AS" +
"\n\tPROCEDURE SOMEPROC(E1 IN " + DDLRESOLVTEST_PACKAGE + "." + "EMPREC) AS" +
"\n\tBEGIN" +
"\n\tnull;" +
"\n\tEND SOMEPROC;" +
"\n\tFUNCTION GET_JOB(p_job_id IN VARCHAR2) RETURN DDLRESOLVTEST_TYPE4 IS" +
"\n\tresult DDLRESOLVTEST_TYPE4;" +
"\n\tACCT\tNUMBER;" +
"\n\tSTATE\tVARCHAR2(30);" +
"\n\tBEGIN" +
"\n\t\tRETURN NULL;" +
"\n\tEND GET_JOB;" +
"\nEND " + OTHER_PACKAGE + ";";
static final String DROP_OTHER_PACKAGE =
"DROP PACKAGE " + OTHER_PACKAGE;
static final String DROP_DDLRESOLVTEST_PACKAGE =
"DROP PACKAGE " + DDLRESOLVTEST_PACKAGE;
static final String DROP_EMP_OBJECT = "DROP TYPE " + EMP_OBJECT_TYPE;
static final String DROP_DDLRESOLVTEST_EMP_ADDRESS = "DROP TYPE DDLRESOLVTEST_EMP_ADDRESS";
static final String DROP_DDLRESOLVTEST_REGION = "DROP TYPE DDLRESOLVTEST_REGION";
static final String DROP_DDLRESOLVTEST_TABLE3 = "DROP TABLE DDLRESOLVTEST_TABLE3";
static final String DROP_DDLRESOLVTEST_TABLE2 = "DROP TABLE DDLRESOLVTEST_TABLE2";
static final String DROP_DDLRESOLVTEST_TABLE1 = "DROP TABLE DDLRESOLVTEST_TABLE1";
static final String DROP_DDLRESOLVTEST_EMP_TABLE = "DROP TABLE DDLRESOLVTEST_EMP";
static final String DROP_DDLRESOLVTEST_TYPE4 = "DROP TYPE DDLRESOLVTEST_TYPE4";
static final String DROP_DDLRESOLVTEST_TYPE3 = "DROP TYPE DDLRESOLVTEST_TYPE3";
static final String DROP_DDLRESOLVTEST_TYPE2 = "DROP TYPE DDLRESOLVTEST_TYPE2";
static final String DROP_DDLRESOLVTEST_TYPE1 = "DROP TYPE DDLRESOLVTEST_TYPE1";
//JUnit fixture(s)
static DatabaseTypeBuilder dtBuilder = DatabaseTypeBuilderTestSuite.dtBuilder;
static Connection conn = AllTests.conn;
static PLSQLPackageType ddlresolvtestPackage = null;
static boolean ddlCreate = false;
static boolean ddlDrop = false;
static boolean ddlDebug = false;
@BeforeClass
static public void setUp() {
try {
conn = buildConnection();
}
catch (Exception e) {
e.printStackTrace();
}
String ddlCreateProp = System.getProperty(DATABASE_DDL_CREATE_KEY, DEFAULT_DATABASE_DDL_CREATE);
if ("true".equalsIgnoreCase(ddlCreateProp)) {
ddlCreate = true;
}
String ddlDropProp = System.getProperty(DATABASE_DDL_DROP_KEY, DEFAULT_DATABASE_DDL_DROP);
if ("true".equalsIgnoreCase(ddlDropProp)) {
ddlDrop = true;
}
String ddlDebugProp = System.getProperty(DATABASE_DDL_DEBUG_KEY, DEFAULT_DATABASE_DDL_DEBUG);
if ("true".equalsIgnoreCase(ddlDebugProp)) {
ddlDebug = true;
}
if (ddlCreate) {
runDdl(conn, CREATE_DDLRESOLVTEST_EMP_TABLE, ddlDebug);
runDdl(conn, CREATE_DDLRESOLVTEST_TYPE1, ddlDebug);
runDdl(conn, CREATE_DDLRESOLVTEST_TYPE2, ddlDebug);
runDdl(conn, CREATE_DDLRESOLVTEST_TYPE3, ddlDebug);
runDdl(conn, CREATE_DDLRESOLVTEST_TYPE4, ddlDebug);
runDdl(conn, CREATE_DDLRESOLVTEST_TYPE4_BODY, ddlDebug);
runDdl(conn, CREATE_DDLRESOLVTEST_TABLE1, ddlDebug);
runDdl(conn, CREATE_DDLRESOLVTEST_TABLE2, ddlDebug);
runDdl(conn, CREATE_DDLRESOLVTEST_TABLE3, ddlDebug);
runDdl(conn, CREATE_DDLRESOLVTEST_REGION, ddlDebug);
runDdl(conn, CREATE_DDLRESOLVTEST_EMP_ADDRESS, ddlDebug);
runDdl(conn, CREATE_EMP_OBJECT, ddlDebug);
runDdl(conn, CREATE_DDLRESOLVTEST_PACKAGE, ddlDebug);
runDdl(conn, CREATE_DDLRESOLVTEST_PACKAGE_BODY, ddlDebug);
runDdl(conn, CREATE_OTHER_PACKAGE, ddlDebug);
runDdl(conn, CREATE_OTHER_PACKAGE_BODY, ddlDebug);
}
dtBuilder = new DatabaseTypeBuilder();
boolean worked = true;
String msg = null;
try {
ddlresolvtestPackage = dtBuilder.buildPackages(conn, null, DDLRESOLVTEST_PACKAGE).get(0);
}
catch (Exception e) {
worked = false;
msg = e.getMessage();
}
if (!worked) {
fail(msg);
}
}
@AfterClass
static public void tearDown() {
if (ddlDrop) {
runDdl(conn, DROP_OTHER_PACKAGE, ddlDebug);
runDdl(conn, DROP_DDLRESOLVTEST_PACKAGE, ddlDebug);
runDdl(conn, DROP_EMP_OBJECT, ddlDebug);
runDdl(conn, DROP_DDLRESOLVTEST_EMP_ADDRESS, ddlDebug);
runDdl(conn, DROP_DDLRESOLVTEST_REGION, ddlDebug);
runDdl(conn, DROP_DDLRESOLVTEST_TABLE3, ddlDebug);
runDdl(conn, DROP_DDLRESOLVTEST_TABLE2, ddlDebug);
runDdl(conn, DROP_DDLRESOLVTEST_TABLE1, ddlDebug);
runDdl(conn, DROP_DDLRESOLVTEST_EMP_TABLE, ddlDebug);
runDdl(conn, DROP_DDLRESOLVTEST_TYPE4, ddlDebug);
runDdl(conn, DROP_DDLRESOLVTEST_TYPE3, ddlDebug);
runDdl(conn, DROP_DDLRESOLVTEST_TYPE2, ddlDebug);
runDdl(conn, DROP_DDLRESOLVTEST_TYPE1, ddlDebug);
}
}
@Test
public void testUnresolvedTypeResolution() throws ParseException {
assertEquals("incorrect procedure name", DDLRESOLVTEST_PACKAGE , ddlresolvtestPackage.getPackageName());
UnresolvedTypesVisitor visitor = new UnresolvedTypesVisitor();
visitor.visit(ddlresolvtestPackage);
assertEquals(DDLRESOLVTEST_PACKAGE + " should not have any unresolved types",
0, visitor.getUnresolvedTypes().size());
}
@Test
public void testSame_DDLRESOLVTEST_TABLE2_ROWTYPE() {
FunctionType func1 = (FunctionType)ddlresolvtestPackage.getProcedures().get(0);
DatabaseType tesmanfunc17ReturnType = func1.getReturnArgument().getEnclosedType();
ProcedureType proc2 = ddlresolvtestPackage.getProcedures().get(1);
DatabaseType tesmanproc17OutArgType = proc2.getArguments().get(1).getEnclosedType();
assertSame(tesmanfunc17ReturnType, tesmanproc17OutArgType);
}
@Test
public void testSame_DDLRESOLVTEST_TABLE3_ROWTYPE() {
ProcedureType proc3 = ddlresolvtestPackage.getProcedures().get(2);
List<ArgumentType> proc3Args = proc3.getArguments();
DatabaseType oldrecDatabaseType = proc3Args.get(0).getEnclosedType();
DatabaseType newrecDatabaseType = proc3Args.get(1).getEnclosedType();
assertSame(oldrecDatabaseType, newrecDatabaseType);
}
@Test
public void testSame_EMPREC() {
PLSQLRecordType empRecType = (PLSQLRecordType)ddlresolvtestPackage.getTypes().get(0);
PLSQLRecordType empRecType2 = (PLSQLRecordType)ddlresolvtestPackage.getProcedures().get(3).
getArguments().get(0).getEnclosedType();
assertSame(empRecType, empRecType2);
}
@Test
public void testSame_EMPdotEMPNO_TYPE() {
PLSQLRecordType empRecType = (PLSQLRecordType)ddlresolvtestPackage.getTypes().get(0);
DatabaseType empDotEnamePcentTYPE1 = empRecType.getFields().get(1).getEnclosedType();
ArgumentType nameArg = ddlresolvtestPackage.getProcedures().get(4).getArguments().get(0);
DatabaseType empDotEnamePcentTYPE2 = nameArg.getEnclosedType();
assertSame(empDotEnamePcentTYPE1, empDotEnamePcentTYPE2);
}
@Test
public void testPackageRefersToGlobalTypes() {
FunctionType echoRegionProc = (FunctionType)ddlresolvtestPackage.getProcedures().get(5);
ArgumentType aRegion = echoRegionProc.getArguments().get(0);
ArgumentType returnRegion = echoRegionProc.getReturnArgument();
assertSame(aRegion.getEnclosedType(), returnRegion.getEnclosedType());
}
@Test
public void testObjectTypeRefersToGlobalTypes() {
boolean worked = true;
String msg = null;
ObjectType objectType = null;
try {
objectType = (ObjectType)dtBuilder.buildTypes(conn, null, EMP_OBJECT_TYPE).get(0);
}
catch (Exception e) {
worked = false;
msg = e.getMessage();
}
assertTrue(msg,worked);
UnresolvedTypesVisitor visitor = new UnresolvedTypesVisitor();
visitor.visit(objectType);
assertEquals(EMP_OBJECT_TYPE + " should not have any unresolved types",
0, visitor.getUnresolvedTypes().size());
}
@Test
public void testTableTypeRefersToGlobalTypes() {
boolean worked = true;
String msg = null;
TableType tableType = null;
try {
tableType = dtBuilder.buildTables(conn, null, DDLRESOLVTEST_TABLE1).get(0);
}
catch (Exception e) {
worked = false;
msg = e.getMessage();
}
assertTrue(msg,worked);
UnresolvedTypesVisitor visitor = new UnresolvedTypesVisitor();
visitor.visit(tableType);
assertEquals(DDLRESOLVTEST_TABLE1 + " should not have any unresolved types",
0, visitor.getUnresolvedTypes().size());
}
@Test
public void testPLSQLRecordTypeRefersToDifferentPackage() {
boolean worked = true;
String msg = null;
PLSQLPackageType otherPackage = null;
try {
otherPackage = dtBuilder.buildPackages(conn, null, OTHER_PACKAGE).get(0);
}
catch (Exception e) {
worked = false;
msg = e.getMessage();
}
assertTrue(msg,worked);
UnresolvedTypesVisitor visitor = new UnresolvedTypesVisitor();
visitor.visit(otherPackage);
assertEquals(OTHER_PACKAGE + " should not have any unresolved types",
0, visitor.getUnresolvedTypes().size());
}
}