blob: 8a9f2d6bc3b5b63b1b10979f9bd47509df5ae9ef [file] [log] [blame]
/*
* Copyright (c) 2012, 2020 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0,
* or the Eclipse Distribution License v. 1.0 which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
*/
// Contributors:
// Mike Norman: Jan 2012 - Initial implementation
package dbws.testing.shadowddlgeneration;
import static dbws.testing.DBWSTestSuite.DATABASE_DDL_CREATE_KEY;
import static dbws.testing.DBWSTestSuite.DATABASE_DDL_DEBUG_KEY;
import static dbws.testing.DBWSTestSuite.DATABASE_DDL_DROP_KEY;
import static dbws.testing.DBWSTestSuite.DATABASE_USERNAME_KEY;
import static dbws.testing.DBWSTestSuite.DEFAULT_DATABASE_DDL_CREATE;
import static dbws.testing.DBWSTestSuite.DEFAULT_DATABASE_DDL_DEBUG;
import static dbws.testing.DBWSTestSuite.DEFAULT_DATABASE_DDL_DROP;
import static dbws.testing.DBWSTestSuite.DEFAULT_DATABASE_USERNAME;
import static dbws.testing.DBWSTestSuite.buildConnection;
import static dbws.testing.DBWSTestSuite.removeLineTerminators;
import static dbws.testing.DBWSTestSuite.runDdl;
import static dbws.testing.shadowddlgeneration.oldjpub.Util.IS_PACKAGE;
import static org.eclipse.persistence.tools.dbws.Util.sqlMatch;
import static org.junit.Assert.assertEquals;
//javase imports
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
//EclipseLink imports
import org.eclipse.persistence.tools.dbws.oracle.ShadowDDLGenerator;
import org.eclipse.persistence.tools.oracleddl.metadata.PLSQLCollectionType;
import org.eclipse.persistence.tools.oracleddl.metadata.PLSQLPackageType;
import org.eclipse.persistence.tools.oracleddl.metadata.PLSQLRecordType;
import org.eclipse.persistence.tools.oracleddl.parser.ParseException;
import org.eclipse.persistence.tools.oracleddl.util.DatabaseTypeBuilder;
//java eXtension imports
//JUnit4 imports
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
//test imports
import dbws.testing.shadowddlgeneration.oldjpub.AttributeField;
import dbws.testing.shadowddlgeneration.oldjpub.MethodFilter;
import dbws.testing.shadowddlgeneration.oldjpub.PlsqlRecordType;
import dbws.testing.shadowddlgeneration.oldjpub.PlsqlTableType;
import dbws.testing.shadowddlgeneration.oldjpub.ProcedureMethod;
import dbws.testing.shadowddlgeneration.oldjpub.PublisherException;
import dbws.testing.shadowddlgeneration.oldjpub.SqlReflector;
import dbws.testing.shadowddlgeneration.oldjpub.SqlTypeWithMethods;
import dbws.testing.shadowddlgeneration.oldjpub.TypeClass;
public class ShadowDDLGenerationTestSuite {
static final String SHADOWDDLTEST_PACKAGE = "SHADOWDDLTEST";
static final String SHADOWDDLTEST_PROCEDURE = "P1";
static final String SHADOWDDLTEST_RECORD_TYPE = "NUM_RECORD";
static final String SHADOWDDLTEST_TABLE_TYPE = "NUM_TBL";
static final String SHADOWDDLTEST_TABLE_TYPE2 = "NUM_TBL2";
static final String SHADOWDDLTEST_TABLE_TYPE3 = "NONASSO_ARRAY";
static final String SHADOWDDLTEST_RECORD_TYPE2 = "NUM_RECORD2";
static final String SHADOWDDLTEST_RECORD_TYPE3 = "NUM_RECORD3";
static final String CREATE_SHADOWDDLTEST_PACKAGE =
"CREATE OR REPLACE PACKAGE " + SHADOWDDLTEST_PACKAGE + " AS" +
"\nTYPE " + SHADOWDDLTEST_TABLE_TYPE + " IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;" +
"\nTYPE " + SHADOWDDLTEST_RECORD_TYPE3 + " IS RECORD (" +
"\nF1 VARCHAR2(10)," +
"\nF2 NUMBER," +
"\nF3 DATE" +
"\n);" +
"\nTYPE " + SHADOWDDLTEST_TABLE_TYPE3 + " IS TABLE OF VARCHAR2(20);" +
"\nTYPE " + SHADOWDDLTEST_RECORD_TYPE + " IS RECORD (" +
"\nN1 INTEGER," +
"\nN2 SMALLINT," +
"\nN3 NUMERIC," +
"\nN4 DEC," +
"\nN5 DECIMAL," +
"\nN6 DECIMAL(7,2)," +
"\nN7 NUMBER," +
"\nN8 VARCHAR(10)," +
"\nN9 VARCHAR2(10)," +
"\nN10 CHAR," +
"\nN11 REAL," +
"\nN12 FLOAT," +
"\nN13 DOUBLE PRECISION," +
"\nN14 DATE," +
"\nN15 TIMESTAMP," +
"\nN16 CLOB," +
"\nN17 BLOB," +
"\nN18 LONG," +
"\nN19 LONG RAW," +
"\nN20 RAW(50)," +
"\nN21 BINARY_DOUBLE," +
"\nN22 BINARY_FLOAT," +
"\nN23 BINARY_INTEGER," +
"\nN24 BOOLEAN," +
"\nN25 NATURAL," +
"\nN26 PLS_INTEGER," +
"\nN27 POSITIVE," +
"\nN28 ROWID," +
"\nN29 SIGNTYPE," +
"\nN30 SIMPLE_INTEGER DEFAULT 0," +
"\nN31 SIMPLE_DOUBLE DEFAULT 0," +
"\nN32 SIMPLE_FLOAT DEFAULT 0," +
"\nN33 " + SHADOWDDLTEST_TABLE_TYPE + "," +
"\nN34 " + SHADOWDDLTEST_TABLE_TYPE3 + "," +
"\nN35 " + SHADOWDDLTEST_RECORD_TYPE3 +
"\n);" +
"\nTYPE " + SHADOWDDLTEST_TABLE_TYPE2 + " IS TABLE OF " + SHADOWDDLTEST_RECORD_TYPE + ";" +
"\nTYPE " + SHADOWDDLTEST_RECORD_TYPE2 + " IS RECORD (" +
"\nA1 " + SHADOWDDLTEST_TABLE_TYPE2 + "," +
"\nA2 " + SHADOWDDLTEST_RECORD_TYPE +
"\n);" +
"\nPROCEDURE " + SHADOWDDLTEST_PROCEDURE + "(NR2 IN " + SHADOWDDLTEST_RECORD_TYPE2 + ");" +
"\nEND " + SHADOWDDLTEST_PACKAGE + ";";
static final String CREATE_SHADOWDDLTEST_PACKAGE_BODY =
"CREATE OR REPLACE PACKAGE BODY " + SHADOWDDLTEST_PACKAGE + " AS" +
"\nPROCEDURE " + SHADOWDDLTEST_PROCEDURE + "(NR2 IN " + SHADOWDDLTEST_RECORD_TYPE2 + ") AS" +
"\nBEGIN" +
"\nnull;" +
"\nEND " + SHADOWDDLTEST_PROCEDURE + ";" +
"\nEND " + SHADOWDDLTEST_PACKAGE + ";";
static final String DROP_SHADOWDDLTEST_PACKAGE =
"DROP PACKAGE " + SHADOWDDLTEST_PACKAGE;
//JUnit 'fixture's
static boolean ddlCreate = false;
static boolean ddlDrop = false;
static boolean ddlDebug = false;
static String username = null;
static Connection conn = null;
static PLSQLPackageType shadowDDLTestPackage = null;
@BeforeClass
public static void setUp() throws ParseException, ClassNotFoundException, SQLException {
username = System.getProperty(DATABASE_USERNAME_KEY, DEFAULT_DATABASE_USERNAME);
conn = buildConnection();
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_SHADOWDDLTEST_PACKAGE, ddlDebug);
runDdl(conn, CREATE_SHADOWDDLTEST_PACKAGE_BODY, ddlDebug);
}
shadowDDLTestPackage = new DatabaseTypeBuilder().buildPackages(conn, username,
SHADOWDDLTEST_PACKAGE).get(0);
}
@AfterClass
public static void tearDown() {
if (ddlDrop) {
runDdl(conn, DROP_SHADOWDDLTEST_PACKAGE, ddlDebug);
}
}
@Test
public void testOldJPubDDLGeneration() throws SQLException, PublisherException {
SqlReflector sqlReflector = new SqlReflector(conn, username);
SqlTypeWithMethods methodType = (SqlTypeWithMethods)sqlReflector.addSqlUserType(
username.toUpperCase(), SHADOWDDLTEST_PACKAGE, IS_PACKAGE, true, 0, 0,
new MethodFilter() {
@Override
public boolean acceptMethod(ProcedureMethod method, boolean preApprove) {
String methodName = method.getName();
if (sqlMatch(SHADOWDDLTEST_PROCEDURE, methodName)) {
return true;
}
return false;
}
}
);
String numRecord2CreateDDL = null;
String numRecord2DropDDL = null;
String numRecordCreateDDL = null;
String numRecordDropDDL = null;
String numTblCreateDDL = null;
String numTblDropDDL = null;
String numTbl2CreateDDL = null;
String numTbl2DropDDL = null;
String numTbl3CreateDDL = null;
String numTbl3DropDDL = null;
String numRecord3CreateDDL = null;
String numRecord3DropDDL = null;
List<ProcedureMethod> methods = methodType.getDeclaredMethods();
for (TypeClass typeClass : methods.get(0).getParamTypes()) {
if (typeClass.getName().contains(SHADOWDDLTEST_RECORD_TYPE2)) {
PlsqlRecordType record2Type = (PlsqlRecordType)typeClass;
numRecord2CreateDDL = removeLineTerminators(record2Type.getSqlTypeDecl());
numRecord2DropDDL = removeLineTerminators(record2Type.getSqlTypeDrop());
List<AttributeField> record2Fields = record2Type.getFields(false);
TypeClass fieldA1 = getFieldFromRecords(record2Fields, "A1").getType();
PlsqlTableType numTbl2Type = (PlsqlTableType)fieldA1;
numTbl2CreateDDL = removeLineTerminators(numTbl2Type.getSqlTypeDecl());
numTbl2DropDDL = removeLineTerminators(numTbl2Type.getSqlTypeDrop());
TypeClass fieldA2 = getFieldFromRecords(record2Fields, "A2").getType();
PlsqlRecordType recordType = (PlsqlRecordType)fieldA2;
numRecordCreateDDL = removeLineTerminators(recordType.getSqlTypeDecl());
numRecordDropDDL = removeLineTerminators(recordType.getSqlTypeDrop());
List<AttributeField> recordFields = recordType.getFields(false);
TypeClass fieldN33 = getFieldFromRecords(recordFields, "N33").getType();
PlsqlTableType numTblType = (PlsqlTableType)fieldN33;
numTblCreateDDL = removeLineTerminators(numTblType.getSqlTypeDecl());
numTblDropDDL = removeLineTerminators(numTblType.getSqlTypeDrop());
TypeClass fieldN34 = getFieldFromRecords(recordFields, "N34").getType();
PlsqlTableType numTbl3Type = (PlsqlTableType)fieldN34;
numTbl3CreateDDL = removeLineTerminators(numTbl3Type.getSqlTypeDecl());
numTbl3DropDDL = removeLineTerminators(numTbl3Type.getSqlTypeDrop());
TypeClass fieldN35 = getFieldFromRecords(recordFields, "N35").getType();
PlsqlRecordType recordType3 = (PlsqlRecordType)fieldN35;
numRecord3CreateDDL = removeLineTerminators(recordType3.getSqlTypeDecl());
numRecord3DropDDL = removeLineTerminators(recordType3.getSqlTypeDrop());
}
}
assertEquals("generated create shadow DDL for " + SHADOWDDLTEST_RECORD_TYPE2 +
" does not match expected shadow DDL", numRecord2CreateDDL,
EXPECTED_NUMRECORD2_CREATE_SHADOWDDL);
assertEquals("generated drop shadow DDL for " + SHADOWDDLTEST_RECORD_TYPE2 +
" does not match expected shadow DDL", numRecord2DropDDL,
EXPECTED_NUMRECORD2_DROP_SHADOWDDL);
assertEquals("generated create shadow DDL for " + SHADOWDDLTEST_RECORD_TYPE +
" does not match expected shadow DDL", numRecordCreateDDL,
EXPECTED_NUMRECORD_CREATE_SHADOWDDL);
assertEquals("generated drop shadow DDL for " + SHADOWDDLTEST_RECORD_TYPE +
" does not match expected shadow DDL", numRecordDropDDL, EXPECTED_NUMRECORD_DROP_SHADOWDDL);
assertEquals("generated create shadow DDL for " + SHADOWDDLTEST_TABLE_TYPE +
" does not match expected shadow DDL", numTblCreateDDL, EXPECTED_NUMTBL_CREATE_SHADOWDDL);
assertEquals("generated drop shadow DDL for " + SHADOWDDLTEST_TABLE_TYPE +
" does not match expected shadow DDL", numTblDropDDL, EXPECTED_NUMTBL_DROP_SHADOWDDL);
assertEquals("generated create shadow DDL for " + SHADOWDDLTEST_TABLE_TYPE2 +
" does not match expected shadow DDL", numTbl2CreateDDL, EXPECTED_NUMTBL2_CREATE_SHADOWDDL);
assertEquals("generated drop shadow DDL for " + SHADOWDDLTEST_TABLE_TYPE2 +
" does not match expected shadow DDL", numTbl2DropDDL, EXPECTED_NUMTBL2_DROP_SHADOWDDL);
assertEquals("generated create shadow DDL for " + SHADOWDDLTEST_TABLE_TYPE3 +
" does not match expected shadow DDL", numTbl3CreateDDL, EXPECTED_NUMTBL3_CREATE_SHADOWDDL);
assertEquals("generated drop shadow DDL for " + SHADOWDDLTEST_TABLE_TYPE3 +
" does not match expected shadow DDL", numTbl3DropDDL, EXPECTED_NUMTBL3_DROP_SHADOWDDL);
assertEquals("generated create shadow DDL for " + SHADOWDDLTEST_RECORD_TYPE3 +
" does not match expected shadow DDL", numRecord3CreateDDL , EXPECTED_NUMRECORD3_CREATE_SHADOWDDL);
assertEquals("generated drop shadow DDL for " + SHADOWDDLTEST_RECORD_TYPE3 +
" does not match expected shadow DDL", numRecord3DropDDL, EXPECTED_NUMRECORD3_DROP_SHADOWDDL);
}
private AttributeField getFieldFromRecords(List<AttributeField> record2Fields, String name) {
for (AttributeField f: record2Fields) {
if (name.equals(f.getName())) {
return f;
}
}
return null;
}
static final String EXPECTED_NUMRECORD2_CREATE_SHADOWDDL =
"CREATE OR REPLACE TYPE " + SHADOWDDLTEST_PACKAGE + "_" + SHADOWDDLTEST_RECORD_TYPE2 + " AS OBJECT (" +
" A1 " + SHADOWDDLTEST_PACKAGE + "_" + SHADOWDDLTEST_TABLE_TYPE2 + "," + //original definition: NUM_TBL2
" A2 " + SHADOWDDLTEST_PACKAGE + "_" + SHADOWDDLTEST_RECORD_TYPE + //original definition: NUM_RECORD
");";
static final String EXPECTED_NUMRECORD2_DROP_SHADOWDDL =
"DROP TYPE " + SHADOWDDLTEST_PACKAGE + "_" + SHADOWDDLTEST_RECORD_TYPE2 + " FORCE;";
static final String EXPECTED_NUMRECORD_CREATE_SHADOWDDL =
"CREATE OR REPLACE TYPE " + SHADOWDDLTEST_PACKAGE + "_" + SHADOWDDLTEST_RECORD_TYPE + " AS OBJECT (" +
" N1 NUMBER(38)," + //original definition: INTEGER
" N2 NUMBER(38)," + //original definition: SMALLINT
" N3 NUMBER(38)," + //original definition: NUMERIC
" N4 NUMBER(38)," + //original definition: DEC
" N5 NUMBER(38)," + //original definition: DECIMAL
" N6 NUMBER(7, 2)," + //original definition: DECIMAL(7,2)
" N7 NUMBER," + //original definition: NUMBER
" N8 VARCHAR2(10)," + //original definition: VARCHAR(10)
" N9 VARCHAR2(10)," + //original definition: VARCHAR2(10)
" N10 CHAR(1)," + //original definition: CHAR
" N11 FLOAT(63)," + //original definition: REAL
" N12 FLOAT(126)," + //original definition: FLOAT
" N13 FLOAT(126)," + //original definition: DOUBLE PRECISION
" N14 DATE," + //original definition: DATE
" N15 TIMESTAMP," + //original definition: TIMESTAMP
" N16 CLOB," + //original definition: CLOB
" N17 BLOB," + //original definition: BLOB
" N18 VARCHAR2(32760)," + //original definition: LONG
" N19 RAW(32760)," + //original definition: LONG RAW
" N20 RAW(50)," + //original definition: RAW(50)
" N21 BINARY_DOUBLE," + //original definition: BINARY_DOUBLE
" N22 BINARY_FLOAT," + //original definition: BINARY_FLOAT
" N23 INTEGER," + //original definition: BINARY_INTEGER
" N24 INTEGER," + //original definition: BOOLEAN
" N25 INTEGER," + //original definition: NATURAL
" N26 INTEGER," + //original definition: PLS_INTEGER
" N27 INTEGER," + //original definition: POSITIVE
" N28 VARCHAR2(256)," + //original definition: ROWID
" N29 INTEGER," + //original definition: SIGNTYPE
" N30 INTEGER," + //original definition: SIMPLE_INTEGER
" N31 BINARY_DOUBLE," + //original definition: SIMPLE_DOUBLE
" N32 BINARY_FLOAT," + //original definition: SIMPLE_FLOAT
" N33 " + SHADOWDDLTEST_PACKAGE + "_" + SHADOWDDLTEST_TABLE_TYPE + "," +
" N34 " + SHADOWDDLTEST_PACKAGE + "_" + SHADOWDDLTEST_TABLE_TYPE3 + "," +
" N35 " + SHADOWDDLTEST_PACKAGE + "_" + SHADOWDDLTEST_RECORD_TYPE3 +
");";
static final String EXPECTED_NUMRECORD_DROP_SHADOWDDL =
"DROP TYPE " + SHADOWDDLTEST_PACKAGE + "_" + SHADOWDDLTEST_RECORD_TYPE + " FORCE;";
static final String EXPECTED_NUMTBL_CREATE_SHADOWDDL =
"CREATE OR REPLACE TYPE " + SHADOWDDLTEST_PACKAGE + "_" + SHADOWDDLTEST_TABLE_TYPE +
" AS TABLE OF NUMBER;";
static final String EXPECTED_NUMTBL_DROP_SHADOWDDL =
"DROP TYPE " + SHADOWDDLTEST_PACKAGE + "_" + SHADOWDDLTEST_TABLE_TYPE + " FORCE;";
static final String EXPECTED_NUMTBL2_CREATE_SHADOWDDL =
"CREATE OR REPLACE TYPE " + SHADOWDDLTEST_PACKAGE + "_" + SHADOWDDLTEST_TABLE_TYPE2 +
" AS TABLE OF " + SHADOWDDLTEST_PACKAGE + "_" + SHADOWDDLTEST_RECORD_TYPE + ";";
static final String EXPECTED_NUMTBL2_DROP_SHADOWDDL =
"DROP TYPE " + SHADOWDDLTEST_PACKAGE + "_" + SHADOWDDLTEST_TABLE_TYPE2 + " FORCE;";
static final String EXPECTED_NUMTBL3_CREATE_SHADOWDDL =
"CREATE OR REPLACE TYPE " + SHADOWDDLTEST_PACKAGE + "_" + SHADOWDDLTEST_TABLE_TYPE3 +
" AS TABLE OF VARCHAR2(20);";
static final String EXPECTED_NUMTBL3_DROP_SHADOWDDL =
"DROP TYPE " + SHADOWDDLTEST_PACKAGE + "_" + SHADOWDDLTEST_TABLE_TYPE3 + " FORCE;";
static final String EXPECTED_NUMRECORD3_CREATE_SHADOWDDL =
"CREATE OR REPLACE TYPE " + SHADOWDDLTEST_PACKAGE + "_" + SHADOWDDLTEST_RECORD_TYPE3 + " AS OBJECT (" +
" F1 VARCHAR2(10)," +
" F2 NUMBER," +
" F3 DATE" +
");";
static final String EXPECTED_NUMRECORD3_DROP_SHADOWDDL =
"DROP TYPE " + SHADOWDDLTEST_PACKAGE + "_" + SHADOWDDLTEST_RECORD_TYPE3 + " FORCE;";
@Test
public void testNewShadowDDLGeneration() {
ShadowDDLGenerator shadowDDLGenerator = new ShadowDDLGenerator(shadowDDLTestPackage);
PLSQLCollectionType collectionType = (PLSQLCollectionType)shadowDDLTestPackage.getTypes().get(0);
String numTblCreateDDL = removeLineTerminators(shadowDDLGenerator.getCreateDDLFor(collectionType));
String numTblDropDDL = removeLineTerminators(shadowDDLGenerator.getDropDDLFor(collectionType));
PLSQLRecordType recordType3 = (PLSQLRecordType)shadowDDLTestPackage.getTypes().get(1);
String numRecord3CreateDDL = removeLineTerminators(shadowDDLGenerator.getCreateDDLFor(recordType3));
String numRecord3DropDDL = removeLineTerminators(shadowDDLGenerator.getDropDDLFor(recordType3));
PLSQLCollectionType collectionType3 = (PLSQLCollectionType)shadowDDLTestPackage.getTypes().get(2);
String numTbl3CreateDDL = removeLineTerminators(shadowDDLGenerator.getCreateDDLFor(collectionType3));
String numTbl3DropDDL = removeLineTerminators(shadowDDLGenerator.getDropDDLFor(collectionType3));
PLSQLRecordType recordType = (PLSQLRecordType)shadowDDLTestPackage.getTypes().get(3);
String numRecordCreateDDL = removeLineTerminators(shadowDDLGenerator.getCreateDDLFor(recordType));
String numRecordDropDDL = removeLineTerminators(shadowDDLGenerator.getDropDDLFor(recordType));
PLSQLCollectionType collectionType2 = (PLSQLCollectionType)shadowDDLTestPackage.getTypes().get(4);
String numTbl2CreateDDL = removeLineTerminators(shadowDDLGenerator.getCreateDDLFor(collectionType2));
String numTbl2DropDDL = removeLineTerminators(shadowDDLGenerator.getDropDDLFor(collectionType2));
PLSQLRecordType recordType2 = (PLSQLRecordType)shadowDDLTestPackage.getTypes().get(5);
String numRecord2CreateDDL = removeLineTerminators(shadowDDLGenerator.getCreateDDLFor(recordType2));
String numRecord2DropDDL = removeLineTerminators(shadowDDLGenerator.getDropDDLFor(recordType2));
assertEquals("generated create shadow DDL for " + SHADOWDDLTEST_RECORD_TYPE2 +
" does not match expected shadow DDL", numRecord2CreateDDL,
EXPECTED_NUMRECORD2_CREATE_SHADOWDDL);
assertEquals("generated drop shadow DDL for " + SHADOWDDLTEST_RECORD_TYPE2 +
" does not match expected shadow DDL", numRecord2DropDDL,
EXPECTED_NUMRECORD2_DROP_SHADOWDDL);
assertEquals("generated create shadow DDL for " + SHADOWDDLTEST_RECORD_TYPE +
" does not match expected shadow DDL", numRecordCreateDDL,
EXPECTED_NUMRECORD_CREATE_SHADOWDDL);
assertEquals("generated drop shadow DDL for " + SHADOWDDLTEST_RECORD_TYPE +
" does not match expected shadow DDL", numRecordDropDDL, EXPECTED_NUMRECORD_DROP_SHADOWDDL);
assertEquals("generated create shadow DDL for " + SHADOWDDLTEST_TABLE_TYPE +
" does not match expected shadow DDL", numTblCreateDDL, EXPECTED_NUMTBL_CREATE_SHADOWDDL);
assertEquals("generated drop shadow DDL for " + SHADOWDDLTEST_TABLE_TYPE +
" does not match expected shadow DDL", numTblDropDDL, EXPECTED_NUMTBL_DROP_SHADOWDDL);
assertEquals("generated create shadow DDL for " + SHADOWDDLTEST_TABLE_TYPE2 +
" does not match expected shadow DDL", numTbl2CreateDDL, EXPECTED_NUMTBL2_CREATE_SHADOWDDL);
assertEquals("generated drop shadow DDL for " + SHADOWDDLTEST_TABLE_TYPE2 +
" does not match expected shadow DDL", numTbl2DropDDL, EXPECTED_NUMTBL2_DROP_SHADOWDDL);
assertEquals("generated create shadow DDL for " + SHADOWDDLTEST_TABLE_TYPE3 +
" does not match expected shadow DDL", numTbl3CreateDDL, EXPECTED_NUMTBL3_CREATE_SHADOWDDL);
assertEquals("generated drop shadow DDL for " + SHADOWDDLTEST_TABLE_TYPE3 +
" does not match expected shadow DDL", numTbl3DropDDL, EXPECTED_NUMTBL3_DROP_SHADOWDDL);
assertEquals("generated create shadow DDL for " + SHADOWDDLTEST_RECORD_TYPE3 +
" does not match expected shadow DDL", numRecord3CreateDDL , EXPECTED_NUMRECORD3_CREATE_SHADOWDDL);
assertEquals("generated drop shadow DDL for " + SHADOWDDLTEST_RECORD_TYPE3 +
" does not match expected shadow DDL", numRecord3DropDDL, EXPECTED_NUMRECORD3_DROP_SHADOWDDL);
}
}