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: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]