Added: incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/QueryWithNoFilter.java URL: http://svn.apache.org/viewcvs/incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/QueryWithNoFilter.java?view=auto&rev=158179 ============================================================================== --- incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/QueryWithNoFilter.java (added) +++ incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/QueryWithNoFilter.java Fri Mar 18 17:07:39 2005 @@ -0,0 +1,105 @@ +/* + * 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. + */ + +package org.apache.jdo.tck.query; + + +import java.util.ArrayList; +import java.util.List; + +import javax.jdo.PersistenceManager; +import javax.jdo.Query; +import javax.jdo.Transaction; + +import org.apache.jdo.tck.pc.mylib.PCPoint; +import org.apache.jdo.tck.util.BatchTestRunner; + +/** + *<B>Title:</B> Query with no Filter + *<BR> + *<B>Keywords:</B> query + *<BR> + *<B>Assertion ID:</B> A14.6.2-1. + *<BR> + *<B>Assertion Description: </B> If the <code>Query</code> filter is not + *specified, then it defaults to <code>true</code>, which has the effect of + *filtering the input <code>Collection</code> only for class type. + */ + +public class QueryWithNoFilter extends QueryTest { + + /** */ + private static final String ASSERTION_FAILED = + "Assertion A14.6.2-1 (QueryWithNoFilter) failed: "; + + /** + * The <code>main</code> is called when the class + * is directly executed from the command line. + * @param args The arguments passed to the program. + */ + public static void main(String[] args) { + BatchTestRunner.run(QueryWithNoFilter.class); + } + + /** */ + public void test() { + pm = getPM(); + + initDatabase(pm, PCPoint.class); + runTestQueryWithNoFilter(pm); + + pm.close(); + pm = null; + } + + /** */ + void runTestQueryWithNoFilter(PersistenceManager pm) { + if(debug) logger.debug("\nExecuting test QueryWithNoFilter() ..."); + + Transaction tx = pm.currentTransaction(); + try { + tx.begin(); + + Query query = pm.newQuery(); + query.setClass(PCPoint.class); + query.setCandidates(pm.getExtent(PCPoint.class, false)); + Object results = query.execute(); + + // check query result + List expected = new ArrayList(); + Object p1 = new PCPoint(0, 0); + Object p2 = new PCPoint(1, 1); + Object p3 = new PCPoint(2, 2); + Object p4 = new PCPoint(3, 3); + Object p5 = new PCPoint(4, 4); + expected.add(p1); + expected.add(p2); + expected.add(p3); + expected.add(p4); + expected.add(p5); + expected = getFromInserted(expected); + printOutput(results, expected); + checkQueryResultWithoutOrder(ASSERTION_FAILED, results, expected); + + tx.commit(); + tx = null; + } + finally { + if ((tx != null) && tx.isActive()) + tx.rollback(); + } + } +}
Added: incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/RestoredSerializedQueryInstanceLosesAssociationWithPM.java URL: http://svn.apache.org/viewcvs/incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/RestoredSerializedQueryInstanceLosesAssociationWithPM.java?view=auto&rev=158179 ============================================================================== --- incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/RestoredSerializedQueryInstanceLosesAssociationWithPM.java (added) +++ incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/RestoredSerializedQueryInstanceLosesAssociationWithPM.java Fri Mar 18 17:07:39 2005 @@ -0,0 +1,103 @@ +/* + * 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. + */ + +package org.apache.jdo.tck.query; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; + +import javax.jdo.JDOException; +import javax.jdo.PersistenceManager; +import javax.jdo.Query; +import javax.jdo.Transaction; + +import org.apache.jdo.tck.util.BatchTestRunner; + +/** + *<B>Title:</B> Restored Serialized Query Instance Loses Association With PM + *<BR> + *<B>Keywords:</B> query + *<BR> + *<B>Assertion ID:</B> A14.3-8. + *<BR> + *<B>Assertion Description: </B> +If a serialized instance is restored, it loses its association with its former +<code>PersistenceManager</code>. + + */ + +public class RestoredSerializedQueryInstanceLosesAssociationWithPM + extends QueryTest { + + /** */ + private static final String ASSERTION_FAILED = + "Assertion A14.3-8 (RestoredSerializedQueryInstanceLosesAssociationWithPM) failed: "; + + /** + * The <code>main</code> is called when the class + * is directly executed from the command line. + * @param args The arguments passed to the program. + */ + public static void main(String[] args) { + BatchTestRunner.run(RestoredSerializedQueryInstanceLosesAssociationWithPM.class); + } + + /** */ + public void test() throws Exception { + pm = getPM(); + + checkRestoredQueryInstance(pm); + + pm.close(); + pm = null; + } + + /** */ + void checkRestoredQueryInstance(PersistenceManager pm) throws Exception { + Transaction tx = pm.currentTransaction(); + try { + tx.begin(); + Query query = pm.newQuery(); + Class clazz = org.apache.jdo.tck.pc.company.Project.class; + query.setClass(clazz); + query.setCandidates(pm.getExtent(clazz, false)); + query.declareVariables("org.apache.jdo.tck.pc.company.Person a; org.apache.jdo.tck.pc.company.Person b" ); + query.setFilter("reviewers.contains(a) && a.firstname==\"brazil\" || reviewers.contains(b) && b.firstname==\"brazil\"" ); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + ObjectOutputStream oos = new ObjectOutputStream(baos); + oos.writeObject(query); + ObjectInputStream ois = + new ObjectInputStream( + new ByteArrayInputStream(baos.toByteArray())); + query = (Query) ois.readObject(); + + try { + Object results = query.execute(); + fail(ASSERTION_FAILED, + "A deserialized query instance should not execute successfully without associating that instance to a persistence manager"); + } + catch (JDOException e) { + if (debug) logger.debug("Caught expected " + e); + } + } + finally { + if ((tx != null) && tx.isActive()) + tx.rollback(); + } + } +} Added: incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/SeparateNamespaceForTypeNames.java URL: http://svn.apache.org/viewcvs/incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/SeparateNamespaceForTypeNames.java?view=auto&rev=158179 ============================================================================== --- incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/SeparateNamespaceForTypeNames.java (added) +++ incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/SeparateNamespaceForTypeNames.java Fri Mar 18 17:07:39 2005 @@ -0,0 +1,111 @@ +/* + * 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. + */ + +package org.apache.jdo.tck.query; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashSet; + +import javax.jdo.PersistenceManager; +import javax.jdo.Query; +import javax.jdo.Transaction; + +import org.apache.jdo.tck.pc.company.CompanyModelReader; +import org.apache.jdo.tck.pc.company.Department; +import org.apache.jdo.tck.pc.company.Employee; +import org.apache.jdo.tck.util.BatchTestRunner; + +/** + *<B>Title:</B> Namespace of Type Names Separate From Fields, Variables, Parameters + *<BR> + *<B>Keywords:</B> query + *<BR> + *<B>Assertion ID:</B> A14.4-1. + *<BR> + *<B>Assertion Description: </B> +Type names have their own namespace that is separate +from the namespace for fields, variables and parameters. + + */ + +public class SeparateNamespaceForTypeNames extends QueryTest { + + /** */ + private static final String ASSERTION_FAILED = + "Assertion A14.4-1 (SeparateNamespaceForTypeNames) failed: "; + + /** + * The <code>main</code> is called when the class + * is directly executed from the command line. + * @param args The arguments passed to the program. + */ + public static void main(String[] args) { + BatchTestRunner.run(SeparateNamespaceForTypeNames.class); + } + + /** */ + public void test() { + pm = getPM(); + + try { + // read test data + CompanyModelReader reader = + loadCompanyModel(pm, "org/apache/jdo/tck/query/company.xml"); + runTest(pm, reader); + } + finally { + cleanupCompanyModel(pm); + pm.close(); + pm = null; + } + } + + /** */ + void runTest(PersistenceManager pm, CompanyModelReader reader) { + Transaction tx = pm.currentTransaction(); + tx.begin(); + Department dept1 = reader.getDepartment("dept1"); + + + // query having a parameter with the same name as a type + Query query = pm.newQuery(Employee.class); + query.declareImports("import org.apache.jdo.tck.pc.company.Department"); + query.declareParameters("Department Department"); + query.setFilter("department == Department"); + Object results = query.execute(dept1); + + Collection expected = new HashSet(); + expected.add(reader.getFullTimeEmployee("emp1")); + expected.add(reader.getFullTimeEmployee("emp2")); + expected.add(reader.getPartTimeEmployee("emp3")); + checkQueryResultWithoutOrder(ASSERTION_FAILED, results, expected); + + // query having a parameter with the same name as a type + query = pm.newQuery(Department.class); + query.declareImports("import org.apache.jdo.tck.pc.company.Employee"); + query.declareVariables("Employee Employee"); + query.setFilter("employees.contains(Employee) && Employee.firstname == \"emp1First\""); + results = query.execute(); + + expected = new ArrayList(); + expected.add(dept1); + checkQueryResultWithoutOrder(ASSERTION_FAILED, results, expected); + + tx.commit(); + tx = null; + } +} Added: incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/SetCandidateCollection.java URL: http://svn.apache.org/viewcvs/incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/SetCandidateCollection.java?view=auto&rev=158179 ============================================================================== --- incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/SetCandidateCollection.java (added) +++ incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/SetCandidateCollection.java Fri Mar 18 17:07:39 2005 @@ -0,0 +1,107 @@ +/* + * 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. + */ + +package org.apache.jdo.tck.query; + + +import java.util.ArrayList; +import java.util.List; + +import javax.jdo.PersistenceManager; +import javax.jdo.Query; +import javax.jdo.Transaction; + +import org.apache.jdo.tck.pc.mylib.PCPoint; +import org.apache.jdo.tck.util.BatchTestRunner; + +/** + *<B>Title:</B> Set Candidate Collection + *<BR> + *<B>Keywords:</B> query + *<BR> + *<B>Assertion ID:</B> A14.6-5. + *<BR> + *<B>Assertion Description: </B> <code>Query.setCandidates(Collection + *candidateCollection)</code> binds the candidate <code>Collection</code> + *to the query instance. + */ + +public class SetCandidateCollection extends QueryTest { + + /** */ + private static final String ASSERTION_FAILED = + "Assertion A14.6-5 (SetCandidateCollection) failed: "; + + /** + * The <code>main</code> is called when the class + * is directly executed from the command line. + * @param args The arguments passed to the program. + */ + public static void main(String[] args) { + BatchTestRunner.run(SetCandidateCollection.class); + } + + /** */ + public void test() { + pm = getPM(); + + initDatabase(pm, PCPoint.class); + runTestSetCandidateCollection(pm); + + pm.close(); + pm = null; + } + + /** */ + void runTestSetCandidateCollection(PersistenceManager pm) { + if (debug) logger.debug("\nExecuting test SetCandidateCollection()..."); + + Transaction tx = pm.currentTransaction(); + try { + tx.begin(); + + Query query = pm.newQuery(); + query.setClass(PCPoint.class); + query.setCandidates(inserted); + Object results = query.execute(); + + // check query result + List expected = new ArrayList(); + Object p1 = new PCPoint(0, 0); + Object p2 = new PCPoint(1, 1); + Object p3 = new PCPoint(2, 2); + Object p4 = new PCPoint(3, 3); + Object p5 = new PCPoint(4, 4); + expected.add(p1); + expected.add(p2); + expected.add(p3); + expected.add(p4); + expected.add(p5); + expected = getFromInserted(expected); + printOutput(results, expected); + checkQueryResultWithoutOrder(ASSERTION_FAILED, results, expected); + if (debug) logger.debug("Test SetCandidateCollection: Passed"); + + tx.commit(); + tx = null; + } + finally { + if ((tx != null) && tx.isActive()) + tx.rollback(); + } + } +} + Added: incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/SetCandidateExtent.java URL: http://svn.apache.org/viewcvs/incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/SetCandidateExtent.java?view=auto&rev=158179 ============================================================================== --- incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/SetCandidateExtent.java (added) +++ incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/SetCandidateExtent.java Fri Mar 18 17:07:39 2005 @@ -0,0 +1,105 @@ +/* + * 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. + */ + +package org.apache.jdo.tck.query; + + +import java.util.ArrayList; +import java.util.List; + +import javax.jdo.PersistenceManager; +import javax.jdo.Query; +import javax.jdo.Transaction; + +import org.apache.jdo.tck.pc.mylib.PCPoint; +import org.apache.jdo.tck.util.BatchTestRunner; + +/** + *<B>Title:</B> Set Candidate Extent + *<BR> + *<B>Keywords:</B> query extent + *<BR> + *<B>Assertion ID:</B> A14.6-6. + *<BR> + *<B>Assertion Description: </B> <code>Query.setCandidates(Extent + *candidateExtent)</code> binds the candidate <code>Extent</code> to the query + *instance. + */ + +public class SetCandidateExtent extends QueryTest { + + /** */ + private static final String ASSERTION_FAILED = + "Assertion A14.6-6 (SetCandidateExtent) failed: "; + + /** + * The <code>main</code> is called when the class + * is directly executed from the command line. + * @param args The arguments passed to the program. + */ + public static void main(String[] args) { + BatchTestRunner.run(SetCandidateExtent.class); + } + + /** */ + public void test() { + pm = getPM(); + + initDatabase(pm, PCPoint.class); + runTestSetCandidateExtent(pm); + + pm.close(); + pm = null; + } + + /** */ + void runTestSetCandidateExtent(PersistenceManager pm) { + if (debug) logger.debug("\nExecuting test SetCandidateExtent()..."); + + Transaction tx = pm.currentTransaction(); + try { + tx.begin(); + Query query = pm.newQuery(); + query.setClass(PCPoint.class); + query.setCandidates(pm.getExtent(PCPoint.class, false)); + Object results = query.execute(); + + // check query result + List expected = new ArrayList(); + Object p1 = new PCPoint(0, 0); + Object p2 = new PCPoint(1, 1); + Object p3 = new PCPoint(2, 2); + Object p4 = new PCPoint(3, 3); + Object p5 = new PCPoint(4, 4); + expected.add(p1); + expected.add(p2); + expected.add(p3); + expected.add(p4); + expected.add(p5); + expected = getFromInserted(expected); + printOutput(results, expected); + checkQueryResultWithoutOrder(ASSERTION_FAILED, results, expected); + if (debug) logger.debug("Test SetCandidateExtent: Passed"); + + tx.commit(); + tx = null; + } + finally { + if ((tx != null) && tx.isActive()) + tx.rollback(); + } + } +} Added: incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/SetFilter.java URL: http://svn.apache.org/viewcvs/incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/SetFilter.java?view=auto&rev=158179 ============================================================================== --- incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/SetFilter.java (added) +++ incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/SetFilter.java Fri Mar 18 17:07:39 2005 @@ -0,0 +1,98 @@ +/* + * 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. + */ + + +package org.apache.jdo.tck.query; + +import java.util.ArrayList; +import java.util.List; + +import javax.jdo.Extent; +import javax.jdo.PersistenceManager; +import javax.jdo.Query; +import javax.jdo.Transaction; + +import org.apache.jdo.tck.pc.mylib.PCPoint; +import org.apache.jdo.tck.util.BatchTestRunner; + +/** + *<B>Title:</B> Set Filter + *<BR> + *<B>Keywords:</B> query + *<BR> + *<B>Assertion ID:</B> A14.6-7. + *<BR> + *<B>Assertion Description: </B> +<code>Query.setFilter(String filter)</code> binds the query filter +to the query instance. + + */ + +public class SetFilter extends QueryTest { + + /** */ + private static final String ASSERTION_FAILED = + "Assertion A14.6-7 (SetFilter) failed: "; + + /** + * The <code>main</code> is called when the class + * is directly executed from the command line. + * @param args The arguments passed to the program. + */ + public static void main(String[] args) { + BatchTestRunner.run(SetFilter.class); + } + + /** */ + public void test() { + pm = getPM(); + + initDatabase(pm, PCPoint.class); + runTestNewQuery(pm); + pm.close(); + pm = null; + } + + /** */ + void runTestNewQuery(PersistenceManager pm) { + Transaction tx = pm.currentTransaction(); + Class clazz = PCPoint.class; + try { + Extent extent = pm.getExtent(clazz, true); + tx.begin(); + Query query = pm.newQuery(); + query.setClass(clazz); + query.setCandidates(extent); + query.setFilter("x == 2"); + Object results = query.execute(); + + // check query result + List expected = new ArrayList(); + expected.add(new PCPoint(2, 2)); + expected = getFromInserted(expected); + printOutput(results, expected); + checkQueryResultWithoutOrder(ASSERTION_FAILED, results, expected); + + tx.commit(); + tx = null; + } + finally { + if ((tx != null) && tx.isActive()) + tx.rollback(); + } + } +} + Added: incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/SetIgnoreCache.java URL: http://svn.apache.org/viewcvs/incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/SetIgnoreCache.java?view=auto&rev=158179 ============================================================================== --- incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/SetIgnoreCache.java (added) +++ incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/SetIgnoreCache.java Fri Mar 18 17:07:39 2005 @@ -0,0 +1,163 @@ +/* + * 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. + */ + +package org.apache.jdo.tck.query; + +import javax.jdo.PersistenceManager; +import javax.jdo.Query; +import javax.jdo.Transaction; + +import org.apache.jdo.tck.pc.mylib.PCPoint; +import org.apache.jdo.tck.util.BatchTestRunner; + +/** + *<B>Title:</B> Set IgnoreCache + *<BR> + *<B>Keywords:</B> query + *<BR> + *<B>Assertion ID:</B> A14.6-12. + *<BR> + *<B>Assertion Description: </B> <code>Query.setIgnoreCache(boolean flag)</code> + *sets the IgnoreCache option for queries. + */ + +public class SetIgnoreCache extends QueryTest { + + /** */ + private static final String ASSERTION_FAILED = + "Assertion A14.6-12 (SetIgnoreCache) failed: "; + + /** + * The <code>main</code> is called when the class + * is directly executed from the command line. + * @param args The arguments passed to the program. + */ + public static void main(String[] args) { + BatchTestRunner.run(SetIgnoreCache.class); + } + + /** */ + public void test() { + pm = getPM(); + + runTestSetIgnoreCache01(pm); + runTestSetIgnoreCache02(pm); + + pm.close(); + pm = null; + } + + /** */ + void runTestSetIgnoreCache01(PersistenceManager pm) { + Transaction tx = pm.currentTransaction(); + tx.setOptimistic(false); + try { + tx.begin(); + + Query query = pm.newQuery(); + query.setClass(PCPoint.class); + query.setCandidates(pm.getExtent(PCPoint.class, false)); + + if (debug) + logger.debug("Pessimistic: IgnoreCache - Setting value = true"); + query.setIgnoreCache(true); + if(query.getIgnoreCache()) { + if (debug) + logger.debug("Pessimistic: IgnoreCache - value = " + + query.getIgnoreCache()); + } + else { + fail(ASSERTION_FAILED, + "query.getIgnoreCache() returns false after setting the flag to true"); + } + + if (debug) + logger.debug("Pessimistic: IgnoreCache - Setting value = false"); + query.setIgnoreCache(false); + if(!query.getIgnoreCache()) { + if (debug) + logger.debug("Pessimistic: IgnoreCache - value = " + + query.getIgnoreCache()); + } + else { + fail(ASSERTION_FAILED, + "query.getIgnoreCache() returns true after setting the flag to false"); + } + query.compile(); + + tx.commit(); + tx = null; + } + finally { + if ((tx != null) && tx.isActive()) + tx.rollback(); + } + } + + /** */ + void runTestSetIgnoreCache02(PersistenceManager pm) { + if (!isOptimisticSupported()) { + if (debug) logger.debug("Optimistic tx not supported"); + return; + } + + Transaction tx = pm.currentTransaction(); + try { + tx.setOptimistic(true); + tx.begin(); + + Query query = pm.newQuery(); + query.setClass(PCPoint.class); + query.setCandidates(pm.getExtent(PCPoint.class, false)); + + if (debug) + logger.debug("Optimistic: IgnoreCache - Setting value = true"); + query.setIgnoreCache(true); + if(query.getIgnoreCache()) { + if (debug) + logger.debug("Optimistic: IgnoreCache - value = " + + query.getIgnoreCache()); + } + else { + fail(ASSERTION_FAILED, + "query.getIgnoreCache() returns false after setting the flag to true"); + } + + if (debug) + logger.debug("Optimistic: IgnoreCache - Setting value = false"); + query.setIgnoreCache(false); + if(!query.getIgnoreCache()) { + if (debug) + logger.debug("Optimistic: IgnoreCache - value = " + + query.getIgnoreCache()); + } + else { + fail(ASSERTION_FAILED, + "query.getIgnoreCache() returns true after setting the flag to false"); + } + + query.compile(); + + tx.commit(); + tx = null; + } + finally { + if ((tx != null) && tx.isActive()) + tx.rollback(); + } + } +} + Added: incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/SetOrdering.java URL: http://svn.apache.org/viewcvs/incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/SetOrdering.java?view=auto&rev=158179 ============================================================================== --- incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/SetOrdering.java (added) +++ incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/SetOrdering.java Fri Mar 18 17:07:39 2005 @@ -0,0 +1,135 @@ +/* + * 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. + */ + + +package org.apache.jdo.tck.query; + +import java.util.ArrayList; +import java.util.List; +import java.util.ListIterator; + +import javax.jdo.Extent; +import javax.jdo.PersistenceManager; +import javax.jdo.Query; +import javax.jdo.Transaction; + +import org.apache.jdo.tck.pc.mylib.PCPoint; +import org.apache.jdo.tck.pc.fieldtypes.AllTypes; +import org.apache.jdo.tck.util.BatchTestRunner; + +/** + *<B>Title:</B> Set Ordering + *<BR> + *<B>Keywords:</B> query + *<BR> + *<B>Assertion ID:</B> A14.6-11. + *<BR> + *<B>Assertion Description: </B> +<code>Query.setOrdering(String ordering)</code> binds the ordering statements +to the query instance. + + */ + +public class SetOrdering extends QueryTest { + + /** */ + private static final String ASSERTION_FAILED = + "Assertion A14.6-11 (SetOrdering) failed: "; + + /** + * The <code>main</code> is called when the class + * is directly executed from the command line. + * @param args The arguments passed to the program. + */ + public static void main(String[] args) { + BatchTestRunner.run(SetOrdering.class); + } + + /** */ + public void test() { + pm = getPM(); + + initDatabase(pm, PCPoint.class); + runTestAscending(pm); + runTestDescending(pm); + + pm.close(); + pm = null; + } + + /** */ + void runTestAscending(PersistenceManager pm) { + Transaction tx = pm.currentTransaction(); + try { + tx.begin(); + + //ascending + Query query = pm.newQuery(); + query.setClass(PCPoint.class); + query.setCandidates(pm.getExtent(PCPoint.class, false)); + query.setOrdering("x ascending"); + Object results = query.execute(); + + // check result + printOutput(results, inserted); + checkQueryResultWithOrder(ASSERTION_FAILED, results, inserted); + + tx.commit(); + tx = null; + } + finally { + if ((tx != null) && tx.isActive()) + tx.rollback(); + } + } + + + /** */ + void runTestDescending(PersistenceManager pm) { + Transaction tx = pm.currentTransaction(); + Class clazz = PCPoint.class; + try { + tx.begin(); + + //descending + Query query = pm.newQuery(); + query.setClass(PCPoint.class); + query.setCandidates(pm.getExtent(PCPoint.class, false)); + query.setOrdering("x descending"); + Object results = query.execute(); + + // check result + List expected = new ArrayList(); + ListIterator li = inserted.listIterator(inserted.size()); + // construct expected results by iterating inserted objects backwards + while (li.hasPrevious()) { + Object obj = li.previous(); + expected.add(obj); + } + expected = getFromInserted(expected); + printOutput(results, expected); + checkQueryResultWithOrder(ASSERTION_FAILED, results, expected); + + tx.commit(); + tx = null; + } + finally { + if ((tx != null) && tx.isActive()) + tx.rollback(); + } + } + +} Added: incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/SetterReplacePreviousValues.java URL: http://svn.apache.org/viewcvs/incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/SetterReplacePreviousValues.java?view=auto&rev=158179 ============================================================================== --- incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/SetterReplacePreviousValues.java (added) +++ incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/SetterReplacePreviousValues.java Fri Mar 18 17:07:39 2005 @@ -0,0 +1,113 @@ +/* + * 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. + */ + +package org.apache.jdo.tck.query; + +import java.util.Collection; +import java.util.HashSet; + +import javax.jdo.PersistenceManager; +import javax.jdo.Query; +import javax.jdo.Transaction; + +import org.apache.jdo.tck.pc.company.CompanyModelReader; +import org.apache.jdo.tck.pc.company.Department; +import org.apache.jdo.tck.pc.company.Employee; +import org.apache.jdo.tck.util.BatchTestRunner; + +/** + *<B>Title:</B> Setter replace previous values. + *<BR> + *<B>Keywords:</B> query + *<BR> + *<B>Assertion ID:</B> A14.6.15. + *<BR> + *<B>Assertion Description: </B> + * All of these methods replace the previously set query element, by the + * parameter. [The methods are not additive]. + */ + +public class SetterReplacePreviousValues extends QueryTest { + + /** */ + private static final String ASSERTION_FAILED = + "Assertion A14.6.15 (SetterReplacePreviousValues) failed: "; + + /** + * The <code>main</code> is called when the class + * is directly executed from the command line. + * @param args The arguments passed to the program. + */ + public static void main(String[] args) { + BatchTestRunner.run(SetterReplacePreviousValues.class); + } + + /** */ + public void test() { + pm = getPM(); + + try { + // read test data + CompanyModelReader reader = + loadCompanyModel(pm, "org/apache/jdo/tck/query/company.xml"); + runTest(pm, reader); + } + finally { + cleanupCompanyModel(pm); + pm.close(); + pm = null; + } + } + + /** */ + void runTest(PersistenceManager pm, CompanyModelReader reader) { + Query q; + Collection result; + Collection expected; + + Transaction tx = pm.currentTransaction(); + tx.begin(); + + // replace parameter declaration + q = pm.newQuery(Department.class, "deptid == param"); + q.declareParameters("String x"); + q.declareParameters("long param"); + result = (Collection)q.execute(new Long(1)); + expected = new HashSet(); + expected.add(reader.getDepartment("dept1")); + checkQueryResultWithoutOrder(ASSERTION_FAILED, result, expected); + + // replace filter setting + q = pm.newQuery(Employee.class, "personid == 1L"); + q.setFilter("personid == 2L"); + result = (Collection)q.execute(); + expected = new HashSet(); + expected.add(reader.getFullTimeEmployee("emp2")); + checkQueryResultWithoutOrder(ASSERTION_FAILED, result, expected); + + // repalce variable declaration + q = pm.newQuery(Department.class); + q.declareVariables("Employee e1; Employee e2"); + q.declareVariables("Employee e"); + q.setFilter("employees.contains(e) && e.personid == 1"); + result = (Collection)q.execute(); + expected = new HashSet(); + expected.add(reader.getDepartment("dept1")); + checkQueryResultWithoutOrder(ASSERTION_FAILED, result, expected); + + tx.rollback(); + } +} Added: incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/StartsWithAndEndsWith.java URL: http://svn.apache.org/viewcvs/incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/StartsWithAndEndsWith.java?view=auto&rev=158179 ============================================================================== --- incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/StartsWithAndEndsWith.java (added) +++ incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/StartsWithAndEndsWith.java Fri Mar 18 17:07:39 2005 @@ -0,0 +1,102 @@ +/* + * 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. + */ + +package org.apache.jdo.tck.query; + +import java.util.Collection; +import java.util.HashSet; + +import javax.jdo.PersistenceManager; +import javax.jdo.Query; +import javax.jdo.Transaction; + +import org.apache.jdo.tck.pc.company.Employee; +import org.apache.jdo.tck.pc.company.CompanyModelReader; +import org.apache.jdo.tck.util.BatchTestRunner; + +/** + *<B>Title:</B> StartsWith and EndsWith Query Operators + *<BR> + *<B>Keywords:</B> query + *<BR> + *<B>Assertion ID:</B> A14.6.2-33. + *<BR> + *<B>Assertion Description: </B> +<code>String</code> methods <code>startsWith</code> and <code>endsWith</code> +support wild card queries. JDO does not define any special semantic to the +argument passed to the method; in particular, +it does not define any wild card characters. + + */ + +public class StartsWithAndEndsWith extends QueryTest { + + /** */ + private static final String ASSERTION_FAILED = + "Assertion A14.6.2-33 (StartsWithAndEndsWith) failed: "; + + /** + * The <code>main</code> is called when the class + * is directly executed from the command line. + * @param args The arguments passed to the program. + */ + public static void main(String[] args) { + BatchTestRunner.run(StartsWithAndEndsWith.class); + } + + /** */ + public void test() { + pm = getPM(); + + try { + // read test data + CompanyModelReader reader = + loadCompanyModel(pm, "org/apache/jdo/tck/query/company.xml"); + runTest(pm, reader); + } + finally { + cleanupCompanyModel(pm); + pm.close(); + pm = null; + } + } + + /** */ + void runTest(PersistenceManager pm, CompanyModelReader reader) { + Query q; + Object result; + Collection expected; + + Transaction tx = pm.currentTransaction(); + tx.begin(); + + // startsWith + q = pm.newQuery(Employee.class, "firstname.startsWith(\"emp1\")"); + result = q.execute(); + expected = new HashSet(); + expected.add(reader.getFullTimeEmployee("emp1")); + checkQueryResultWithoutOrder(ASSERTION_FAILED, result, expected); + + // endsWith + q = pm.newQuery(Employee.class, "firstname.endsWith(\"1First\")"); + result = q.execute(); + expected = new HashSet(); + expected.add(reader.getFullTimeEmployee("emp1")); + checkQueryResultWithoutOrder(ASSERTION_FAILED, result, expected); + + tx.commit(); + } +} Added: incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/SupportedCollectionMethods.java URL: http://svn.apache.org/viewcvs/incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/SupportedCollectionMethods.java?view=auto&rev=158179 ============================================================================== --- incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/SupportedCollectionMethods.java (added) +++ incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/SupportedCollectionMethods.java Fri Mar 18 17:07:39 2005 @@ -0,0 +1,124 @@ +/* + * 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. + */ + +package org.apache.jdo.tck.query; + +import java.util.Collection; +import java.util.HashSet; + +import javax.jdo.PersistenceManager; +import javax.jdo.Query; +import javax.jdo.Transaction; + +import org.apache.jdo.tck.pc.company.CompanyModelReader; +import org.apache.jdo.tck.pc.company.Department; +import org.apache.jdo.tck.pc.company.Employee; +import org.apache.jdo.tck.util.BatchTestRunner; + +/** + *<B>Title:</B>Supported collection methods + *<BR> + *<B>Keywords:</B> query collection + *<BR> + *<B>Assertion ID:</B> A14.6.2-44. + *<BR> + *<B>Assertion Description: </B> + * Supported collection methods: + * <UL> + * <LI>isEmpty</LI> + * <LI>contains</LI> + * </UL> + */ + +public class SupportedCollectionMethods extends QueryTest { + + /** */ + private static final String ASSERTION_FAILED = + "Assertion A14.6.2-36 (SupportedCollectionMethods) failed: "; + + /** + * The <code>main</code> is called when the class + * is directly executed from the command line. + * @param args The arguments passed to the program. + */ + public static void main(String[] args) { + BatchTestRunner.run(SupportedCollectionMethods.class); + } + + /** */ + public void test() { + pm = getPM(); + + try { + // read test data + CompanyModelReader reader = + loadCompanyModel(pm, "org/apache/jdo/tck/query/company.xml"); + runTestIsEmpty(pm, reader); + runTestContains(pm, reader); + } + finally { + cleanupCompanyModel(pm); + pm.close(); + pm = null; + } + } + + /** */ + void runTestIsEmpty(PersistenceManager pm, CompanyModelReader reader) { + Query q; + Object result; + Collection expected; + + Transaction tx = pm.currentTransaction(); + tx.begin(); + + q = pm.newQuery(Department.class, "!employees.isEmpty()"); + result = q.execute(); + expected = new HashSet(); + expected.add(reader.getDepartment("dept1")); + checkQueryResultWithoutOrder(ASSERTION_FAILED, result, expected); + + q = pm.newQuery(Employee.class, "team.isEmpty()"); + result = q.execute(); + expected = new HashSet(); + expected.add(reader.getFullTimeEmployee("emp1")); + expected.add(reader.getFullTimeEmployee("emp2")); + expected.add(reader.getPartTimeEmployee("emp3")); + checkQueryResultWithoutOrder(ASSERTION_FAILED, result, expected); + + tx.commit(); + } + + /** */ + void runTestContains(PersistenceManager pm, CompanyModelReader reader) { + Query q; + Object result; + Collection expected; + + Transaction tx = pm.currentTransaction(); + tx.begin(); + + q = pm.newQuery(Department.class); + q.setFilter("employees.contains(e) && e.personid == 1"); + q.declareVariables("Employee e"); + result = q.execute(); + expected = new HashSet(); + expected.add(reader.getDepartment("dept1")); + checkQueryResultWithoutOrder(ASSERTION_FAILED, result, expected); + + tx.commit(); + } +} Added: incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/ThisIsReservedWordForElementOfCollection.java URL: http://svn.apache.org/viewcvs/incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/ThisIsReservedWordForElementOfCollection.java?view=auto&rev=158179 ============================================================================== --- incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/ThisIsReservedWordForElementOfCollection.java (added) +++ incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/ThisIsReservedWordForElementOfCollection.java Fri Mar 18 17:07:39 2005 @@ -0,0 +1,86 @@ +/* + * 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. + */ + +package org.apache.jdo.tck.query; + +import java.util.Collection; +import javax.jdo.PersistenceManager; +import javax.jdo.Transaction; + +import org.apache.jdo.tck.pc.mylib.PrimitiveTypes; +import org.apache.jdo.tck.util.BatchTestRunner; + +/** + *<B>Title:</B> This is Reserved Word for Element of Collection + *<BR> + *<B>Keywords:</B> query + *<BR> + *<B>Assertion ID:</B> A14.6.2-12. + *<BR> + *<B>Assertion Description: </B> + * <code>this</code> is a reserved word which means the element of the + * candidate collection being evaluated. + */ + +public class ThisIsReservedWordForElementOfCollection extends QueryTest { + + /** */ + private static final String ASSERTION_FAILED = + "Assertion A14.6.2-12 (ThisIsReservedWordForElementOfCollection) failed: "; + + /** + * The <code>main</code> is called when the class + * is directly executed from the command line. + * @param args The arguments passed to the program. + */ + public static void main(String[] args) { + BatchTestRunner.run(ThisIsReservedWordForElementOfCollection.class); + } + + /** */ + public void test() { + pm = getPM(); + + try { + loadPrimitiveTypes(pm); + runTest(pm); + } + finally { + cleanupDatabase(pm, PrimitiveTypes.class); + pm.close(); + pm = null; + } + } + + /** */ + void runTest(PersistenceManager pm) { + Transaction tx = pm.currentTransaction(); + tx.begin(); + + Collection instance9 = (Collection)pm.newQuery( + PrimitiveTypes.class, "id == 9").execute(); + + // compare this with a parameter + runParameterPrimitiveTypesQuery( + "this == param", "PrimitiveTypes param", instance9.iterator().next(), + pm, instance9, ASSERTION_FAILED); + + // use this to access a field + runParameterPrimitiveTypesQuery( + "this.intNotNull == intNotNull", "int intNotNull", new Integer(9), + pm, instance9, ASSERTION_FAILED); + } +} Added: incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/UseOfThisToAcessHiddenField.java URL: http://svn.apache.org/viewcvs/incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/UseOfThisToAcessHiddenField.java?view=auto&rev=158179 ============================================================================== --- incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/UseOfThisToAcessHiddenField.java (added) +++ incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/UseOfThisToAcessHiddenField.java Fri Mar 18 17:07:39 2005 @@ -0,0 +1,137 @@ +/* + * 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. + */ + +package org.apache.jdo.tck.query; + +import java.util.ArrayList; +import java.util.List; + +import javax.jdo.PersistenceManager; +import javax.jdo.Query; +import javax.jdo.Transaction; + +import org.apache.jdo.tck.pc.mylib.PCPoint; +import org.apache.jdo.tck.util.BatchTestRunner; + +/** + *<B>Title:</B> Use of this to Access Hidden Field + *<BR> + *<B>Keywords:</B> query + *<BR> + *<B>Assertion ID:</B> A14.4-4. + *<BR> + *<B>Assertion Description: </B> A hidden field may be accessed using the + *<code>'this'</code> qualifier: <code>this.fieldName</code>. + */ + +public class UseOfThisToAcessHiddenField extends QueryTest { + + /** */ + private static final String ASSERTION_FAILED = + "Assertion A14.4-4 (UseOfThisToAcessHiddenField) failed: "; + + /** + * The <code>main</code> is called when the class + * is directly executed from the command line. + * @param args The arguments passed to the program. + */ + public static void main(String[] args) { + BatchTestRunner.run(UseOfThisToAcessHiddenField.class); + } + + /** */ + public void test() { + pm = getPM(); + + initDatabase(pm, PCPoint.class); + runTestUseOfThisToAcessHiddenField01(pm); + runTestUseOfThisToAcessHiddenField02(pm); + + pm.close(); + pm = null; + } + + /** */ + void runTestUseOfThisToAcessHiddenField01(PersistenceManager pm) { + if (debug) + logger.debug("\nExecuting test UseOfThisToAcessHiddenField01() ..."); + + Transaction tx = pm.currentTransaction(); + try { + tx.begin(); + + Query query = pm.newQuery(); + query.setClass(PCPoint.class); + query.setCandidates(pm.getExtent(PCPoint.class, false)); + query.declareParameters("Integer x"); + query.setFilter("this.x == x"); + Object results = query.execute(new java.lang.Integer(2)); + + // check query result + List expected = new ArrayList(); + Object p3 = new PCPoint(2, 2); + expected.add(p3); + expected = getFromInserted(expected); + printOutput(results, expected); + checkQueryResultWithoutOrder(ASSERTION_FAILED, results, expected); + if (debug) + logger.debug("Test UseOfThisToAcessHiddenField01(): Passed"); + + tx.commit(); + tx = null; + } + finally { + if ((tx != null) && tx.isActive()) + tx.rollback(); + } + } + + /** */ + void runTestUseOfThisToAcessHiddenField02(PersistenceManager pm) { + if (debug) + logger.debug("\nExecuting test UseOfThisToAcessHiddenField02() ..."); + + Transaction tx = pm.currentTransaction(); + try { + tx.begin(); + + Query query = pm.newQuery(); + query.setClass(PCPoint.class); + query.setCandidates(pm.getExtent(PCPoint.class, false)); + query.declareParameters("Integer y"); + query.setFilter("this.y == y"); + Object results = query.execute(new java.lang.Integer(3)); + + // check query result + List expected = new ArrayList(); + Object p4 = new PCPoint(3, 3); + expected.add(p4); + expected = getFromInserted(expected); + printOutput(results, expected); + checkQueryResultWithoutOrder(ASSERTION_FAILED, results, expected); + if (debug) + logger.debug("Test UseOfThisToAcessHiddenField02(): Passed"); + + tx.commit(); + tx = null; + } + finally { + if ((tx != null) && tx.isActive()) + tx.rollback(); + } + } +} + Added: incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/VariableDeclaredWithSameNameAsFieldOfCandidateClass.java URL: http://svn.apache.org/viewcvs/incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/VariableDeclaredWithSameNameAsFieldOfCandidateClass.java?view=auto&rev=158179 ============================================================================== --- incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/VariableDeclaredWithSameNameAsFieldOfCandidateClass.java (added) +++ incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/VariableDeclaredWithSameNameAsFieldOfCandidateClass.java Fri Mar 18 17:07:39 2005 @@ -0,0 +1,104 @@ +/* + * 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. + */ + +package org.apache.jdo.tck.query; + +import javax.jdo.JDOUserException; +import javax.jdo.PersistenceManager; +import javax.jdo.Query; +import javax.jdo.Transaction; + +import org.apache.jdo.tck.util.BatchTestRunner; + +/** + *<B>Title:</B> Variable Declared with Same Name as Field of Candidate Class + *<BR> + *<B>Keywords:</B> query + *<BR> + *<B>Assertion ID:</B> A14.4-3. + *<BR> + *<B>Assertion Description: </B> +A field of the candidate class of a <code>Query</code> can be hidden if a +variable is declared with the same name. + + */ + +public class VariableDeclaredWithSameNameAsFieldOfCandidateClass extends QueryTest { + + /** */ + private static final String ASSERTION_FAILED = + "Assertion A14.4-3 (VariableDeclaredWithSameNameAsFieldOfCandidateClass) failed: "; + + /** + * The <code>main</code> is called when the class + * is directly executed from the command line. + * @param args The arguments passed to the program. + */ + public static void main(String[] args) { + BatchTestRunner.run(VariableDeclaredWithSameNameAsFieldOfCandidateClass.class); + } + + /** */ + public void test() { + pm = getPM(); + + checkQueryVariables(pm); + + pm.close(); + pm = null; + } + + /** */ + void checkQueryVariables(PersistenceManager pm) { + Transaction tx = pm.currentTransaction(); + Class clazz = org.apache.jdo.tck.pc.company.Project.class; + try { + tx.begin(); + Query query = pm.newQuery(); + query.setClass(clazz); + query.setCandidates(pm.getExtent(clazz, false)); + try { + query.declareVariables( "org.apache.jdo.tck.pc.company.Person reviewers;" ); + query.setFilter( "reviewers.contains(reviewers)" ); + Object results = query.execute(); + fail(ASSERTION_FAILED, + "Variable declaration \"Person reviewers\" did not hide field Person.reviewers"); + } + catch (JDOUserException e) { + // expected exception + if (debug) logger.debug( "Caught expected " + e); + } + } + finally { + if (tx.isActive()) + tx.rollback(); + } + + try { + tx.begin(); + Query query = pm.newQuery(); + query.setClass(clazz); + query.setCandidates(pm.getExtent(clazz, false)); + query.declareVariables( "org.apache.jdo.tck.pc.company.Person reviewers;" ); + query.setFilter( "this.reviewers.contains(reviewers) && reviewers.firstname==\"brazil\"" ); + Object results = query.execute(); + } + finally { + if (tx.isActive()) + tx.rollback(); + } + } +} Added: incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/WhiteSpaceIsACharacterAndIgnored.java URL: http://svn.apache.org/viewcvs/incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/WhiteSpaceIsACharacterAndIgnored.java?view=auto&rev=158179 ============================================================================== --- incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/WhiteSpaceIsACharacterAndIgnored.java (added) +++ incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/WhiteSpaceIsACharacterAndIgnored.java Fri Mar 18 17:07:39 2005 @@ -0,0 +1,133 @@ +/* + * 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. + */ + +package org.apache.jdo.tck.query; + +import java.util.Collection; + +import javax.jdo.PersistenceManager; +import javax.jdo.Query; +import javax.jdo.Transaction; + +import org.apache.jdo.tck.pc.mylib.PCPoint; +import org.apache.jdo.tck.util.BatchTestRunner; + +/** + *<B>Title:</B> White Space is a Character and is Ignored + *<BR> + *<B>Keywords:</B> query + *<BR> + *<B>Assertion ID:</B> A14.6.2-6. + *<BR> + *<B>Assertion Description: </B> White space (non-printing characters space, + *tab, carriage return, and line feed) is a separator and is otherwise ignored + *in a <code>Query</code> filter. + */ + +public class WhiteSpaceIsACharacterAndIgnored extends QueryTest { + + /** */ + private static final String ASSERTION_FAILED = + "Assertion A14.6.2-6 (WhiteSpaceIsACharacterAndIgnored) failed: "; + + /** + * The <code>main</code> is called when the class + * is directly executed from the command line. + * @param args The arguments passed to the program. + */ + public static void main(String[] args) { + BatchTestRunner.run(WhiteSpaceIsACharacterAndIgnored.class); + } + + Collection expected = null; + + /** */ + public void test() { + pm = getPM(); + + initDatabase(pm, PCPoint.class); + initExpectedResult(pm, "x == 0"); + + // Escape Sequence + runTestWhiteSpaceIsACharacterAndIgnored01(pm, "x\t == 0"); + runTestWhiteSpaceIsACharacterAndIgnored01(pm, "x\n == 0"); + runTestWhiteSpaceIsACharacterAndIgnored01(pm, "x\f == 0"); + runTestWhiteSpaceIsACharacterAndIgnored01(pm, "x\r == 0"); + runTestWhiteSpaceIsACharacterAndIgnored01(pm, "x\n == \t 0 \r"); + // Unicode + runTestWhiteSpaceIsACharacterAndIgnored01(pm, "x\u0009 == 0"); + runTestWhiteSpaceIsACharacterAndIgnored01(pm, "x\u000c == 0"); + runTestWhiteSpaceIsACharacterAndIgnored01(pm, "x\u0020 == 0"); + // Octal Escape + runTestWhiteSpaceIsACharacterAndIgnored01(pm, "x\11 == 0"); + runTestWhiteSpaceIsACharacterAndIgnored01(pm, "x\12 == 0"); + runTestWhiteSpaceIsACharacterAndIgnored01(pm, "x\14 == 0"); + runTestWhiteSpaceIsACharacterAndIgnored01(pm, "x\15 == 0"); + runTestWhiteSpaceIsACharacterAndIgnored01(pm, "x\40 == 0"); + + pm.close(); + pm = null; + } + + /** */ + void initExpectedResult(PersistenceManager pm, String filter) { + Transaction tx = pm.currentTransaction(); + try { + tx.begin(); + + Query query = pm.newQuery(); + query.setClass(PCPoint.class); + query.setCandidates(pm.getExtent(PCPoint.class, false)); + query.setFilter(filter); + expected = (Collection) query.execute(); + + tx.commit(); + tx = null; + } + finally { + if ((tx != null) && tx.isActive()) + tx.rollback(); + } + } + + /** */ + void runTestWhiteSpaceIsACharacterAndIgnored01(PersistenceManager pm, + String filter) { + Transaction tx = pm.currentTransaction(); + Collection results = null; + try { + tx.begin(); + + Query query = pm.newQuery(); + query.setClass(PCPoint.class); + query.setCandidates(pm.getExtent(PCPoint.class, false)); + query.setFilter(filter); + results = (Collection) query.execute(); + printOutput(results, expected); + checkQueryResultWithoutOrder(ASSERTION_FAILED, results, expected); + if (debug) + logger.debug("Test WhiteSpaceIsACharacterAndIgnored01(\"" + + filter + "\"): Passed"); + + tx.commit(); + tx = null; + } + finally { + if ((tx != null) && tx.isActive()) + tx.rollback(); + } + } +} Added: incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/company.xml URL: http://svn.apache.org/viewcvs/incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/company.xml?view=auto&rev=158179 ============================================================================== --- incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/company.xml (added) +++ incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/company.xml Fri Mar 18 17:07:39 2005 @@ -0,0 +1,103 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> + +<beans> + <description>Company instances for query testing</description> + + <bean id="dept1" class="org.apache.jdo.tck.pc.company.Department"> + <constructor-arg index="0" type="long"><value>1</value></constructor-arg> + <constructor-arg index="1" type="java.lang.String" ><value>Development</value></constructor-arg> + <property name="employees"> + <set> + <ref local="emp1"/> + <ref local="emp2"/> + <ref local="emp3"/> + </set> + </property> + </bean> + + <bean id="emp1" class="org.apache.jdo.tck.pc.company.FullTimeEmployee"> + <constructor-arg index="0" type="long"><value>1</value></constructor-arg> + <constructor-arg index="1" type="java.lang.String"><value>emp1First</value></constructor-arg> + <constructor-arg index="2" type="java.lang.String"><value>emp1Last</value></constructor-arg> + <constructor-arg index="3" type="java.lang.String"><value>emp1Middle</value></constructor-arg> + <constructor-arg index="4" type="java.util.Date"><value>10/Jun/1970</value></constructor-arg> + <constructor-arg index="5" type="org.apache.jdo.tck.pc.company.Address"><ref local="addr1"/></constructor-arg> + <constructor-arg index="6" type="java.util.Date"><value>1/Jan/1999</value></constructor-arg> + <constructor-arg index="7" type="double"><value>20000</value></constructor-arg> + <property name="department"><ref bean="dept1"/></property> + <property name="medicalInsurance"><ref bean="medicalIns1"/></property> + <property name="phoneNumbers"> + <map> + <entry key="home"><value>1111</value></entry> + <entry key="work"><value>123456-1</value></entry> + </map> + </property> + </bean> + <bean id="emp2" class="org.apache.jdo.tck.pc.company.FullTimeEmployee"> + <constructor-arg index="0" type="long"><value>2</value></constructor-arg> + <constructor-arg index="1" type="java.lang.String"><value>emp2First</value></constructor-arg> + <constructor-arg index="2" type="java.lang.String"><value>emp2Last</value></constructor-arg> + <constructor-arg index="3" type="java.lang.String"><value>emp2Middle</value></constructor-arg> + <constructor-arg index="4" type="java.util.Date"><value>22/Dec/1975</value></constructor-arg> + <constructor-arg index="5" type="org.apache.jdo.tck.pc.company.Address"><ref local="addr2"/></constructor-arg> + <constructor-arg index="6" type="java.util.Date"><value>1/Jul/2003</value></constructor-arg> + <constructor-arg index="7" type="double"><value>10000</value></constructor-arg> + <property name="department"><ref bean="dept1"/></property> + <property name="phoneNumbers"> + <map> + <entry key="home"><value>2222</value></entry> + <entry key="work"><value>123456-2</value></entry> + </map> + </property> + </bean> + <bean id="emp3" class="org.apache.jdo.tck.pc.company.PartTimeEmployee"> + <constructor-arg index="0" type="long"><value>3</value></constructor-arg> + <constructor-arg index="1" type="java.lang.String"><value>emp3First</value></constructor-arg> + <constructor-arg index="2" type="java.lang.String"><value>emp3Last</value></constructor-arg> + <constructor-arg index="3" type="java.lang.String"><value>emp3Middle</value></constructor-arg> + <constructor-arg index="4" type="java.util.Date"><value>5/Sep/1972</value></constructor-arg> + <constructor-arg index="5" type="org.apache.jdo.tck.pc.company.Address"><ref local="addr3"/></constructor-arg> + <constructor-arg index="6" type="java.util.Date"><value>15/Aug/2002</value></constructor-arg> + <constructor-arg index="7" type="double"><value>15000</value></constructor-arg> + <property name="department"><ref bean="dept1"/></property> + <property name="phoneNumbers"> + <map> + <entry key="home"><value>3333</value></entry> + <entry key="work"><value>123456-3</value></entry> + </map> + </property> + </bean> + + <bean id="addr1" class="org.apache.jdo.tck.pc.company.Address"> + <constructor-arg index="0" type="long"><value>1</value></constructor-arg> + <constructor-arg index="1" type="java.lang.String"><value>Unter den Linden 1</value></constructor-arg> + <constructor-arg index="2" type="java.lang.String"><value>Berlin</value></constructor-arg> + <constructor-arg index="3" type="java.lang.String"><value></value></constructor-arg> + <constructor-arg index="4" type="java.lang.String"><value>12345</value></constructor-arg> + <constructor-arg index="5" type="java.lang.String"><value>Germany</value></constructor-arg> + </bean> + <bean id="addr2" class="org.apache.jdo.tck.pc.company.Address"> + <constructor-arg index="0" type="long"><value>2</value></constructor-arg> + <constructor-arg index="1" type="java.lang.String"><value>Broadway 1</value></constructor-arg> + <constructor-arg index="2" type="java.lang.String"><value>New York</value></constructor-arg> + <constructor-arg index="3" type="java.lang.String"><value></value></constructor-arg> + <constructor-arg index="4" type="java.lang.String"><value>10000</value></constructor-arg> + <constructor-arg index="5" type="java.lang.String"><value>USA</value></constructor-arg> + </bean> + <bean id="addr3" class="org.apache.jdo.tck.pc.company.Address"> + <constructor-arg index="0" type="long"><value>3</value></constructor-arg> + <constructor-arg index="1" type="java.lang.String"><value>Market St.</value></constructor-arg> + <constructor-arg index="2" type="java.lang.String"><value>San Francisco</value></constructor-arg> + <constructor-arg index="3" type="java.lang.String"><value></value></constructor-arg> + <constructor-arg index="4" type="java.lang.String"><value>94102</value></constructor-arg> + <constructor-arg index="5" type="java.lang.String"><value>USA</value></constructor-arg> + </bean> + + <bean id="medicalIns1" class="org.apache.jdo.tck.pc.company.MedicalInsurance"> + <constructor-arg index="0" type="long"><value>1</value></constructor-arg> + <constructor-arg index="1" type="java.lang.String"><value>Carrier1</value></constructor-arg> + <constructor-arg index="2" type="java.lang.String"><value>PPO</value></constructor-arg> + <property name="employee"><ref bean="emp1"/></property> + </bean> +</beans> Added: incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/operators/BinaryAddition.java URL: http://svn.apache.org/viewcvs/incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/operators/BinaryAddition.java?view=auto&rev=158179 ============================================================================== --- incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/operators/BinaryAddition.java (added) +++ incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/operators/BinaryAddition.java Fri Mar 18 17:07:39 2005 @@ -0,0 +1,125 @@ +/* + * 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. + */ + +package org.apache.jdo.tck.query.operators; + +import java.util.Collection; + +import javax.jdo.PersistenceManager; +import javax.jdo.Transaction; + +import org.apache.jdo.tck.pc.mylib.PrimitiveTypes; +import org.apache.jdo.tck.query.QueryTest; +import org.apache.jdo.tck.util.BatchTestRunner; + +/** + *<B>Title:</B> Binary Addition Query Operator + *<BR> + *<B>Keywords:</B> query + *<BR> + *<B>Assertion ID:</B> A14.6.2-26. + *<BR> + *<B>Assertion Description: </B> The binary addition operator (<code>+</code>) is supported for all types as they are defined in the Java language. This includes the following types: +<UL> +<LI><code>byte, short, int, long, char, Byte, Short Integer, Long, Character</code></LI> +<LI><code>float, double, Float, Double</code></LI> +<LI><code>BigDecimal, BigInteger</code></LI> +</UL> +The operation on object-valued fields of wrapper types (<code>Boolean, Byte, Short, Integer, Long, Float</code>, and <code>Double</code>), and numeric types (<code>BigDecimal</code> and <code>BigInteger</code>) use the wrapped values as operands. + */ + +public class BinaryAddition extends QueryTest { + + /** */ + private static final String ASSERTION_FAILED = + "Assertion A14.6.2-26 (BinaryAddition) failed: "; + + /** + * The <code>main</code> is called when the class + * is directly executed from the command line. + * @param args The arguments passed to the program. + */ + public static void main(String[] args) { + BatchTestRunner.run(BinaryAddition.class); + } + + /** */ + public void test() { + pm = getPM(); + + try { + loadPrimitiveTypes(pm); + runTest(pm); + } + finally { + cleanupDatabase(pm, PrimitiveTypes.class); + pm.close(); + pm = null; + } + } + + /** */ + void runTest(PersistenceManager pm) { + if (debug) logger.debug("\nExecuting test BinaryAddition() ..."); + + Transaction tx = pm.currentTransaction(); + tx.begin(); + + Collection instance9 = (Collection)pm.newQuery( + PrimitiveTypes.class, "id == 9").execute(); + Collection allOddInstances = (Collection)pm.newQuery( + PrimitiveTypes.class, "booleanNull").execute(); + + runSimplePrimitiveTypesQuery("id + 1 == 10", + pm, instance9, ASSERTION_FAILED); + runSimplePrimitiveTypesQuery("byteNotNull + 1 == 10", + pm, instance9, ASSERTION_FAILED); + runSimplePrimitiveTypesQuery("shortNotNull + 1 == 10", + pm, instance9, ASSERTION_FAILED); + runSimplePrimitiveTypesQuery("intNotNull + 1 == 10", + pm, instance9, ASSERTION_FAILED); + runSimplePrimitiveTypesQuery("longNotNull + 1 == 10", + pm, instance9, ASSERTION_FAILED); + runSimplePrimitiveTypesQuery("floatNotNull + 1 == 10", + pm, instance9, ASSERTION_FAILED); + runSimplePrimitiveTypesQuery("doubleNotNull + 1 == 10", + pm, instance9, ASSERTION_FAILED); + runSimplePrimitiveTypesQuery("byteNull + 1 == 10", + pm, instance9, ASSERTION_FAILED); + runSimplePrimitiveTypesQuery("shortNull + 1 == 10", + pm, instance9, ASSERTION_FAILED); + runSimplePrimitiveTypesQuery("intNull + 1 == 10", + pm, instance9, ASSERTION_FAILED); + runSimplePrimitiveTypesQuery("longNull + 1 == 10", + pm, instance9, ASSERTION_FAILED); + runSimplePrimitiveTypesQuery("floatNull + 1 == 10", + pm, instance9, ASSERTION_FAILED); + runSimplePrimitiveTypesQuery("doubleNull + 1 == 10", + pm, instance9, ASSERTION_FAILED); + runSimplePrimitiveTypesQuery("bigDecimal + 1 == 10", + pm, instance9, ASSERTION_FAILED); + runSimplePrimitiveTypesQuery("bigInteger + 1 == 10", + pm, instance9, ASSERTION_FAILED); + + runSimplePrimitiveTypesQuery("charNull + 1 == 'P'", + pm, allOddInstances, ASSERTION_FAILED); + runSimplePrimitiveTypesQuery("charNotNull + 1 == 'P'", + pm, allOddInstances, ASSERTION_FAILED); + + tx.commit(); + } +} + Added: incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/operators/BinarySubtraction.java URL: http://svn.apache.org/viewcvs/incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/operators/BinarySubtraction.java?view=auto&rev=158179 ============================================================================== --- incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/operators/BinarySubtraction.java (added) +++ incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/operators/BinarySubtraction.java Fri Mar 18 17:07:39 2005 @@ -0,0 +1,130 @@ +/* + * 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. + */ + +package org.apache.jdo.tck.query.operators; + +import java.util.Collection; + +import javax.jdo.PersistenceManager; +import javax.jdo.Transaction; + +import org.apache.jdo.tck.pc.mylib.PrimitiveTypes; +import org.apache.jdo.tck.query.QueryTest; +import org.apache.jdo.tck.util.BatchTestRunner; + +/** + *<B>Title:</B> Binary Subtraction Query Operator + *<BR> + *<B>Keywords:</B> query + *<BR> + *<B>Assertion ID:</B> A14.6.2-28. + *<BR> + *<B>Assertion Description: </B> +The binary subtraction operator (<code>-</code>) is supported for all types as +they are defined in the Java language. This includes the following types: +<UL> +<LI><code>byte, short, int, long, char, Byte, Short Integer, Long, Character</code></LI> +<LI><code>float, double, Float, Double</code></LI> +<LI><code>BigDecimal, BigInteger</code></LI> +</UL> +The operation on object-valued fields of wrapper types (<code>Boolean, Byte, +Short, Integer, Long, Float</code>, and <code>Double</code>), and numeric types +(<code>BigDecimal</code> and <code>BigInteger</code>) +use the wrapped values as operands. + + */ + +public class BinarySubtraction extends QueryTest { + + /** */ + private static final String ASSERTION_FAILED = + "Assertion A14.6.2-28 (BinarySubtraction) failed: "; + + /** + * The <code>main</code> is called when the class + * is directly executed from the command line. + * @param args The arguments passed to the program. + */ + public static void main(String[] args) { + BatchTestRunner.run(BinarySubtraction.class); + } + + /** */ + public void test() { + pm = getPM(); + + try { + loadPrimitiveTypes(pm); + runTest(pm); + } + finally { + cleanupDatabase(pm, PrimitiveTypes.class); + pm.close(); + pm = null; + } + } + + /** */ + void runTest(PersistenceManager pm) { + if (debug) logger.debug("\nExecuting test BinarySubtraction() ..."); + + Transaction tx = pm.currentTransaction(); + tx.begin(); + + Collection instance9 = (Collection)pm.newQuery( + PrimitiveTypes.class, "id == 9").execute(); + Collection allOddInstances = (Collection)pm.newQuery( + PrimitiveTypes.class, "booleanNull").execute(); + + runSimplePrimitiveTypesQuery("id - 1 == 8", + pm, instance9, ASSERTION_FAILED); + runSimplePrimitiveTypesQuery("byteNotNull - 1 == 8", + pm, instance9, ASSERTION_FAILED); + runSimplePrimitiveTypesQuery("shortNotNull - 1 == 8", + pm, instance9, ASSERTION_FAILED); + runSimplePrimitiveTypesQuery("intNotNull - 1 == 8", + pm, instance9, ASSERTION_FAILED); + runSimplePrimitiveTypesQuery("longNotNull - 1 == 8", + pm, instance9, ASSERTION_FAILED); + runSimplePrimitiveTypesQuery("floatNotNull - 1 == 8", + pm, instance9, ASSERTION_FAILED); + runSimplePrimitiveTypesQuery("doubleNotNull - 1 == 8", + pm, instance9, ASSERTION_FAILED); + runSimplePrimitiveTypesQuery("byteNull - 1 == 8", + pm, instance9, ASSERTION_FAILED); + runSimplePrimitiveTypesQuery("shortNull - 1 == 8", + pm, instance9, ASSERTION_FAILED); + runSimplePrimitiveTypesQuery("intNull - 1 == 8", + pm, instance9, ASSERTION_FAILED); + runSimplePrimitiveTypesQuery("longNull - 1 == 8", + pm, instance9, ASSERTION_FAILED); + runSimplePrimitiveTypesQuery("floatNull - 1 == 8", + pm, instance9, ASSERTION_FAILED); + runSimplePrimitiveTypesQuery("doubleNull - 1 == 8", + pm, instance9, ASSERTION_FAILED); + runSimplePrimitiveTypesQuery("bigDecimal - 1 == 8", + pm, instance9, ASSERTION_FAILED); + runSimplePrimitiveTypesQuery("bigInteger - 1 == 8", + pm, instance9, ASSERTION_FAILED); + + runSimplePrimitiveTypesQuery("charNull - 1 == 'N'", + pm, allOddInstances, ASSERTION_FAILED); + runSimplePrimitiveTypesQuery("charNotNull - 1 == 'N'", + pm, allOddInstances, ASSERTION_FAILED); + + tx.commit(); + } +} Added: incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/operators/BitwiseComplement.java URL: http://svn.apache.org/viewcvs/incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/operators/BitwiseComplement.java?view=auto&rev=158179 ============================================================================== --- incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/operators/BitwiseComplement.java (added) +++ incubator/jdo/trunk/tck11/test/java/org/apache/jdo/tck/query/operators/BitwiseComplement.java Fri Mar 18 17:07:39 2005 @@ -0,0 +1,111 @@ +/* + * 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. + */ + +package org.apache.jdo.tck.query.operators; + +import java.util.Collection; + +import javax.jdo.PersistenceManager; +import javax.jdo.Transaction; + +import org.apache.jdo.tck.pc.mylib.PrimitiveTypes; +import org.apache.jdo.tck.query.QueryTest; +import org.apache.jdo.tck.util.BatchTestRunner; +/** + *<B>Title:</B> Bitwise Complement Query Operator + *<BR> + *<B>Keywords:</B> query + *<BR> + *<B>Assertion ID:</B> A14.6.2-24. + *<BR> + *<B>Assertion Description: </B> +The integral unary bitwise complement operator (<code>~</code>) is supported +for all types as they are defined in the Java language. +This includes the following types: +<UL> +<LI><code>byte, short, int, long, char, Byte, Short Integer, Long, Character</code></LI> +</UL> + + */ + +public class BitwiseComplement extends QueryTest { + + /** */ + private static final String ASSERTION_FAILED = + "Assertion A14.6.2-24 (BitwiseComplement) failed: "; + + /** + * The <code>main</code> is called when the class + * is directly executed from the command line. + * @param args The arguments passed to the program. + */ + public static void main(String[] args) { + BatchTestRunner.run(BitwiseComplement.class); + } + + /** */ + public void test() { + pm = getPM(); + + try { + loadPrimitiveTypes(pm); + runTest(pm); + } + finally { + cleanupDatabase(pm, PrimitiveTypes.class); + pm.close(); + pm = null; + } + } + + /** */ + void runTest(PersistenceManager pm) { + Transaction tx = pm.currentTransaction(); + tx.begin(); + + Collection instance9 = (Collection)pm.newQuery( + PrimitiveTypes.class, "id == 9").execute(); + Collection allOddInstances = (Collection)pm.newQuery( + PrimitiveTypes.class, "booleanNull").execute(); + + runSimplePrimitiveTypesQuery("~id == -10", + pm, instance9, ASSERTION_FAILED); + runSimplePrimitiveTypesQuery("~byteNotNull == -10", + pm, instance9, ASSERTION_FAILED); + runSimplePrimitiveTypesQuery("~shortNotNull == -10", + pm, instance9, ASSERTION_FAILED); + runSimplePrimitiveTypesQuery("~intNotNull == -10", + pm, instance9, ASSERTION_FAILED); + runSimplePrimitiveTypesQuery("~longNotNull == -10", + pm, instance9, ASSERTION_FAILED); + runSimplePrimitiveTypesQuery("~byteNull == -10", + pm, instance9, ASSERTION_FAILED); + runSimplePrimitiveTypesQuery("~shortNull == -10", + pm, instance9, ASSERTION_FAILED); + runSimplePrimitiveTypesQuery("~intNull == -10", + pm, instance9, ASSERTION_FAILED); + runSimplePrimitiveTypesQuery("~longNull == -10", + pm, instance9, ASSERTION_FAILED); + + + runSimplePrimitiveTypesQuery("~charNull == -80", + pm, allOddInstances, ASSERTION_FAILED); + runSimplePrimitiveTypesQuery("~charNotNull == -80", + pm, allOddInstances, ASSERTION_FAILED); + + tx.commit(); + } +}