brj 2005/09/18 05:06:46
Modified: src/test/org/apache/ojb/broker Tag: OJB_1_0_RELEASE
InheritanceMultipleTableTest.java
Log:
additional testcases for ojb-63
Revision Changes Path
No revision
No revision
1.7.2.13 +95 -26
db-ojb/src/test/org/apache/ojb/broker/InheritanceMultipleTableTest.java
Index: InheritanceMultipleTableTest.java
===================================================================
RCS file:
/home/cvs/db-ojb/src/test/org/apache/ojb/broker/InheritanceMultipleTableTest.java,v
retrieving revision 1.7.2.12
retrieving revision 1.7.2.13
diff -u -r1.7.2.12 -r1.7.2.13
--- InheritanceMultipleTableTest.java 22 Aug 2005 15:35:45 -0000 1.7.2.12
+++ InheritanceMultipleTableTest.java 18 Sep 2005 12:06:46 -0000 1.7.2.13
@@ -43,10 +43,11 @@
}
long timestamp = System.currentTimeMillis();
- Long id_2 = new Long(timestamp);
String name = "testInheritancedObjectsInCollectionReferences_" +
timestamp;
// store company with Employee/Executive/Manager
- Company company = prepareTestDataWithCompany(id_2, name);
+ Company company = prepareTestDataWithCompany(name);
+ Long id_2 = company.getId();
+
// add Shareholder too
Shareholder shareholder = new Shareholder(id_2, name);
shareholder.setShare(77);
@@ -65,20 +66,20 @@
Query query = QueryFactory.newQuery(Employee.class, crit);
Collection result = broker.getCollectionByQuery(query);
assertEquals(7, result.size());
- int empolyeeCount = 0;
+ int employeeCount = 0;
int executiveCount = 0;
int managerCount = 0;
int shareholderCount = 0;
for(Iterator iterator = result.iterator(); iterator.hasNext();)
{
Object obj = iterator.next();
- if(obj instanceof Employee) ++empolyeeCount;
+ if(obj instanceof Employee) ++employeeCount;
if(obj instanceof Executive) ++executiveCount;
if(obj instanceof Manager) ++managerCount;
if(obj instanceof Shareholder) ++shareholderCount;
}
- assertEquals(7, empolyeeCount);
- assertEquals(5, executiveCount);
+ assertEquals(7, employeeCount);
+ assertEquals(6, executiveCount);
assertEquals(4, managerCount);
assertEquals(1, shareholderCount);
@@ -90,19 +91,19 @@
query = QueryFactory.newQuery(Manager.class, crit);
result = broker.getCollectionByQuery(query);
assertEquals(4, result.size());
- empolyeeCount = 0;
+ employeeCount = 0;
executiveCount = 0;
managerCount = 0;
shareholderCount = 0;
for(Iterator iterator = result.iterator(); iterator.hasNext();)
{
Object obj = iterator.next();
- if(obj instanceof Employee) ++empolyeeCount;
+ if(obj instanceof Employee) ++employeeCount;
if(obj instanceof Executive) ++executiveCount;
if(obj instanceof Manager) ++managerCount;
if(obj instanceof Shareholder) ++shareholderCount;
}
- assertEquals(4, empolyeeCount);
+ assertEquals(4, employeeCount);
assertEquals(4, executiveCount);
assertEquals(4, managerCount);
assertEquals(1, shareholderCount);
@@ -115,24 +116,82 @@
query = QueryFactory.newQuery(Shareholder.class, crit);
result = broker.getCollectionByQuery(query);
assertEquals(1, result.size());
- empolyeeCount = 0;
+ employeeCount = 0;
executiveCount = 0;
managerCount = 0;
shareholderCount = 0;
for(Iterator iterator = result.iterator(); iterator.hasNext();)
{
Object obj = iterator.next();
- if(obj instanceof Employee) ++empolyeeCount;
+ if(obj instanceof Employee) ++employeeCount;
if(obj instanceof Executive) ++executiveCount;
if(obj instanceof Manager) ++managerCount;
if(obj instanceof Shareholder) ++shareholderCount;
}
- assertEquals(1, empolyeeCount);
+ assertEquals(1, employeeCount);
assertEquals(1, executiveCount);
assertEquals(1, managerCount);
assertEquals(1, shareholderCount);
}
+ public void testQueryInheritancedObjectsById()
+ {
+ long timestamp = System.currentTimeMillis();
+ String name = "testQueryInheritancedObjectsByPk_" + timestamp;
+ Long id_2 = new Long(timestamp);
+
+ List insertedObjs = prepareForQueryTests(id_2, name);
+
+ // add Shareholder
+ Shareholder shareholder = new Shareholder(id_2, name);
+ shareholder.setShare(77);
+ shareholder.setDepartment("none");
+ AddressIF ad = new Address(name);
+ shareholder.setAddress(ad);
+
+ broker.beginTransaction();
+ broker.store(shareholder);
+ broker.commitTransaction();
+
+ broker.clearCache();
+
+ Employee emp1;
+ Identity ident;
+ Employee retrievedEmp;
+
+ // retrieve Manager by pk
+ emp1 = (Employee) insertedObjs.get(0);
+ ident = broker.serviceIdentity().buildIdentity(emp1);
+ retrievedEmp = (Employee) broker.getObjectByIdentity(ident);
+ assertNotNull(retrievedEmp);
+ assertSame(Manager.class, retrievedEmp.getClass());
+ assertEquals(emp1, retrievedEmp);
+
+ // retrieve Executive by pk
+ emp1 = (Employee) insertedObjs.get(3);
+ ident = broker.serviceIdentity().buildIdentity(emp1);
+ retrievedEmp = (Employee) broker.getObjectByIdentity(ident);
+ assertNotNull(retrievedEmp);
+ assertSame(Executive.class, retrievedEmp.getClass());
+ assertEquals(emp1, retrievedEmp);
+
+ // retrieve Employee by pk
+ emp1 = (Employee) insertedObjs.get(5);
+ ident = broker.serviceIdentity().buildIdentity(emp1);
+ retrievedEmp = (Employee) broker.getObjectByIdentity(ident);
+ assertNotNull(retrievedEmp);
+ assertSame(Employee.class, retrievedEmp.getClass());
+ assertEquals(emp1, retrievedEmp);
+
+ // retrieve Shareholder by pk
+ emp1 = shareholder;
+ ident = broker.serviceIdentity().buildIdentity(emp1);
+ retrievedEmp = (Employee) broker.getObjectByIdentity(ident);
+ assertNotNull(retrievedEmp);
+ assertSame(Shareholder.class, retrievedEmp.getClass());
+ assertEquals(emp1, retrievedEmp);
+ }
+
public void testWithoutJavaInheritance_1()
{
String name = "testWithoutJavaInheritance_1" +
System.currentTimeMillis();
@@ -251,9 +310,9 @@
}
long timestamp = System.currentTimeMillis();
- Long id_2 = new Long(timestamp);
String name = "testInheritancedObjectsInCollectionReferences_" +
timestamp;
- Company company = prepareTestDataWithCompany(id_2, name);
+ Company company = prepareTestDataWithCompany(name);
+ Long id_2 = company.getId();
broker.clearCache();
Criteria crit = new Criteria();
@@ -290,12 +349,6 @@
}
}
assertEquals(6, countEmployee);
- /*
- bug:
- expect that the real classes will be populated
- currently this does not happen, only objects of
- type Employee will be returned.
- */
assertEquals(5, countExecutive);
assertEquals(3, countManager);
}
@@ -618,8 +671,10 @@
assertEquals("Expect the same number of objects as before update",
3, result.size());
}
- private void prepareForQueryTests(Long id_2, String name)
+ private List prepareForQueryTests(Long id_2, String name)
{
+ List result = new ArrayList();
+
Manager m_1 = new Manager(id_2, name + "_manager_1");
Manager m_2 = new Manager(id_2, name + "_manager_2");
Manager m_3 = new Manager(id_2, name + "_manager_3");
@@ -634,6 +689,13 @@
Address a_2 = new Address("cockroaches valley");
em.setAddress(a_2);
+ result.add(m_1);
+ result.add(m_2);
+ result.add(m_3);
+ result.add(ex_1);
+ result.add(ex_2);
+ result.add(em);
+
broker.beginTransaction();
broker.store(m_1);
broker.store(m_2);
@@ -642,9 +704,13 @@
broker.store(ex_2);
broker.store(em);
broker.commitTransaction();
+
+ return result;
}
- private Company prepareTestDataWithCompany(Long id_2, String name) {
+ private Company prepareTestDataWithCompany(String name)
+ {
+ Long id_2 = null;
Manager m_1 = new Manager(id_2, name + "_manager_1");
Manager m_2 = new Manager(id_2, name + "_manager_2");
Manager m_3 = new Manager(id_2, name + "_manager_3");
@@ -662,6 +728,9 @@
employees.add(em);
ArrayList executives = new ArrayList();
+ executives.add(m_1);
+ executives.add(m_2);
+ executives.add(m_3);
executives.add(ex_1);
executives.add(ex_2);
@@ -812,9 +881,10 @@
public void testQuery_ReferenceOuterJoin()
{
long timestamp = System.currentTimeMillis();
- Long id_2 = new Long(timestamp);
String name = "testQuery_ReferenceOuterJoin_" + timestamp;
- Company comp = prepareTestDataWithCompany(id_2, name);
+ Company comp = prepareTestDataWithCompany(name);
+ Long id_2 = comp.getId();
+
// Store a dummy company
Company dummyComp = new Company(null, name + "_dummy",
Collections.EMPTY_LIST, Collections.EMPTY_LIST);
@@ -1522,7 +1592,6 @@
.append(getId(), other.getId())
.append(getName(), other.getName())
.append(getWeight(), other.getWeight())
- .append(getParent(), other.getParent())
.append(getFoods(), other.getFoods())
.isEquals();
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]