You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-dev@db.apache.org by br...@apache.org on 2004/06/13 19:59:28 UTC
cvs commit: db-ojb/src/test/org/apache/ojb/broker PathTest.java
brj 2004/06/13 10:59:28
Modified: src/test/org/apache/ojb/broker PathTest.java
Log:
added testcase for subquery using exists
Revision Changes Path
1.3 +83 -41 db-ojb/src/test/org/apache/ojb/broker/PathTest.java
Index: PathTest.java
===================================================================
RCS file: /home/cvs/db-ojb/src/test/org/apache/ojb/broker/PathTest.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- PathTest.java 22 May 2004 08:37:24 -0000 1.2
+++ PathTest.java 13 Jun 2004 17:59:28 -0000 1.3
@@ -92,11 +92,17 @@
broker.commitTransaction();
}
- private static int NUM_A = 1;
+// private static int NUM_A = 1;
+// private static int NUM_B_PER_A = 4;
+// private static int NUM_C_PER_B = 2;
+// private static int NUM_C1_PER_B = 3;
+// private static int NUM_D_PER_C = 1;
+
+ private static int NUM_A = 3;
private static int NUM_B_PER_A = 4;
private static int NUM_C_PER_B = 2;
private static int NUM_C1_PER_B = 3;
- private static int NUM_D_PER_C = 1;
+ private static int NUM_D_PER_C = 2;
private static int A_OFFSET = 10000;
private static int B_OFFSET = 1000;
@@ -106,39 +112,50 @@
public void testCreateData() throws Exception
{
broker.beginTransaction();
- A a = new A(A_OFFSET);
- broker.store(a);
- System.out.println("A - " + a.getAAttrib());
- for (int i = 0; i < NUM_B_PER_A; i++)
+
+ for (int ia = 0; ia < NUM_A; ia++)
{
- B b = new B(A_OFFSET + B_OFFSET * i);
- b.setA(a);
- broker.store(b);
- System.out.println("\tB - " + b.getBAttrib());
- for (int j = 0; j < NUM_C_PER_B; j++)
- {
- C c = new C(A_OFFSET + B_OFFSET * i + C_OFFSET * j);
- c.setB(b);
- D d = new D(A_OFFSET + B_OFFSET * i + C_OFFSET * j + D_OFFSET);
- c.setD(d);
- broker.store(d);
- broker.store(c);
- System.out.println("\t\tC - " + c.getCAttrib());
- System.out.println("\t\t\tD - " + d.getDAttrib());
- }
- for (int j = 0; j < NUM_C1_PER_B; j++)
+ A a = new A(A_OFFSET + A_OFFSET * ia);
+ broker.store(a);
+ System.out.println("A - " + a.getAAttrib());
+ for (int ib = 0; ib < NUM_B_PER_A; ib++)
{
- C1 c1 = new C1(A_OFFSET + B_OFFSET * i + C_OFFSET * j);
- c1.setB(b);
- D d = new D(A_OFFSET + B_OFFSET * i + C_OFFSET * j + D_OFFSET);
- c1.setD(d);
- c1.setC1Attrib(c1.getCAttrib() + 1);
- broker.store(d);
- broker.store(c1);
- System.out.println("\t\tC1 - " + c1.getC1Attrib());
- System.out.println("\t\t\tD - " + d.getDAttrib());
+ B b = new B(A_OFFSET + B_OFFSET * ib);
+ b.setA(a);
+ broker.store(b);
+ System.out.println("\tB - " + b.getBAttrib());
+ for (int ic = 0; ic < NUM_C_PER_B; ic++)
+ {
+ C c = new C(A_OFFSET + B_OFFSET * ib + C_OFFSET * ic);
+ c.setB(b);
+ for (int id = 0; id < NUM_D_PER_C; id++)
+ {
+ D d = new D(A_OFFSET + B_OFFSET * ib + C_OFFSET * ic + D_OFFSET * id);
+ c.setD(d);
+ broker.store(d);
+ broker.store(c);
+ System.out.println("\t\tC - " + c.getCAttrib());
+ System.out.println("\t\t\tD - " + d.getDAttrib());
+ }
+ }
+ for (int ic = 0; ic < NUM_C1_PER_B; ic++)
+ {
+ C1 c1 = new C1(A_OFFSET + B_OFFSET * ib + C_OFFSET * ic);
+ c1.setB(b);
+ for (int id = 0; id < NUM_D_PER_C; id++)
+ {
+ D d = new D(A_OFFSET + B_OFFSET * ib + C_OFFSET * ic + D_OFFSET * id);
+ c1.setD(d);
+ c1.setC1Attrib(c1.getCAttrib() + 1);
+ broker.store(d);
+ broker.store(c1);
+ System.out.println("\t\tC1 - " + c1.getC1Attrib());
+ System.out.println("\t\t\tD - " + d.getDAttrib());
+ }
+ }
}
}
+
broker.commitTransaction();
broker.clearCache();
@@ -166,7 +183,7 @@
}
-// This is the result of the above population
+// This is the result of the above population for NUM_A = 1
//
// A - 10000
// B - 10000
@@ -233,7 +250,7 @@
java.util.Iterator itr = allBs.iterator();
- assertEquals(1, allBs.size());
+ assertEquals(1 * NUM_A, allBs.size());
System.out.println("testPathClassOnSegment1() iteration size:" + allBs.size());
while (itr.hasNext())
{
@@ -267,7 +284,7 @@
java.util.Iterator itr = allAs.iterator();
- assertEquals(allAs.size(), 1);
+ assertEquals(allAs.size(), 1 * NUM_A);
System.out.println("testPathClassOnSegment2() iteration size:" + allAs.size());
while (itr.hasNext())
{
@@ -302,7 +319,7 @@
java.util.Iterator itr = allBs.iterator();
- assertEquals(2, allBs.size());
+ assertEquals(2 * NUM_A, allBs.size());
System.out.println("testSingleAlias() iteration size:" + allBs.size());
while (itr.hasNext())
{
@@ -343,7 +360,7 @@
java.util.Iterator itr = allBs.iterator();
- assertEquals(4, allBs.size());
+ assertEquals(4 * NUM_A, allBs.size());
System.out.println("testTwoAliasesTwoSegments() iteration size:" + allBs.size());
while (itr.hasNext())
{
@@ -385,7 +402,7 @@
java.util.Iterator itr = allAs.iterator();
- assertEquals(1, allAs.size());
+ assertEquals(1 * NUM_A, allAs.size());
System.out.println("testTwoAliasesThreeSegments() iteration size:" + allAs.size());
while (itr.hasNext())
{
@@ -427,7 +444,7 @@
java.util.Iterator itr = allBs.iterator();
- assertEquals(1, allBs.size());
+ assertEquals(1 * NUM_A, allBs.size());
System.out.println("testPathClassPerCriteria() iteration size:" + allBs.size());
while (itr.hasNext())
{
@@ -471,7 +488,7 @@
java.util.Iterator itr = allBs.iterator();
- assertEquals(1, allBs.size());
+ assertEquals(1 * NUM_A, allBs.size());
System.out.println("testPathClassPerQuery() iteration size:" + allBs.size());
while (itr.hasNext())
{
@@ -513,7 +530,7 @@
java.util.Iterator itr = allAs.iterator();
- assertEquals(1, allAs.size());
+ assertEquals(1 * NUM_A, allAs.size());
System.out.println("testThreeSegmentsAliasOnSegment2And3() iteration size:" + allAs.size());
while (itr.hasNext())
{
@@ -562,7 +579,7 @@
java.util.Iterator itr = allAs.iterator();
- assertEquals(1, allAs.size());
+ assertEquals(1 * NUM_A, allAs.size());
System.out.println("testThreeSegmentsAliasOnSegment2And3UserAlias() iteration size:" + allAs.size());
while (itr.hasNext())
{
@@ -577,6 +594,31 @@
}
}
+ public void testSubQueryExists()
+ {
+ // subquery
+ Criteria subCrit = new Criteria();
+ subCrit.addEqualTo(Criteria.PARENT_QUERY_PREFIX + "bSet.cSet.d.dAttrib", new Integer("10011"));
+ // subCrit.setAlias("subAlias", "cSet.d");
+ QueryByCriteria subQuery = new QueryByCriteria(A.class, subCrit);
+
+ // parent query
+ Criteria crit = new Criteria();
+ crit.addEqualTo("bSet.cSet.d.dAttrib", new Integer("10010"));
+ // crit.setAlias("alias", "cSet.d");
+ crit.addNotExists(subQuery);
+ QueryByCriteria query = new QueryByCriteria(A.class, crit,true);
+
+ Collection result = broker.getCollectionByQuery(query);
+ assertEquals(1 * NUM_A, result.size());
+
+ Iterator itr = result.iterator();
+ while (itr.hasNext())
+ {
+ A a = (A) itr.next();
+ System.out.println("Found A: " + a.getId() + " " + a.getAAttrib());
+ }
+ }
// Inner Classes
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org