/******************************************************************************* | |
* Copyright (c) 1998, 2013 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 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: | |
* Oracle - initial API and implementation from Oracle TopLink | |
******************************************************************************/ | |
package org.eclipse.persistence.testing.tests.inheritance; | |
import java.util.*; | |
import org.eclipse.persistence.expressions.*; | |
import org.eclipse.persistence.queries.*; | |
import org.eclipse.persistence.testing.framework.*; | |
import org.eclipse.persistence.tools.schemaframework.*; | |
import org.eclipse.persistence.testing.models.inheritance.*; | |
import org.eclipse.persistence.testing.tests.writing.ComplexDeleteTest; | |
/** | |
* This test model tests basic CRUD operations with complex inheritance models. | |
* It also tests some complex querying and unit of work inheritance use cases. | |
*/ | |
public class InheritanceTestModel extends TestModel { | |
public InheritanceTestModel() { | |
} | |
public InheritanceTestModel(boolean isSRG) { | |
this(); | |
this.isSRG = isSRG; | |
} | |
public void addRequiredSystems() { | |
addRequiredSystem(new InheritanceSystem()); | |
} | |
public void addTests() { | |
addTest(getDuplicateFieldTestSuite()); | |
addTest(getReadObjectTestSuite()); | |
addTest(getReadAllTestSuite()); | |
addTest(getDeleteObjectTestSuite()); | |
addTest(getInsertObjectTestSuite()); | |
addTest(getUpdateObjectTestSuite()); | |
addTest(getUnitOfWorkTestSuite()); | |
addTest(getUnitOfWorkCommitResumeTestSuite()); | |
addTest(getDeepInheritanceTestSuite()); | |
addTest(getTranslatedKeyInheritanceTestSuite()); | |
addTest(getSingleInheritanceTestSuite()); | |
addTest(new CursoredStreamInheritanceTestCase()); | |
addTest(new ReinitializeJoiningOnClassDescriptorWithInheritanceTest()); | |
addTest(new UnitOfWorkIdentityMapAccessorTest()); | |
// EL bug 378512 | |
addTest(new NestedUnitOfWorkMergeIntoParentTest()); | |
} | |
//SRG test set is maintained by QA only, do NOT add any new tests into it. | |
public void addSRGTests() { | |
addTest(getSRGDuplicateFieldTestSuite()); | |
addTest(getSRGReadObjectTestSuite()); | |
addTest(getSRGReadAllTestSuite()); | |
addTest(getSRGDeleteObjectTestSuite()); | |
addTest(getSRGInsertObjectTestSuite()); | |
addTest(getSRGUpdateObjectTestSuite()); | |
addTest(getSRGUnitOfWorkTestSuite()); | |
addTest(getSRGUnitOfWorkCommitResumeTestSuite()); | |
addTest(getSRGDeepInheritanceTestSuite()); | |
addTest(getSRGTranslatedKeyInheritanceTestSuite()); | |
addTest(getSRGSingleInheritanceTestSuite()); | |
} | |
public static TestSuite getDeepInheritanceTestSuite() { | |
TestSuite suite = getSRGDeepInheritanceTestSuite(); | |
// Add new tests here... | |
return suite; | |
} | |
//SRG test set is maintained by QA only, do NOT add any new tests into it. | |
public static TestSuite getSRGDeepInheritanceTestSuite() { | |
TestSuite suite = new TestSuite(); | |
suite.setName("Deep Inheritance Tests"); | |
suite.addTest(new LeafQueryTest()); | |
suite.addTest(new SecondaryTableUpdateTest()); | |
return suite; | |
} | |
public static TestSuite getDeleteObjectTestSuite() { | |
TestSuite suite = getSRGDeleteObjectTestSuite(); | |
// Add new tests here... | |
return suite; | |
} | |
//SRG test set is maintained by QA only, do NOT add any new tests into it. | |
public static TestSuite getSRGDeleteObjectTestSuite() { | |
TestSuite suite = new TestSuite(); | |
suite.setName("InheritanceDeleteObjectTestSuite"); | |
suite.setDescription("This suite tests the deletion of each object in the inheritance model."); | |
PopulationManager manager = PopulationManager.getDefaultManager(); | |
suite.addTest(new DeleteObjectTest(manager.getObject(Cat.class, "catExample1"))); | |
suite.addTest(new DeleteObjectTest(manager.getObject(Dog.class, "dogExample1"))); | |
suite.addTest(new DeleteObjectTest(manager.getObject(Cat.class, "catExample2"))); | |
suite.addTest(new DeleteObjectTest(manager.getObject(Dog.class, "dogExample2"))); | |
suite.addTest(new DeleteObjectTest(manager.getObject(Cat.class, "catExample3"))); | |
suite.addTest(new DeleteObjectTest(manager.getObject(Dog.class, "dogExample3"))); | |
suite.addTest(new DeleteObjectTest(manager.getObject(Person.class, "example1"))); | |
suite.addTest(new DeleteObjectTest(manager.getObject(SalesRep.class, "example3"))); | |
suite.addTest(new DeleteObjectTest(manager.getObject(Company.class, "example1"))); | |
suite.addTest(new DeleteObjectTest(manager.getObject(Company.class, "example2"))); | |
suite.addTest(new DeleteObjectTest(manager.getObject(Company.class, "example3"))); | |
suite.addTest(new DeleteObjectTest(manager.getObject(Mac.class, "example1"))); | |
suite.addTest(new DeleteObjectTest(manager.getObject(IBMPC.class, "example2"))); | |
suite.addTest(new DeleteObjectTest(manager.getObject(IBMPC.class, "example3"))); | |
suite.addTest(new DeleteObjectTest(manager.getObject(PC.class, "example4"))); | |
suite.addTest(new DeleteObjectTest(manager.getObject(Mainframe.class, "example5"))); | |
Vector dependants = new Vector(1); | |
Alligator alligator = (Alligator)manager.getObject(Alligator.class, "example1"); | |
dependants.add(alligator.getLatestVictim()); | |
suite.addTest(new ComplexDeleteTest(alligator, dependants)); | |
return suite; | |
} | |
public static TestSuite getDuplicateFieldTestSuite() { | |
TestSuite suite = getSRGDuplicateFieldTestSuite(); | |
// Add new tests here... | |
return suite; | |
} | |
//SRG test set is maintained by QA only, do NOT add any new tests into it. | |
public static TestSuite getSRGDuplicateFieldTestSuite() { | |
TestSuite suite = new TestSuite(); | |
suite.setName("InheritanceDuplicateFieldTestSuite"); | |
suite.setDescription("This suite tests ther read from the root class generated duplicate filed in SQL in the inheritance model."); | |
//duplicate field SQL testing read | |
ReadAllTest rs = new ReadAllTest(A_King2.class, 5); | |
ReadAllQuery rq = new ReadAllQuery(A_King2.class); | |
rq.addAscendingOrdering("foo"); | |
rs.setQuery(rq); | |
suite.addTest(rs); | |
return suite; | |
} | |
public static TestSuite getInsertObjectTestSuite() { | |
TestSuite suite = getSRGInsertObjectTestSuite(); | |
// Add new tests here... | |
return suite; | |
} | |
//SRG test set is maintained by QA only, do NOT add any new tests into it. | |
public static TestSuite getSRGInsertObjectTestSuite() { | |
TestSuite suite = new TestSuite(); | |
suite.setName("InheritanceInsertObjectTestSuite"); | |
suite.setDescription("This suite tests the insertion of each object in the inheritance model."); | |
suite.addTest(new InsertObjectTest(Cat.example4())); | |
suite.addTest(new InsertObjectTest(Dog.example4())); | |
suite.addTest(new InsertObjectTest(Company.example1())); | |
suite.addTest(new InsertObjectTest(Company.example2())); | |
suite.addTest(new InsertObjectTest(Company.example3())); | |
suite.addTest(new InsertObjectTest(Person.example1())); | |
suite.addTest(new InsertObjectTest(Person.example3())); | |
suite.addTest(new InsertObjectTest(Person.example6())); | |
suite.addTest(new InsertObjectTest(Car.example1())); | |
suite.addTest(new InsertObjectTest(Car.example2())); | |
suite.addTest(new InsertObjectTest(Car.example3())); | |
suite.addTest(new InsertObjectTest(Car.example4())); | |
suite.addTest(new InsertObjectTest(Computer.example1())); | |
suite.addTest(new InsertObjectTest(Computer.example2())); | |
suite.addTest(new InsertObjectTest(Computer.example3())); | |
suite.addTest(new InsertObjectTest(Computer.example4())); | |
suite.addTest(new InsertObjectTest(Computer.example5())); | |
//insert using native sequencing in the branch class Aug.18, 1999 | |
suite.addTest(new InsertObjectTest(Developer_King.exp2())); | |
suite.addTest(new InsertObjectTest(Developer_King.exp3())); | |
suite.addTest(new InsertObjectTest(SeniorDeveloper_King.exp4())); | |
//testing subclass overriding of an inherited mapping. | |
suite.addTest(new OverrideInheritedMappingTest()); | |
// Bug 2996585 | |
suite.addTest(new BindingWithShallowInsertTest()); | |
return suite; | |
} | |
public static TestSuite getReadAllTestSuite() { | |
TestSuite suite = getSRGReadAllTestSuite(); | |
suite.addTest(new QueryInheritanceTest()); | |
suite.addTest(new JoinWithSecondaryTableTest()); | |
suite.addTest(new PaginationInheritanceTest()); | |
// Add new tests here... | |
return suite; | |
} | |
//SRG test set is maintained by QA only, do NOT add any new tests into it. | |
public static TestSuite getSRGReadAllTestSuite() { | |
TestSuite suite = new TestSuite(); | |
suite.setName("InheritanceReadAllTestSuite"); | |
suite.setDescription("This suite tests the reading of all the objects of each class in the inheritance model."); | |
suite.addTest(new ReadAllTest(Cat.class, 3)); | |
suite.addTest(new ReadAllTest(Dog.class, 3)); | |
suite.addTest(new ReadAllTest(Company.class, 3)); | |
suite.addTest(new ReadAllTest(Person.class, 1)); | |
suite.addTest(new ReadAllTest(SalesRep.class, 2)); | |
suite.addTest(new ReadAllTest(Engineer.class, 2)); | |
suite.addTest(new ReadAllTest(SoftwareEngineer.class, 1)); | |
suite.addTest(new ReadAllTest(Computer.class, 5)); | |
suite.addTest(new ReadAllTest(PC.class, 4)); | |
suite.addTest(new ReadAllTest(IBMPC.class, 2)); | |
suite.addTest(new ReadAllTest(Mac.class, 1)); | |
suite.addTest(new ReadAllTest(Mainframe.class, 1)); | |
suite.addTest(new ReadAllTest(Car.class, 4)); | |
suite.addTest(new ReadAllTest(SportsCar.class, 1)); | |
suite.addTest(new ReadAllTest(Bus.class, 4)); | |
suite.addTest(new ReadAllTest(Bicycle.class, 3)); | |
suite.addTest(new ReadAllTest(Boat.class, 4)); | |
suite.addTest(new ReadAllTest(Vehicle.class, 19)); | |
suite.addTest(new ReadAllTest(NonFueledVehicle.class, 10)); | |
suite.addTest(new ReadAllTest(FueledVehicle.class, 1)); | |
suite.addTest(new ReadAllTest(A_King2.class, 5)); | |
return suite; | |
} | |
public static TestSuite getReadObjectTestSuite() { | |
TestSuite suite = getSRGReadObjectTestSuite(); | |
// Add new tests here... | |
return suite; | |
} | |
//SRG test set is maintained by QA only, do NOT add any new tests into it. | |
public static TestSuite getSRGReadObjectTestSuite() { | |
TestSuite suite = new TestSuite(); | |
suite.setName("InheritanceReadObjectTestSuite"); | |
suite.setDescription("This suite test the reading of each object in the inheritance model."); | |
PopulationManager manager = PopulationManager.getDefaultManager(); | |
suite.addTest(new ReadObjectTest(manager.getObject(Cat.class, "catExample1"))); | |
suite.addTest(new ReadObjectTest(manager.getObject(Dog.class, "dogExample1"))); | |
suite.addTest(new ReadObjectTest(manager.getObject(Cat.class, "catExample2"))); | |
suite.addTest(new ReadObjectTest(manager.getObject(Dog.class, "dogExample2"))); | |
suite.addTest(new ReadObjectTest(manager.getObject(Cat.class, "catExample3"))); | |
suite.addTest(new ReadObjectTest(manager.getObject(Dog.class, "dogExample3"))); | |
suite.addTest(new ReadObjectTest(manager.getObject(Company.class, "example1"))); | |
suite.addTest(new ReadObjectTest(manager.getObject(Company.class, "example2"))); | |
suite.addTest(new ReadObjectTest(manager.getObject(Company.class, "example3"))); | |
Bus bus = (Bus)manager.getObject(Bus.class, "example1"); | |
ReadObjectTest test = new ReadObjectTest(bus); | |
test.setQuery(new ReadObjectQuery(Vehicle.class, new ExpressionBuilder().get("id").equal(bus.id))); | |
suite.addTest(test); | |
suite.addTest(new ReadObjectTest(manager.getObject(Person.class, "example1"))); | |
suite.addTest(new ReadObjectTest(manager.getObject(Engineer.class, "example2"))); | |
suite.addTest(new ReadObjectTest(manager.getObject(SalesRep.class, "example4"))); | |
suite.addTest(new ReadObjectTest(manager.getObject(SoftwareEngineer.class, "example5"))); | |
suite.addTest(new ReadObjectTest(manager.getObject(SalesRep.class, "example3"))); | |
suite.addTest(new ReadObjectTest(manager.getObject(PC.class, "example4"))); | |
suite.addTest(new ReadObjectTest(manager.getObject(IBMPC.class, "example3"))); | |
suite.addTest(new ReadObjectTest(manager.getObject(IBMPC.class, "example2"))); | |
suite.addTest(new ReadObjectTest(manager.getObject(Mac.class, "example1"))); | |
suite.addTest(new ReadObjectTest(manager.getObject(Mainframe.class, "example5"))); | |
return suite; | |
} | |
public static TestSuite getTranslatedKeyInheritanceTestSuite() { | |
TestSuite suite = getSRGTranslatedKeyInheritanceTestSuite(); | |
// Add new tests here... | |
return suite; | |
} | |
//SRG test set is maintained by QA only, do NOT add any new tests into it. | |
public static TestSuite getSRGTranslatedKeyInheritanceTestSuite() { | |
TestSuite suite = new TestSuite(); | |
suite.setName("TranslatedKeyInheritance"); | |
suite.setDescription("Test when a subclass has a key different from the superclass"); | |
suite.addTest(new TranslatedKeyInheritanceTestCase()); | |
return suite; | |
} | |
public static TestSuite getUnitOfWorkCommitResumeTestSuite() { | |
TestSuite suite = getSRGUnitOfWorkCommitResumeTestSuite(); | |
// Add new tests here... | |
return suite; | |
} | |
//SRG test set is maintained by QA only, do NOT add any new tests into it. | |
public static TestSuite getSRGUnitOfWorkCommitResumeTestSuite() { | |
TestSuite suite = new TestSuite(); | |
suite.setName("InheritanceUnitOfWorkCommitResumeTestSuite"); | |
suite.setDescription("This suite tests updating objects with UOW in the inheritance model using the commitAndResume method."); | |
PopulationManager manager = PopulationManager.getDefaultManager(); | |
suite.addTest(new UnitOfWorkCommitResumeTest(manager.getObject(Company.class, "example1"))); | |
suite.addTest(new UnitOfWorkCommitResumeTest(manager.getObject(Company.class, "example2"))); | |
suite.addTest(new UnitOfWorkCommitResumeTest(manager.getObject(Company.class, "example3"))); | |
return suite; | |
} | |
public static TestSuite getUnitOfWorkTestSuite() { | |
TestSuite suite = getSRGUnitOfWorkTestSuite(); | |
suite.addTest(new InfiniteRecursionWithNoDescriptorTest()); | |
// Add new tests here... | |
return suite; | |
} | |
//SRG test set is maintained by QA only, do NOT add any new tests into it. | |
public static TestSuite getSRGUnitOfWorkTestSuite() { | |
TestSuite suite = new TestSuite(); | |
suite.setName("InheritanceUnitOfWorkTestSuite"); | |
suite.setDescription("This suite tests updating objects with UOW in the inheritance model."); | |
PopulationManager manager = PopulationManager.getDefaultManager(); | |
suite.addTest(new UnitOfWorkTest(manager.getObject(Company.class, "example1"))); | |
suite.addTest(new UnitOfWorkTest(manager.getObject(Company.class, "example2"))); | |
suite.addTest(new UnitOfWorkTest(manager.getObject(Company.class, "example3"))); | |
return suite; | |
} | |
public static TestSuite getUpdateObjectTestSuite() { | |
TestSuite suite = getSRGUpdateObjectTestSuite(); | |
// Add new tests here... | |
return suite; | |
} | |
//SRG test set is maintained by QA only, do NOT add any new tests into it. | |
public static TestSuite getSRGUpdateObjectTestSuite() { | |
TestSuite suite = new TestSuite(); | |
suite.setName("InheritanceUpdateObjectTestSuite"); | |
suite.setDescription("This suite tests the updating of each object in the inheritance model."); | |
Class companyClass = Company.class; | |
Class personClass = Person.class; | |
PopulationManager manager = PopulationManager.getDefaultManager(); | |
suite.addTest(new WriteObjectTest(manager.getObject(Cat.class, "catExample1"))); | |
suite.addTest(new UnitOfWorkBasicUpdateObjectTest(manager.getObject(Cat.class, "catExample1"))); | |
suite.addTest(new WriteObjectTest(manager.getObject(Dog.class, "dogExample1"))); | |
suite.addTest(new UnitOfWorkBasicUpdateObjectTest(manager.getObject(Dog.class, "dogExample1"))); | |
suite.addTest(new UnitOfWorkBasicUpdateObjectTest(manager.getObject(Cat.class, "catExample2"))); | |
suite.addTest(new UnitOfWorkBasicUpdateObjectTest(manager.getObject(Dog.class, "dogExample2"))); | |
suite.addTest(new UnitOfWorkBasicUpdateObjectTest(manager.getObject(Cat.class, "catExample3"))); | |
suite.addTest(new UnitOfWorkBasicUpdateObjectTest(manager.getObject(Dog.class, "dogExample3"))); | |
suite.addTest(new WriteObjectTest(manager.getObject(companyClass, "example1"))); | |
suite.addTest(new UnitOfWorkBasicUpdateObjectTest(manager.getObject(companyClass, "example1"))); | |
suite.addTest(new UnitOfWorkBasicUpdateObjectTest(manager.getObject(companyClass, "example2"))); | |
suite.addTest(new UnitOfWorkBasicUpdateObjectTest(manager.getObject(companyClass, "example3"))); | |
suite.addTest(new WriteObjectTest(manager.getObject(personClass, "example1"))); | |
suite.addTest(new UnitOfWorkBasicUpdateObjectTest(manager.getObject(personClass, "example1"))); | |
suite.addTest(new WriteObjectTest(manager.getObject(Engineer.class, "example2"))); | |
suite.addTest(new UnitOfWorkBasicUpdateObjectTest(manager.getObject(Engineer.class, "example2"))); | |
suite.addTest(new WriteObjectTest(manager.getObject(SalesRep.class, "example3"))); | |
suite.addTest(new UnitOfWorkBasicUpdateObjectTest(manager.getObject(SalesRep.class, "example3"))); | |
suite.addTest(new WriteObjectTest(manager.getObject(Mac.class, "example1"))); | |
suite.addTest(new UnitOfWorkBasicUpdateObjectTest(manager.getObject(Mac.class, "example1"))); | |
suite.addTest(new WriteObjectTest(manager.getObject(IBMPC.class, "example2"))); | |
suite.addTest(new UnitOfWorkBasicUpdateObjectTest(manager.getObject(IBMPC.class, "example2"))); | |
suite.addTest(new UnitOfWorkBasicUpdateObjectTest(manager.getObject(IBMPC.class, "example3"))); | |
suite.addTest(new WriteObjectTest(manager.getObject(PC.class, "example4"))); | |
suite.addTest(new UnitOfWorkBasicUpdateObjectTest(manager.getObject(PC.class, "example4"))); | |
suite.addTest(new WriteObjectTest(manager.getObject(Mainframe.class, "example5"))); | |
suite.addTest(new UnitOfWorkBasicUpdateObjectTest(manager.getObject(Mainframe.class, "example5"))); | |
return suite; | |
} | |
public static TestSuite getSingleInheritanceTestSuite() { | |
TestSuite suite = getSRGSingleInheritanceTestSuite(); | |
// Add new tests here... | |
return suite; | |
} | |
//SRG test set is maintained by QA only, do NOT add any new tests into it. | |
public static TestSuite getSRGSingleInheritanceTestSuite() { | |
TestSuite suite = new TestSuite(); | |
suite.setName("SingleInheritanceTestSuite"); | |
suite.setDescription("This suite tests an inheritance model containing only a single class ."); | |
PopulationManager manager = PopulationManager.getDefaultManager(); | |
suite.addTest(new SingleInheritanceTest()); | |
return suite; | |
} | |
} |