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 ar...@apache.org on 2007/03/21 03:25:32 UTC

svn commit: r520718 - in /db/ojb/trunk/src/test/org/apache/ojb: broker/AllTests.java broker/FunctionTest.java repository_junit.xml

Author: arminw
Date: Tue Mar 20 19:25:31 2007
New Revision: 520718

URL: http://svn.apache.org/viewvc?view=rev&rev=520718
Log:
add new test for scalar functions to test-suite, fix mapping

Modified:
    db/ojb/trunk/src/test/org/apache/ojb/broker/AllTests.java
    db/ojb/trunk/src/test/org/apache/ojb/broker/FunctionTest.java
    db/ojb/trunk/src/test/org/apache/ojb/repository_junit.xml

Modified: db/ojb/trunk/src/test/org/apache/ojb/broker/AllTests.java
URL: http://svn.apache.org/viewvc/db/ojb/trunk/src/test/org/apache/ojb/broker/AllTests.java?view=diff&rev=520718&r1=520717&r2=520718
==============================================================================
--- db/ojb/trunk/src/test/org/apache/ojb/broker/AllTests.java (original)
+++ db/ojb/trunk/src/test/org/apache/ojb/broker/AllTests.java Tue Mar 20 19:25:31 2007
@@ -155,10 +155,7 @@
         suite.addTestSuite(DatabaseIdentityMySqlTest.class);
         suite.addTestSuite(DatabaseIdentityMaxDBTest.class);
         suite.addTestSuite(SeqManMultiHsqlTest.class);
-        /*
-        arminw: comment in after 1.0.5 release
-        */
-        //suite.addTestSuite(FunctionTest.class);
+        suite.addTestSuite(FunctionTest.class);
 
         suite.addTestSuite(IdentityPerformanceTest.class);
         suite.addTestSuite(CreationTest.class);

Modified: db/ojb/trunk/src/test/org/apache/ojb/broker/FunctionTest.java
URL: http://svn.apache.org/viewvc/db/ojb/trunk/src/test/org/apache/ojb/broker/FunctionTest.java?view=diff&rev=520718&r1=520717&r2=520718
==============================================================================
--- db/ojb/trunk/src/test/org/apache/ojb/broker/FunctionTest.java (original)
+++ db/ojb/trunk/src/test/org/apache/ojb/broker/FunctionTest.java Tue Mar 20 19:25:31 2007
@@ -25,6 +25,7 @@
 import org.apache.ojb.broker.query.Query;
 import org.apache.ojb.broker.query.QueryFactory;
 import org.apache.ojb.broker.query.ReportQueryByCriteria;
+import org.apache.ojb.broker.util.AttributeTokenizer;
 import org.apache.commons.lang.builder.EqualsBuilder;
 
 /**
@@ -42,6 +43,7 @@
 
     public FunctionTest()
     {
+        super();
     }
 
     public FunctionTest(String name)
@@ -49,6 +51,28 @@
         super(name);
     }
 
+    public void testAttributeTokenizer()
+    {
+        assertEquals("id", cleanPath("id"));
+        assertEquals("id", cleanPath("sum(id)"));
+        assertEquals("id", cleanPath("sum ( id) "));
+        assertEquals("id", cleanPath("abs(sum(id))"));
+        assertEquals("id", cleanPath("abs (sum(id  ))"));
+        assertEquals("id", cleanPath("count(distinct id)"));
+        assertEquals("id", cleanPath("  count   (   distinct   id  )  "));
+        assertEquals("distinct", cleanPath("  count   (   distinct   distinct  )  "));
+        assertEquals("as", cleanPath("  count   (   distinct   as  )  "));
+        assertEquals("as", cleanPath("((  count   (   distinct   as  )  ))"));
+        assertEquals("curdate.sum", cleanPath("sum(curdate.sum)"));
+        assertEquals("as", cleanPath("abs(as)"));
+        assertEquals("author.books.pages", cleanPath("count(distinct author.books.pages)"));
+    }
+
+    private String cleanPath(String str)
+    {
+        return new AttributeTokenizer(str).getCleanPath();
+    }
+
     Key createTestObject(String name)
     {
         Key key = new Key(name);
@@ -91,41 +115,112 @@
         Integer pk = ((Many) key.getCurdate().getSum().get(0)).getSum();
         Criteria crit = new Criteria()
                 .addEqualTo("curdate.sum.sum", pk)
-                .addGreaterThan("mod(max, mod)", new Integer(key.getMod().intValue() + 10))
+                .addLessThan("mod(max, mod)", new Integer(key.getMod().intValue() + 10))
                 .addGreaterThan("abs(as)", new Integer(0));
         Query q = QueryFactory.newQuery(Key.class, crit);
-
         Key keyNew = (Key) broker.getObjectByQuery(q);
+        assertNotNull(keyNew);
+        assertEquals(key, keyNew);
 
+
+        crit = new Criteria()
+                .addEqualTo("  curdate.sum.sum  ", pk)
+                .addLessThan("mod( max,  mod  )", new Integer(key.getMod().intValue() + 10))
+                .addGreaterThan("abs( as) ", new Integer(0));
+        q = QueryFactory.newQuery(Key.class, crit);
+        keyNew = (Key) broker.getObjectByQuery(q);
         assertNotNull(keyNew);
         assertEquals(key, keyNew);
     }
 
-    public void testReportQuery()
+    public void testReportQuery_1()
     {
-        String name = "testReportQuery_" + System.currentTimeMillis();
+        String name = "testReportQuery_1_" + System.currentTimeMillis();
+        createTestObject(name);
+        broker.clearCache();
+
+        Criteria crit = new Criteria().addEqualTo("name", name);
+        ReportQueryByCriteria q = QueryFactory.newReportQuery(Key.class, crit);
+        q.setAttributes(new String[]{"name", "sum(curdate.sum.sum)"});
+        q.addGroupBy("name");
+
+        Iterator it = broker.getReportQueryIteratorByQuery(q);
+        int size = 0;
+        while(it.hasNext())
+        {
+            Object[] arr =  (Object[]) it.next();
+            assertNotNull(arr[0]);
+            assertNotNull(arr[1]);
+            ++size;
+//            System.out.println("arr[0]=" +arr[0]);
+//            System.out.println("arr[1]=" +arr[1]);
+        }
+        assertEquals(1, size);
+    }
+
+    public void testReportQuery_2()
+    {
+        String name = "testReportQuery_2_" + System.currentTimeMillis();
         Key key = createTestObject(name);
         broker.clearCache();
 
         Integer pk = ((Many) key.getCurdate().getSum().get(0)).getSum();
-        Criteria crit = new Criteria().addEqualTo("curdate.sum.sum", pk);
+        Criteria crit = new Criteria().addEqualTo("curdate.sum.sum", pk).addEqualTo("name", name);
         ReportQueryByCriteria q = QueryFactory.newReportQuery(Key.class, crit);
-        q.setAttributes(new String[]{"name", "sum(curdate.sum)"});
+        q.setAttributes(new String[]{"name", "sum(curdate.sum.fkOne)"});
+        q.addGroupBy("name");
 
         Iterator it = broker.getReportQueryIteratorByQuery(q);
+        int size = 0;
         while(it.hasNext())
         {
             Object[] arr =  (Object[]) it.next();
             assertNotNull(arr[0]);
             assertNotNull(arr[1]);
+            ++size;
 //            System.out.println("arr[0]=" +arr[0]);
 //            System.out.println("arr[1]=" +arr[1]);
         }
+        assertEquals(1, size);
+    }
+
+    public void testReportQuery_3()
+    {
+        String name = "testReportQuery_3_" + System.currentTimeMillis();
+        Key key = createTestObject(name);
+        broker.clearCache();
+
+        Integer pk = ((Many) key.getCurdate().getSum().get(0)).getSum();
+        Criteria crit = new Criteria().addEqualTo("curdate.sum.sum", pk).addEqualTo("name", name);
+        ReportQueryByCriteria q = QueryFactory.newReportQuery(Key.class, crit);
+        q.setAttributes(new String[]{"name", "sum(curdate.sum.fkOne)", "curdate()"});
+        q.addGroupBy("name");
+
+//        Criteria crit = new Criteria();
+//        ReportQueryByCriteria q = QueryFactory.newReportQuery(Key.class, crit);
+//        q.setAttributes(new String[]{"name", "sum(curdate.sum.fkOne)", "curdate()"});
+//        q.addGroupBy("name");
+//        q.setEndAtIndex(1);
+
+        Iterator it = broker.getReportQueryIteratorByQuery(q);
+        int size = 0;
+        while(it.hasNext())
+        {
+            Object[] arr =  (Object[]) it.next();
+            assertNotNull(arr[0]);
+            assertNotNull(arr[1]);
+            assertNotNull(arr[2]);
+            ++size;
+            System.out.println();
+            System.out.print("arr[0]=" +arr[0]);
+            System.out.print(" arr[1]=" +arr[1]);
+            System.out.print(" arr[2]=" +arr[2]);
+
+        }
+        assertEquals(1, size);
     }
 
-    /*
-    count,min,max,avg,sum,upper,lower,distinct,as
-    */
+
     /**
      * This persistence capable class contains field names equal to
      * sql-query function names and keywords.

Modified: db/ojb/trunk/src/test/org/apache/ojb/repository_junit.xml
URL: http://svn.apache.org/viewvc/db/ojb/trunk/src/test/org/apache/ojb/repository_junit.xml?view=diff&rev=520718&r1=520717&r2=520718
==============================================================================
--- db/ojb/trunk/src/test/org/apache/ojb/repository_junit.xml (original)
+++ db/ojb/trunk/src/test/org/apache/ojb/repository_junit.xml Tue Mar 20 19:25:31 2007
@@ -3796,7 +3796,7 @@
         <reference-descriptor
            name="curdate"
            class-ref="org.apache.ojb.broker.FunctionTest$One"
-           proxy="true"
+           proxy="false"
            auto-retrieve="true"
            auto-update="object"
            auto-delete="object"
@@ -3826,7 +3826,7 @@
         <collection-descriptor
          name="sum"
          element-class-ref="org.apache.ojb.broker.FunctionTest$Many"
-         proxy="true"
+         proxy="false"
          auto-retrieve="true"
          auto-update="object"
          auto-delete="object"



---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org