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