You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jdo-commits@db.apache.org by mb...@apache.org on 2005/05/22 20:40:21 UTC
svn commit: r171355 [24/31] - in /incubator/jdo/trunk/fostore20: ./ src/
src/conf/ src/java/ src/java/org/ src/java/org/apache/
src/java/org/apache/jdo/ src/java/org/apache/jdo/impl/
src/java/org/apache/jdo/impl/fostore/ test/ test/conf/ test/fsuid2/
test/fsuid2/org/ test/fsuid2/org/apache/ test/fsuid2/org/apache/jdo/
test/fsuid2/org/apache/jdo/pc/ test/java/ test/java/org/
test/java/org/apache/ test/java/org/apache/jdo/
test/java/org/apache/jdo/impl/ test/java/org/apache/jdo/impl/fostore/
test/java/org/apache/jdo/pc/ test/java/org/apache/jdo/pc/appid/
test/java/org/apache/jdo/pc/empdept/
test/java/org/apache/jdo/pc/serializable/
test/java/org/apache/jdo/pc/xempdept/ test/java/org/apache/jdo/test/
test/java/org/apache/jdo/test/query/ test/java/org/apache/jdo/test/util/
test/jdo/ test/jdo/org/ test/jdo/org/apache/ test/jdo/org/apache/jdo/
test/jdo/org/apache/jdo/pc/ test/jdo/org/apache/jdo/pc/appid/
test/jdo/org/apache/jdo/pc/empdept/ test/jdo/org/apache/jdo/pc/serializable/
test/jdo/org/apache/jdo/pc/xempdept/
Added: incubator/jdo/trunk/fostore20/test/java/org/apache/jdo/test/query/BasicTest.java
URL: http://svn.apache.org/viewcvs/incubator/jdo/trunk/fostore20/test/java/org/apache/jdo/test/query/BasicTest.java?rev=171355&view=auto
==============================================================================
--- incubator/jdo/trunk/fostore20/test/java/org/apache/jdo/test/query/BasicTest.java (added)
+++ incubator/jdo/trunk/fostore20/test/java/org/apache/jdo/test/query/BasicTest.java Sun May 22 11:40:13 2005
@@ -0,0 +1,1473 @@
+/*
+ * Copyright 2005 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.
+ */
+
+/*
+ * BasicTest.java
+ *
+ * Created on March 31, 2000
+ */
+
+package org.apache.jdo.test.query;
+
+import java.util.*;
+import java.math.*;
+import java.io.PrintStream;
+
+import javax.jdo.*;
+
+import org.apache.jdo.pc.xempdept.Department;
+import org.apache.jdo.pc.xempdept.Employee;
+import org.apache.jdo.pc.xempdept.PrimitiveTypes;
+
+/**
+ *
+ * @author Michael Bouschen
+ */
+public class BasicTest
+ extends PositiveTest
+{
+ public BasicTest(PersistenceManagerFactory pmf, PrintStream log)
+ {
+ super(pmf, log);
+ }
+
+ protected boolean isTestMethodName(String methodName)
+ {
+ return methodName.startsWith("basic");
+ }
+
+ // ==========================================================================
+ // Test methods
+ // ==========================================================================
+
+ /**
+ * Testcase: relational operation
+ * field == literal
+ */
+ public void basic001()
+ throws Exception
+ {
+ Transaction tx = pm.currentTransaction();
+ tx.begin();
+
+ // create and execute query
+
+ Query query = pm.newQuery();
+ query.setClass(Employee.class);
+ query.setFilter("empid == 1");
+ setEmployeeCandidates(query);
+ Object result = query.execute();
+ List oids = getResultOids(result);
+ Collections.sort(oids);
+
+ // check query result
+
+ Collection expected = new ArrayList();
+ Employee.Oid key = new Employee.Oid();
+ key.empid = 1;
+ expected.add(key);
+ checkQueryResult(oids, expected);
+
+ tx.commit();
+ }
+
+ /**
+ * Testcase: relational operation
+ * field == literal (String)
+ */
+ public void basic002()
+ throws Exception
+ {
+ Transaction tx = pm.currentTransaction();
+ tx.begin();
+
+ // create and execute query
+ Query query = pm.newQuery();
+ query.setClass(Employee.class);
+ query.setFilter("lastname == \"lastEngTwo\"");
+ setEmployeeCandidates(query);
+ Object result = query.execute();
+ List oids = getResultOids(result);
+ Collections.sort(oids);
+
+ // check query result
+
+ Collection expected = new ArrayList();
+ Employee.Oid key = new Employee.Oid();
+ key.empid = 2;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 12;
+ expected.add(key);
+ checkQueryResult(oids, expected);
+
+ tx.commit();
+ }
+ /**
+ * Testcase: relational operation
+ * literal == field
+ */
+ public void basic003()
+ throws Exception
+ {
+ Transaction tx = pm.currentTransaction();
+ tx.begin();
+
+ // create and execute query
+
+ Query query = pm.newQuery();
+ query.setClass(Employee.class);
+ query.setFilter("1 == empid");
+ setEmployeeCandidates(query);
+ Object result = query.execute();
+ List oids = getResultOids(result);
+ Collections.sort(oids);
+
+ // check query result
+
+ Collection expected = new ArrayList();
+ Employee.Oid key = new Employee.Oid();
+ key.empid = 1;
+ expected.add(key);
+
+ checkQueryResult(oids, expected);
+
+ tx.commit();
+ }
+
+ /**
+ * Testcase: relational operation
+ * this.field == literal
+ */
+ public void basic004()
+ throws Exception
+ {
+ Transaction tx = pm.currentTransaction();
+ tx.begin();
+
+ // create and execute query
+
+ Query query = pm.newQuery();
+ query.setClass(Employee.class);
+ query.setFilter("this.empid == 1");
+ setEmployeeCandidates(query);
+ Object result = query.execute();
+ List oids = getResultOids(result);
+ Collections.sort(oids);
+
+ // check query result
+
+ Collection expected = new ArrayList();
+ Employee.Oid key = new Employee.Oid();
+ key.empid = 1;
+ expected.add(key);
+ checkQueryResult(oids, expected);
+
+ tx.commit();
+ }
+
+ /**
+ * Testcase: relational operation
+ * field != literal
+ */
+ public void basic005()
+ throws Exception
+ {
+ Transaction tx = pm.currentTransaction();
+ tx.begin();
+
+ // create and execute query
+
+ Query query = pm.newQuery();
+ query.setClass(Employee.class);
+ query.setFilter("empid != 2");
+ setEmployeeCandidates(query);
+ Object result = query.execute();
+ List oids = getResultOids(result);
+ Collections.sort(oids);
+
+ // check query result
+
+ Collection expected = new ArrayList();
+ Employee.Oid key = new Employee.Oid();
+ key.empid = 1;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 3;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 4;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 5;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 6;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 7;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 8;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 9;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 11;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 12;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 13;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 100;
+ expected.add(key);
+ checkQueryResult(oids, expected);
+
+ tx.commit();
+ }
+
+ /**
+ * Testcase: relational operation
+ * field != literal (Strings)
+ */
+ public void basic006()
+ throws Exception
+ {
+ Transaction tx = pm.currentTransaction();
+ tx.begin();
+
+ // create and execute query
+
+ Query query = pm.newQuery();
+ query.setClass(Employee.class);
+ query.setFilter("lastname != \"lastEngThree\"");
+ setEmployeeCandidates(query);
+ Object result = query.execute();
+ List oids = getResultOids(result);
+ Collections.sort(oids);
+
+ // check query result
+
+ Collection expected = new ArrayList();
+ Employee.Oid key = new Employee.Oid();
+ key.empid = 1;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 2;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 4;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 5;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 6;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 7;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 8;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 9;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 11;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 12;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 13;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 100;
+ expected.add(key);
+ checkQueryResult(oids, expected);
+
+ tx.commit();
+ }
+
+ /**
+ * Testcase: relational operation
+ * field < literal
+ */
+ public void basic007()
+ throws Exception
+ {
+ Transaction tx = pm.currentTransaction();
+ tx.begin();
+
+ // create and execute query
+
+ Query query = pm.newQuery(Employee.class);
+ query.setFilter("empid < 6");
+ setEmployeeCandidates(query);
+ Object result = query.execute();
+ List oids = getResultOids(result);
+ Collections.sort(oids);
+
+ // check query result
+
+ Collection expected = new ArrayList();
+ Employee.Oid key = new Employee.Oid();
+ key.empid = 1;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 2;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 3;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 4;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 5;
+ expected.add(key);
+ checkQueryResult(oids, expected);
+
+ tx.commit();
+ }
+
+ /**
+ * Testcase: relational operation
+ * field <= literal
+ */
+ public void basic008()
+ throws Exception
+ {
+ Transaction tx = pm.currentTransaction();
+ tx.begin();
+
+ // create and execute query
+
+ Query query = pm.newQuery(Employee.class);
+ query.setFilter("empid <= 3");
+ setEmployeeCandidates(query);
+ Object result = query.execute();
+ List oids = getResultOids(result);
+ Collections.sort(oids);
+
+ // check query result
+
+ Collection expected = new ArrayList();
+ Employee.Oid key = new Employee.Oid();
+ key.empid = 1;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 2;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 3;
+ expected.add(key);
+ checkQueryResult(oids, expected);
+
+ tx.commit();
+ }
+
+ /**
+ * Testcase: relational operation
+ * field > literal
+ */
+ public void basic009()
+ throws Exception
+ {
+ Transaction tx = pm.currentTransaction();
+ tx.begin();
+
+ // create and execute query
+
+ Query query = pm.newQuery(Employee.class);
+ query.setFilter("empid > 4");
+ setEmployeeCandidates(query);
+ Object result = query.execute();
+ List oids = getResultOids(result);
+ Collections.sort(oids);
+
+ // check query result
+
+ Collection expected = new ArrayList();
+ Employee.Oid key = new Employee.Oid();
+ key.empid = 5;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 6;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 7;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 8;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 9;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 11;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 12;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 13;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 100;
+ expected.add(key);
+ checkQueryResult(oids, expected);
+
+ tx.commit();
+ }
+
+ /**
+ * Testcase: relational operation
+ * field >= literal
+ */
+ public void basic010()
+ throws Exception
+ {
+ Transaction tx = pm.currentTransaction();
+ tx.begin();
+
+ // create and execute query
+
+ Query query = pm.newQuery(Employee.class);
+ query.setFilter("empid >= 4");
+ setEmployeeCandidates(query);
+ Object result = query.execute();
+ List oids = getResultOids(result);
+ Collections.sort(oids);
+
+ // check query result
+
+ Collection expected = new ArrayList();
+ Employee.Oid key = new Employee.Oid();
+ key.empid = 4;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 5;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 6;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 7;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 8;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 9;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 11;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 12;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 13;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 100;
+ expected.add(key);
+ checkQueryResult(oids, expected);
+
+ tx.commit();
+ }
+
+ /**
+ * Testcase: relational operation
+ * literal < field
+ */
+ public void basic011()
+ throws Exception
+ {
+ Transaction tx = pm.currentTransaction();
+ tx.begin();
+
+ // create and execute query
+
+ Query query = pm.newQuery(Employee.class);
+ query.setFilter("4 < empid");
+ setEmployeeCandidates(query);
+ Object result = query.execute();
+ List oids = getResultOids(result);
+ Collections.sort(oids);
+
+ // check query result
+
+ Collection expected = new ArrayList();
+ Employee.Oid key = new Employee.Oid();
+ key.empid = 5;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 6;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 7;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 8;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 9;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 11;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 12;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 13;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 100;
+ expected.add(key);
+ checkQueryResult(oids, expected);
+
+ tx.commit();
+ }
+
+ /**
+ * Testcase: logical operation
+ * cond & cond
+ */
+ public void basic012()
+ throws Exception
+ {
+ Transaction tx = pm.currentTransaction();
+ tx.begin();
+
+ // create and execute query
+
+ Query query = pm.newQuery();
+ query.setClass(Employee.class);
+ query.setFilter("(empid == 1) & (lastname == \"lastEngOne\")");
+ setEmployeeCandidates(query);
+ Object result = query.execute();
+ List oids = getResultOids(result);
+ Collections.sort(oids);
+
+ // check query result
+
+ Collection expected = new ArrayList();
+ Employee.Oid key = new Employee.Oid();
+ key.empid = 1;
+ expected.add(key);
+ checkQueryResult(oids, expected);
+
+ tx.commit();
+ }
+
+ /**
+ * Testcase: logical operation
+ * cond | cond
+ */
+ public void basic013()
+ throws Exception
+ {
+ Transaction tx = pm.currentTransaction();
+ tx.begin();
+
+ // create and execute query
+
+ Query query = pm.newQuery();
+ query.setClass(Employee.class);
+ query.setFilter("(empid == 2) | (lastname == \"lastEngThree\")");
+ setEmployeeCandidates(query);
+ Object result = query.execute();
+ List oids = getResultOids(result);
+ Collections.sort(oids);
+
+ // check query result
+
+ Collection expected = new ArrayList();
+ Employee.Oid key = new Employee.Oid();
+ key.empid = 2;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 3;
+ expected.add(key);
+ checkQueryResult(oids, expected);
+
+ tx.commit();
+ }
+
+ /**
+ * Testcase: conditional operation
+ * cond && cond
+ */
+ public void basic014()
+ throws Exception
+ {
+ Transaction tx = pm.currentTransaction();
+ tx.begin();
+
+ // create and execute query
+
+ Query query = pm.newQuery();
+ query.setClass(Employee.class);
+ query.setFilter("(empid == 1) && (lastname == \"lastEngOne\")");
+ setEmployeeCandidates(query);
+ Object result = query.execute();
+ List oids = getResultOids(result);
+ Collections.sort(oids);
+
+ // check query result
+
+ Collection expected = new ArrayList();
+ Employee.Oid key = new Employee.Oid();
+ key.empid = 1;
+ expected.add(key);
+ checkQueryResult(oids, expected);
+
+ tx.commit();
+ }
+
+ /**
+ * Testcase: conditional operation
+ * cond || cond
+ */
+ public void basic015()
+ throws Exception
+ {
+ Transaction tx = pm.currentTransaction();
+ tx.begin();
+
+ // create and execute query
+
+ Query query = pm.newQuery();
+ query.setClass(Employee.class);
+ query.setFilter("(empid == 2) || (lastname == \"lastEngThree\")");
+ setEmployeeCandidates(query);
+ Object result = query.execute();
+ List oids = getResultOids(result);
+ Collections.sort(oids);
+
+ // check query result
+
+ Collection expected = new ArrayList();
+ Employee.Oid key = new Employee.Oid();
+ key.empid = 2;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 3;
+ expected.add(key);
+ checkQueryResult(oids, expected);
+
+ tx.commit();
+ }
+
+ /**
+ * Testcase: ! operation
+ * checks bug report 4343836
+ */
+ public void basic016()
+ throws Exception
+ {
+ Transaction tx = pm.currentTransaction();
+ tx.begin();
+
+ // create and execute query
+
+ Query query = pm.newQuery();
+ query.setClass(Employee.class);
+ query.setFilter("!(empid > 2)");
+ setEmployeeCandidates(query);
+ Object result = query.execute();
+ List oids = getResultOids(result);
+ Collections.sort(oids);
+
+ // check query result
+
+ Collection expected = new ArrayList();
+ Employee.Oid key = new Employee.Oid();
+ key.empid = 1;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 2;
+ expected.add(key);
+ checkQueryResult(oids, expected);
+
+ tx.commit();
+ }
+
+ /**
+ * Testcase: access of static field
+ */
+ public void basic017()
+ throws Exception
+ {
+ Transaction tx = pm.currentTransaction();
+ tx.begin();
+
+ // create and execute query
+
+
+ Query query = pm.newQuery();
+ query.setClass(Employee.class);
+ query.declareImports("import java.lang.Byte");
+ query.setFilter("empid < Byte.MAX_VALUE");
+ setEmployeeCandidates(query);
+ Object result = query.execute();
+ List oids = getResultOids(result);
+ Collections.sort(oids);
+
+ // check query result
+
+ Collection expected = new ArrayList();
+ Employee.Oid key = new Employee.Oid();
+ key.empid = 1;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 2;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 3;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 4;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 5;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 6;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 7;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 8;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 9;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 11;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 12;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 13;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 100;
+ expected.add(key);
+ checkQueryResult(oids, expected);
+
+ tx.commit();
+ }
+
+ /**
+ * Testcase: true filter
+ */
+ public void basic018()
+ throws Exception
+ {
+ Transaction tx = pm.currentTransaction();
+ tx.begin();
+
+ // create and execute query
+
+ Query query = pm.newQuery();
+ query.setClass(Department.class);
+ query.setFilter("true");
+ setDepartmentCandidates(query);
+ Object result = query.execute();
+ List oids = getResultOids(result);
+ Collections.sort(oids);
+
+ // check query result
+
+ Collection expected = new ArrayList();
+ Department.Oid key = new Department.Oid();
+ key.deptid = 1;
+ expected.add(key);
+ key = new Department.Oid();
+ key.deptid = 2;
+ expected.add(key);
+ key = new Department.Oid();
+ key.deptid = 3;
+ expected.add(key);
+ key = new Department.Oid();
+ key.deptid = 4;
+ expected.add(key);
+ key = new Department.Oid();
+ key.deptid = 11;
+ expected.add(key);
+ key = new Department.Oid();
+ key.deptid = 12;
+ expected.add(key);
+ key = new Department.Oid();
+ key.deptid = 100;
+ expected.add(key);
+ checkQueryResult(oids, expected);
+
+ tx.commit();
+ }
+
+ /**
+ * Testcase: false filter
+ */
+ public void basic019()
+ throws Exception
+ {
+ Transaction tx = pm.currentTransaction();
+ tx.begin();
+
+ // create and execute query
+
+ Query query = pm.newQuery();
+ query.setClass(Department.class);
+ query.setFilter("false");
+ setDepartmentCandidates(query);
+ Object result = query.execute();
+ List oids = getResultOids(result);
+ Collections.sort(oids);
+
+ // check query result
+
+ Collection expected = new ArrayList();
+ checkQueryResult(oids, expected);
+
+ tx.commit();
+ }
+
+ /**
+ * Testcase: iterate extent collection
+ * checks bug report 4371445
+ */
+ public void basic020()
+ throws Exception
+ {
+ Transaction tx = pm.currentTransaction();
+ tx.begin();
+
+ Collection result = new ArrayList();
+ Iterator i = (departmentCandidates == null) ?
+ pm.getExtent(Department.class, false).iterator() :
+ departmentCandidates.iterator();
+ while (i.hasNext())
+ result.add(i.next());
+ List oids = getResultOids(result);
+ Collections.sort(oids);
+
+ // check result
+
+ Collection expected = new ArrayList();
+ Department.Oid key = new Department.Oid();
+ key.deptid = 1;
+ expected.add(key);
+ key = new Department.Oid();
+ key.deptid = 2;
+ expected.add(key);
+ key = new Department.Oid();
+ key.deptid = 3;
+ expected.add(key);
+ key = new Department.Oid();
+ key.deptid = 4;
+ expected.add(key);
+ key = new Department.Oid();
+ key.deptid = 11;
+ expected.add(key);
+ key = new Department.Oid();
+ key.deptid = 12;
+ expected.add(key);
+ key = new Department.Oid();
+ key.deptid = 100;
+ expected.add(key);
+ checkQueryResult(oids, expected);
+
+ tx.commit();
+ }
+
+ /**
+ * Testcase: query result takes updated and new instances into accout
+ * datastore transaction
+ */
+ public void basic021()
+ throws Exception
+ {
+ Transaction tx = pm.currentTransaction();
+ boolean originalOptimisticFlag = tx.getOptimistic();
+ tx.setOptimistic(false);
+ tx.begin();
+
+ // create new Employee having weeklyhours = 40.0
+ Employee e = new Employee();
+ e.setEmpid(1000);
+ e.setLastname("Bouschen");
+ e.setFirstname("Michael");
+ e.setWeeklyhours(40.0);
+ e.setMentor(e);
+ pm.makePersistent(e);
+
+ // update weeklyhours of emplyoee 5 to be 40.0
+ Employee emp05 = getEmployeeById(5L);
+ emp05.setWeeklyhours(40.0);
+
+ // update salary of emplyoee 8 to be less than 40.0
+ Employee emp08 = getEmployeeById(8L);
+ emp08.setWeeklyhours(30.0);
+
+ // create query
+
+ Query query = pm.newQuery();
+ query.setClass(Employee.class);
+ query.setFilter("weeklyhours > 39.9");
+ setEmployeeCandidates(query);
+ Object result = query.execute();
+ List oids = getResultOids(result);
+ Collections.sort(oids);
+
+ // check query result
+
+ Collection expected = new ArrayList();
+ Employee.Oid key = new Employee.Oid();
+ key.empid = 1;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 2;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 4;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 5;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 6;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 11;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 13;
+ expected.add(key);
+ // In the case of an extent query the new employee with the empid 1000
+ // should be part of the result set.
+ // In the case of a memory query it should not.
+ if (employeeCandidates == null) { // means extent query
+ key = new Employee.Oid();
+ key.empid = 1000;
+ expected.add(key);
+ }
+ checkQueryResult(oids, expected);
+
+ tx.rollback();
+ tx.setOptimistic(originalOptimisticFlag);
+ }
+
+ /**
+ * Testcase: query result takes updated and new instances into accout
+ * optimistic transaction
+ */
+ public void basic022()
+ throws Exception
+ {
+ Transaction tx = pm.currentTransaction();
+ boolean originalOptimisticFlag = tx.getOptimistic();
+ tx.setOptimistic(true);
+ tx.begin();
+
+ // create new Employee having weeklyhours = 40.0
+ Employee e = new Employee();
+ e.setEmpid(1000);
+ e.setLastname("Bouschen");
+ e.setFirstname("Michael");
+ e.setWeeklyhours(40.0);
+ e.setMentor(e);
+ pm.makePersistent(e);
+
+ // update weeklyhours of emplyoee 5 to be 40.0
+ Employee emp05 = getEmployeeById(5L);
+ emp05.setWeeklyhours(40.0);
+
+ // update salary of emplyoee 8 to be less than 40.0
+ Employee emp08 = getEmployeeById(8L);
+ emp08.setWeeklyhours(30.0);
+
+ // create query
+
+ Query query = pm.newQuery();
+ query.setClass(Employee.class);
+ query.setFilter("weeklyhours > 39.9");
+ setEmployeeCandidates(query);
+ Object result = query.execute();
+ List oids = getResultOids(result);
+ Collections.sort(oids);
+
+ // check query result
+
+ Collection expected = new ArrayList();
+ Employee.Oid key = new Employee.Oid();
+ key.empid = 1;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 2;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 4;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 5;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 6;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 11;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 13;
+ expected.add(key);
+ // In the case of an extent query the new employee with the empid 1000
+ // should be part of the result set.
+ // In the case of a memory query it should not.
+ if (employeeCandidates == null) { // means extent query
+ key = new Employee.Oid();
+ key.empid = 1000;
+ expected.add(key);
+ }
+ checkQueryResult(oids, expected);
+
+ tx.rollback();
+ tx.setOptimistic(originalOptimisticFlag);
+ }
+
+ /**
+ * Testcase: char field compared with int literal
+ * checks bug report 4530265
+ */
+ public void basic023()
+ throws Exception
+ {
+ Transaction tx = pm.currentTransaction();
+ tx.begin();
+
+ Query query = pm.newQuery();
+ query.setClass(PrimitiveTypes.class);
+ query.setFilter("charNotNull == 48");
+ setPrimitiveTypesCandidates(query);
+ Object result = query.execute();
+ List oids = getResultOids(result);
+ Collections.sort(oids);
+
+ // check query result
+
+ Collection expected = new ArrayList();
+ PrimitiveTypes.Oid key = new PrimitiveTypes.Oid();
+ key.id = 0;
+ expected.add(key);
+ key = new PrimitiveTypes.Oid();
+ key.id = 12;
+ expected.add(key);
+ key = new PrimitiveTypes.Oid();
+ key.id = 13;
+ expected.add(key);
+ key = new PrimitiveTypes.Oid();
+ key.id = 14;
+ expected.add(key);
+ key = new PrimitiveTypes.Oid();
+ key.id = 15;
+ expected.add(key);
+ key = new PrimitiveTypes.Oid();
+ key.id = 100;
+ expected.add(key);
+ checkQueryResult(oids, expected);
+
+ tx.commit();
+ }
+
+ /**
+ * Testcase: Character field compared with double literal
+ * checks bug report 4530265
+ */
+ public void basic024()
+ throws Exception
+ {
+ Transaction tx = pm.currentTransaction();
+ tx.begin();
+
+ Query query = pm.newQuery();
+ query.setClass(PrimitiveTypes.class);
+ query.setFilter("charNull == 49.0");
+ setPrimitiveTypesCandidates(query);
+ Object result = query.execute();
+ List oids = getResultOids(result);
+ Collections.sort(oids);
+
+ // check query result
+
+ Collection expected = new ArrayList();
+ PrimitiveTypes.Oid key = new PrimitiveTypes.Oid();
+ key.id = 1;
+ expected.add(key);
+ checkQueryResult(oids, expected);
+
+ tx.commit();
+ }
+
+ /**
+ * Testcase: char field compared with Double parameter
+ * checks bug report 4530265
+ */
+ public void basic025()
+ throws Exception
+ {
+ Transaction tx = pm.currentTransaction();
+ tx.begin();
+
+ Query query = pm.newQuery();
+ query.setClass(PrimitiveTypes.class);
+ query.declareParameters("Double value");
+ query.setFilter("charNotNull == value");
+ setPrimitiveTypesCandidates(query);
+ Object result = query.execute(new Double(50.0));
+ List oids = getResultOids(result);
+ Collections.sort(oids);
+
+ // check query result
+
+ Collection expected = new ArrayList();
+ PrimitiveTypes.Oid key = new PrimitiveTypes.Oid();
+ key.id = 2;
+ expected.add(key);
+ checkQueryResult(oids, expected);
+
+ tx.commit();
+ }
+
+ /**
+ * Testcase: Character field compared with BigInteger parameter
+ * checks bug report 4530265
+ */
+ public void basic026()
+ throws Exception
+ {
+ Transaction tx = pm.currentTransaction();
+ tx.begin();
+
+ Query query = pm.newQuery();
+ query.setClass(PrimitiveTypes.class);
+ query.declareParameters("java.math.BigInteger value");
+ query.setFilter("charNull == value");
+ setPrimitiveTypesCandidates(query);
+ Object result = query.execute(new BigInteger("50"));
+ List oids = getResultOids(result);
+ Collections.sort(oids);
+
+ // check query result
+
+ Collection expected = new ArrayList();
+ PrimitiveTypes.Oid key = new PrimitiveTypes.Oid();
+ key.id = 2;
+ expected.add(key);
+ checkQueryResult(oids, expected);
+
+ tx.commit();
+ }
+
+ /**
+ * Testcase: using != on BigInteger operand(s)
+ * checks bug report 4530670
+ */
+ public void basic027()
+ throws Exception
+ {
+ Transaction tx = pm.currentTransaction();
+ tx.begin();
+
+ Query query = pm.newQuery();
+ query.setClass(PrimitiveTypes.class);
+ query.setFilter("bigInteger != 0");
+ setPrimitiveTypesCandidates(query);
+ Object result = query.execute();
+ List oids = getResultOids(result);
+ Collections.sort(oids);
+
+ // check query result
+
+ Collection expected = new ArrayList();
+ PrimitiveTypes.Oid key = new PrimitiveTypes.Oid();
+ key.id = 1;
+ expected.add(key);
+ key = new PrimitiveTypes.Oid();
+ key.id = 2;
+ expected.add(key);
+ key = new PrimitiveTypes.Oid();
+ key.id = 3;
+ expected.add(key);
+ key = new PrimitiveTypes.Oid();
+ key.id = 4;
+ expected.add(key);
+ key = new PrimitiveTypes.Oid();
+ key.id = 5;
+ expected.add(key);
+ key = new PrimitiveTypes.Oid();
+ key.id = 10;
+ expected.add(key);
+ key = new PrimitiveTypes.Oid();
+ key.id = 11;
+ expected.add(key);
+ key = new PrimitiveTypes.Oid();
+ key.id = 100;
+ expected.add(key);
+ checkQueryResult(oids, expected);
+
+ tx.commit();
+ }
+
+ /**
+ * Testcase: using != on BigDecimal operand(s)
+ * checks bug report 4530670
+ */
+ public void basic028()
+ throws Exception
+ {
+ Transaction tx = pm.currentTransaction();
+ tx.begin();
+
+ Query query = pm.newQuery();
+ query.setClass(PrimitiveTypes.class);
+ query.setFilter("bigDecimal != doubleNotNull");
+ setPrimitiveTypesCandidates(query);
+ Object result = query.execute();
+ List oids = getResultOids(result);
+ Collections.sort(oids);
+
+ // check query result
+
+ Collection expected = new ArrayList();
+ PrimitiveTypes.Oid key = new PrimitiveTypes.Oid();
+ key.id = 10;
+ expected.add(key);
+ key = new PrimitiveTypes.Oid();
+ key.id = 11;
+ expected.add(key);
+ key = new PrimitiveTypes.Oid();
+ key.id = 12;
+ expected.add(key);
+ key = new PrimitiveTypes.Oid();
+ key.id = 13;
+ expected.add(key);
+ key = new PrimitiveTypes.Oid();
+ key.id = 14;
+ expected.add(key);
+ key = new PrimitiveTypes.Oid();
+ key.id = 15;
+ expected.add(key);
+ key = new PrimitiveTypes.Oid();
+ key.id = 100;
+ expected.add(key);
+ checkQueryResult(oids, expected);
+
+ tx.commit();
+ }
+
+ /**
+ * Testcase: using > on strings
+ * checks bug report 4530899
+ */
+ public void basic029()
+ throws Exception
+ {
+ Transaction tx = pm.currentTransaction();
+ tx.begin();
+
+ Query query = pm.newQuery();
+ query.setClass(Employee.class);
+ query.setFilter("lastname > \"lastHREight\"");
+ setEmployeeCandidates(query);
+ Object result = query.execute();
+ List oids = getResultOids(result);
+ Collections.sort(oids);
+
+ // check query result
+
+ Collection expected = new ArrayList();
+ Employee.Oid key = new Employee.Oid();
+ key.empid = 4;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 5;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 6;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 7;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 9;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 13;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 100;
+ expected.add(key);
+ checkQueryResult(oids, expected);
+
+ tx.commit();
+ }
+
+ /**
+ * Testcase: using >= on strings
+ * checks bug report 4530899
+ */
+ public void basic030()
+ throws Exception
+ {
+ Transaction tx = pm.currentTransaction();
+ tx.begin();
+
+ Query query = pm.newQuery();
+ query.setClass(Employee.class);
+ query.setFilter("lastname >= \"lastHREight\"");
+ setEmployeeCandidates(query);
+ Object result = query.execute();
+ List oids = getResultOids(result);
+ Collections.sort(oids);
+
+ // check query result
+
+ Collection expected = new ArrayList();
+ Employee.Oid key = new Employee.Oid();
+ key.empid = 4;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 5;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 6;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 7;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 8;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 9;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 13;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 100;
+ expected.add(key);
+ checkQueryResult(oids, expected);
+
+ tx.commit();
+ }
+
+ /**
+ * Testcase: using < on strings
+ * checks bug report 4530899
+ */
+ public void basic031()
+ throws Exception
+ {
+ Transaction tx = pm.currentTransaction();
+ tx.begin();
+
+ Query query = pm.newQuery();
+ query.setClass(Employee.class);
+ query.setFilter("lastname < \"lastHREight\"");
+ setEmployeeCandidates(query);
+ Object result = query.execute();
+ List oids = getResultOids(result);
+ Collections.sort(oids);
+
+ // check query result
+
+ Collection expected = new ArrayList();
+ Employee.Oid key = new Employee.Oid();
+ key.empid = 1;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 2;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 3;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 11;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 12;
+ expected.add(key);
+ checkQueryResult(oids, expected);
+
+ tx.commit();
+ }
+
+ /**
+ * Testcase: using <= on strings
+ * checks bug report 4530899
+ */
+ public void basic032()
+ throws Exception
+ {
+ Transaction tx = pm.currentTransaction();
+ tx.begin();
+
+ Query query = pm.newQuery();
+ query.setClass(Employee.class);
+ query.setFilter("lastname <= \"lastHREight\"");
+ setEmployeeCandidates(query);
+ Object result = query.execute();
+ List oids = getResultOids(result);
+ Collections.sort(oids);
+
+ // check query result
+
+ Collection expected = new ArrayList();
+ Employee.Oid key = new Employee.Oid();
+ key.empid = 1;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 2;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 3;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 8;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 11;
+ expected.add(key);
+ key = new Employee.Oid();
+ key.empid = 12;
+ expected.add(key);
+ checkQueryResult(oids, expected);
+
+ tx.commit();
+ }
+}