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/18 02:49:00 UTC
svn commit: r519509 - in /db/ojb/trunk/src: schema/ojbtest-schema.xml
test/org/apache/ojb/broker/AllTests.java
test/org/apache/ojb/broker/FunctionTest.java
test/org/apache/ojb/repository_junit.xml
Author: arminw
Date: Sat Mar 17 18:48:59 2007
New Revision: 519509
URL: http://svn.apache.org/viewvc?view=rev&rev=519509
Log:
add test for OJB-133
Added:
db/ojb/trunk/src/test/org/apache/ojb/broker/FunctionTest.java
Modified:
db/ojb/trunk/src/schema/ojbtest-schema.xml
db/ojb/trunk/src/test/org/apache/ojb/broker/AllTests.java
db/ojb/trunk/src/test/org/apache/ojb/repository_junit.xml
Modified: db/ojb/trunk/src/schema/ojbtest-schema.xml
URL: http://svn.apache.org/viewvc/db/ojb/trunk/src/schema/ojbtest-schema.xml?view=diff&rev=519509&r1=519508&r2=519509
==============================================================================
--- db/ojb/trunk/src/schema/ojbtest-schema.xml (original)
+++ db/ojb/trunk/src/schema/ojbtest-schema.xml Sat Mar 17 18:48:59 2007
@@ -2115,4 +2115,77 @@
size="254"
/>
</table>
+
+
+ <table name="FUNCTION_TEST_KEY">
+ <column
+ name="IDENTITY_"
+ type="INTEGER"
+ primaryKey="true"/>
+ <column
+ name="MOD_"
+ type="INTEGER"
+ primaryKey="true"
+ />
+ <column
+ name="MAX_"
+ type="INTEGER"
+ primaryKey="true"
+ />
+ <column
+ name="AVG_"
+ type="INTEGER"
+ primaryKey="true"
+ />
+ <column
+ name="DISTINCT_"
+ type="INTEGER"
+ primaryKey="true"
+ />
+ <column
+ name="HOUR_"
+ type="VARCHAR"
+ primaryKey="true"
+ />
+ <column
+ name="AS_"
+ type="VARCHAR"
+ primaryKey="true"
+ />
+ <column
+ name="NAME_"
+ type="VARCHAR"/>
+ <column
+ name="FK_ONE_"
+ type="INTEGER"/>
+ <foreign-key foreignTable="FUNCTION_TEST_ONE">
+ <reference local="FK_ONE_" foreign="ABS_"/>
+ </foreign-key>
+ </table>
+
+ <table name="FUNCTION_TEST_ONE">
+ <column
+ name="ABS_"
+ type="INTEGER"
+ primaryKey="true"
+ />
+ <column
+ name="NAME_"
+ type="VARCHAR"/>
+ </table>
+
+ <table name="FUNCTION_TEST_MANY">
+ <column
+ name="SUM_"
+ type="INTEGER"
+ primaryKey="true"
+ />
+ <column
+ name="NAME_"
+ type="VARCHAR"/>
+ <column
+ name="FK_ONE_"
+ type="INTEGER"/>
+ </table>
+
</database>
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=519509&r1=519508&r2=519509
==============================================================================
--- db/ojb/trunk/src/test/org/apache/ojb/broker/AllTests.java (original)
+++ db/ojb/trunk/src/test/org/apache/ojb/broker/AllTests.java Sat Mar 17 18:48:59 2007
@@ -155,6 +155,11 @@
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(IdentityPerformanceTest.class);
suite.addTestSuite(CreationTest.class);
suite.addTestSuite(FactoryTest.class);
Added: 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=auto&rev=519509
==============================================================================
--- db/ojb/trunk/src/test/org/apache/ojb/broker/FunctionTest.java (added)
+++ db/ojb/trunk/src/test/org/apache/ojb/broker/FunctionTest.java Sat Mar 17 18:48:59 2007
@@ -0,0 +1,382 @@
+package org.apache.ojb.broker;
+
+/* Copyright 2002-2007 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.lang.Object;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Iterator;
+
+import org.apache.ojb.junit.PBTestCase;
+import org.apache.ojb.broker.query.Criteria;
+import org.apache.ojb.broker.query.Query;
+import org.apache.ojb.broker.query.QueryFactory;
+import org.apache.ojb.broker.query.ReportQueryByCriteria;
+import org.apache.commons.lang.builder.EqualsBuilder;
+
+/**
+ * This class tests the correct detection of attributes, functions and keywords.
+ *
+ * @version $Id$
+ */
+public class FunctionTest extends PBTestCase
+{
+ public static void main(String[] args)
+ {
+ String[] arr = {FunctionTest.class.getName()};
+ junit.textui.TestRunner.main(arr);
+ }
+
+ public FunctionTest()
+ {
+ }
+
+ public FunctionTest(String name)
+ {
+ super(name);
+ }
+
+ Key createTestObject(String name)
+ {
+ Key key = new Key(name);
+ One one = new One(name);
+ Many m1 = new Many(name + "_1");
+ Many m2 = new Many(name + "_2");
+ Many m3 = new Many(name + "_3");
+ Many m4 = new Many(name + "_4");
+ key.setCurdate(one);
+ one.addSum(m1);
+ one.addSum(m2);
+ one.addSum(m3);
+ one.addSum(m4);
+ broker.beginTransaction();
+ broker.store(key);
+ broker.commitTransaction();
+
+ return key;
+ }
+
+ public void testInsert()
+ {
+ String name = "testInsert_" + System.currentTimeMillis();
+ Key key = createTestObject(name);
+
+ Identity oid = broker.serviceIdentity().buildIdentity(key);
+ broker.clearCache();
+ Key keyNew = (Key) broker.getObjectByIdentity(oid);
+
+ assertNotNull(keyNew);
+ assertEquals(key, keyNew);
+ }
+
+ public void testQuery()
+ {
+ String name = "testQuery_" + 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)
+ .addGreaterThan("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);
+ }
+
+ public void testReportQuery()
+ {
+ String name = "testReportQuery_" + 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);
+ ReportQueryByCriteria q = QueryFactory.newReportQuery(Key.class, crit);
+ q.setAttributes(new String[]{"name", "sum(curdate.sum)"});
+
+ Iterator it = broker.getReportQueryIteratorByQuery(q);
+ while(it.hasNext())
+ {
+ Object[] arr = (Object[]) it.next();
+ assertNotNull(arr[0]);
+ assertNotNull(arr[1]);
+// System.out.println("arr[0]=" +arr[0]);
+// System.out.println("arr[1]=" +arr[1]);
+ }
+ }
+
+ /*
+ count,min,max,avg,sum,upper,lower,distinct,as
+ */
+ /**
+ * This persistence capable class contains field names equal to
+ * sql-query function names and keywords.
+ */
+ public static class Key
+ {
+ private Integer identity;
+ private Integer mod;
+ private Integer max;
+ private Integer avg;
+ private Integer distinct;
+ private String hour;
+ private String as;
+ private String name;
+ private One curdate;
+
+
+ public Key()
+ {
+ }
+
+ public Key(String name)
+ {
+ this.name = name;
+ }
+
+ public Integer getIdentity()
+ {
+ return identity;
+ }
+
+ public void setIdentity(Integer identity)
+ {
+ this.identity = identity;
+ }
+
+ public Integer getMod()
+ {
+ return mod;
+ }
+
+ public void setMod(Integer mod)
+ {
+ this.mod = mod;
+ }
+
+ public Integer getMax()
+ {
+ return max;
+ }
+
+ public void setMax(Integer max)
+ {
+ this.max = max;
+ }
+
+ public Integer getAvg()
+ {
+ return avg;
+ }
+
+ public void setAvg(Integer avg)
+ {
+ this.avg = avg;
+ }
+
+ public Integer getDistinct()
+ {
+ return distinct;
+ }
+
+ public void setDistinct(Integer distinct)
+ {
+ this.distinct = distinct;
+ }
+
+ public String getHour()
+ {
+ return hour;
+ }
+
+ public void setHour(String hour)
+ {
+ this.hour = hour;
+ }
+
+ public String getAs()
+ {
+ return as;
+ }
+
+ public void setAs(String as)
+ {
+ this.as = as;
+ }
+
+ public String getName()
+ {
+ return name;
+ }
+
+ public void setName(String name)
+ {
+ this.name = name;
+ }
+
+ public One getCurdate()
+ {
+ return curdate;
+ }
+
+ public void setCurdate(One curdate)
+ {
+ this.curdate = curdate;
+ }
+
+ public boolean equals(Object obj)
+ {
+ if(!(obj instanceof Key)) return false;
+ Key k = (Key) obj;
+ return new EqualsBuilder()
+ .append(as, k.as)
+ .append(avg, k.avg)
+ .append(curdate, k.curdate)
+ .append(distinct, k.distinct)
+ .append(hour, k.hour)
+ .append(identity, k.identity)
+ .append(max, k.max)
+ .append(mod, k.mod)
+ .append(name, k.name)
+ .isEquals();
+ }
+ }
+
+ public static class One
+ {
+ private Integer abs;
+ private String name;
+ private List sum;
+
+ public One()
+ {
+ }
+
+ public One(String name)
+ {
+ this.name = name;
+ }
+
+ public List getSum()
+ {
+ return sum;
+ }
+
+ public void setSum(List sum)
+ {
+ this.sum = sum;
+ }
+
+ public void addSum(Many many)
+ {
+ if(sum == null) sum = new ArrayList();
+ if(!sum.contains(many)) sum.add(many);
+ }
+
+ public String getName()
+ {
+ return name;
+ }
+
+ public void setName(String name)
+ {
+ this.name = name;
+ }
+
+ public Integer getAbs()
+ {
+ return abs;
+ }
+
+ public void setAbs(Integer abs)
+ {
+ this.abs = abs;
+ }
+
+ public boolean equals(Object obj)
+ {
+ if(!(obj instanceof One)) return false;
+ One k = (One) obj;
+ return new EqualsBuilder()
+ .append(abs, k.abs)
+ .append(sum, k.sum)
+ .append(name, k.name)
+ .isEquals();
+ }
+ }
+
+ public static class Many
+ {
+ private Integer sum;
+ private String name;
+ private Integer fkOne;
+
+ public Many()
+ {
+ }
+
+ public Many(String name)
+ {
+ this.name = name;
+ }
+
+ public String getName()
+ {
+ return name;
+ }
+
+ public void setName(String name)
+ {
+ this.name = name;
+ }
+
+ public Integer getSum()
+ {
+ return sum;
+ }
+
+ public void setSum(Integer sum)
+ {
+ this.sum = sum;
+ }
+
+ public Integer getFkOne()
+ {
+ return fkOne;
+ }
+
+ public void setFkOne(Integer fkOne)
+ {
+ this.fkOne = fkOne;
+ }
+
+ public boolean equals(Object obj)
+ {
+ if(!(obj instanceof Many)) return false;
+ Many k = (Many) obj;
+ return new EqualsBuilder()
+ .append(fkOne, k.fkOne)
+ .append(sum, k.sum)
+ .append(name, k.name)
+ .isEquals();
+ }
+ }
+}
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=519509&r1=519508&r2=519509
==============================================================================
--- db/ojb/trunk/src/test/org/apache/ojb/repository_junit.xml (original)
+++ db/ojb/trunk/src/test/org/apache/ojb/repository_junit.xml Sat Mar 17 18:48:59 2007
@@ -3716,4 +3716,148 @@
<runtime-argument field-ref="name" return="true"/>
</select-by-pk-procedure>
</class-descriptor>
+
+
+
+
+ <class-descriptor
+ class="org.apache.ojb.broker.FunctionTest$Key"
+ table="FUNCTION_TEST_KEY"
+ >
+ <field-descriptor
+ name="identity"
+ column="IDENTITY_"
+ jdbc-type="INTEGER"
+ primarykey="true"
+ autoincrement="true"
+ />
+
+ <field-descriptor
+ name="mod"
+ column="MOD_"
+ jdbc-type="INTEGER"
+ primarykey="true"
+ autoincrement="true"
+ />
+
+ <field-descriptor
+ name="max"
+ column="MAX_"
+ jdbc-type="INTEGER"
+ primarykey="true"
+ autoincrement="true"
+ />
+
+ <field-descriptor
+ name="avg"
+ column="AVG_"
+ jdbc-type="INTEGER"
+ primarykey="true"
+ autoincrement="true"
+ />
+
+ <field-descriptor
+ name="distinct"
+ column="DISTINCT_"
+ jdbc-type="INTEGER"
+ primarykey="true"
+ autoincrement="true"
+ />
+
+ <field-descriptor
+ name="hour"
+ column="HOUR_"
+ jdbc-type="VARCHAR"
+ primarykey="true"
+ autoincrement="true"
+ />
+
+ <field-descriptor
+ name="as"
+ column="AS_"
+ jdbc-type="VARCHAR"
+ primarykey="true"
+ autoincrement="true"
+ />
+
+ <field-descriptor
+ name="name"
+ column="NAME_"
+ jdbc-type="VARCHAR"
+ />
+
+ <field-descriptor
+ name="fkOne"
+ column="FK_ONE_"
+ jdbc-type="INTEGER"
+ access="anonymous"
+ />
+
+ <reference-descriptor
+ name="curdate"
+ class-ref="org.apache.ojb.broker.FunctionTest$One"
+ proxy="true"
+ auto-retrieve="true"
+ auto-update="object"
+ auto-delete="object"
+ >
+ <foreignkey field-ref="fkOne"/>
+ </reference-descriptor>
+ </class-descriptor>
+
+ <class-descriptor
+ class="org.apache.ojb.broker.FunctionTest$One"
+ table="FUNCTION_TEST_ONE"
+ >
+ <field-descriptor
+ name="abs"
+ column="ABS_"
+ jdbc-type="INTEGER"
+ primarykey="true"
+ autoincrement="true"
+ />
+
+ <field-descriptor
+ name="name"
+ column="NAME_"
+ jdbc-type="VARCHAR"
+ />
+
+ <collection-descriptor
+ name="sum"
+ element-class-ref="org.apache.ojb.broker.FunctionTest$Many"
+ proxy="true"
+ auto-retrieve="true"
+ auto-update="object"
+ auto-delete="object"
+ >
+ <inverse-foreignkey field-ref="fkOne"/>
+ </collection-descriptor>
+ </class-descriptor>
+
+ <class-descriptor
+ class="org.apache.ojb.broker.FunctionTest$Many"
+ table="FUNCTION_TEST_MANY"
+ >
+ <field-descriptor
+ name="sum"
+ column="SUM_"
+ jdbc-type="INTEGER"
+ primarykey="true"
+ autoincrement="true"
+ />
+
+ <field-descriptor
+ name="name"
+ column="NAME_"
+ jdbc-type="VARCHAR"
+ />
+
+ <field-descriptor
+ name="fkOne"
+ column="FK_ONE_"
+ jdbc-type="INTEGER"
+ />
+ </class-descriptor>
+
<!-- Mapping of classes used in junit tests and tutorials ends here -->
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org