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 cl...@apache.org on 2006/03/21 00:19:27 UTC

svn commit: r387340 - in /db/jdo/trunk/tck20/src: conf/pm.conf java/org/apache/jdo/tck/api/persistencemanager/getobject/GetObjectsById.java

Author: clr
Date: Mon Mar 20 15:19:25 2006
New Revision: 387340

URL: http://svn.apache.org/viewcvs?rev=387340&view=rev
Log:
JDO-141 Added getObjectsById tests

Added:
    db/jdo/trunk/tck20/src/java/org/apache/jdo/tck/api/persistencemanager/getobject/GetObjectsById.java
Modified:
    db/jdo/trunk/tck20/src/conf/pm.conf

Modified: db/jdo/trunk/tck20/src/conf/pm.conf
URL: http://svn.apache.org/viewcvs/db/jdo/trunk/tck20/src/conf/pm.conf?rev=387340&r1=387339&r2=387340&view=diff
==============================================================================
--- db/jdo/trunk/tck20/src/conf/pm.conf (original)
+++ db/jdo/trunk/tck20/src/conf/pm.conf Mon Mar 20 15:19:25 2006
@@ -69,6 +69,7 @@
 org.apache.jdo.tck.api.persistencemanager.getobject.GetObjectByIdWithValidationInstanceInCache \
 org.apache.jdo.tck.api.persistencemanager.getobject.GetObjectByIdWithValidationInstanceInCacheNotInDatastore \
 org.apache.jdo.tck.api.persistencemanager.getobject.GetObjectByIdWithValidationInstanceNotInCacheNotInDatastore \
+org.apache.jdo.tck.api.persistencemanager.getobject.GetObjectsById \
 org.apache.jdo.tck.api.persistencemanager.getobject.GetObjectId \
 org.apache.jdo.tck.api.persistencemanager.getobject.GetObjectIdClass \
 org.apache.jdo.tck.api.persistencemanager.getobject.GetObjectIdClassForAbstractOrNonPersistenceCapableClass \

Added: db/jdo/trunk/tck20/src/java/org/apache/jdo/tck/api/persistencemanager/getobject/GetObjectsById.java
URL: http://svn.apache.org/viewcvs/db/jdo/trunk/tck20/src/java/org/apache/jdo/tck/api/persistencemanager/getobject/GetObjectsById.java?rev=387340&view=auto
==============================================================================
--- db/jdo/trunk/tck20/src/java/org/apache/jdo/tck/api/persistencemanager/getobject/GetObjectsById.java (added)
+++ db/jdo/trunk/tck20/src/java/org/apache/jdo/tck/api/persistencemanager/getobject/GetObjectsById.java Mon Mar 20 15:19:25 2006
@@ -0,0 +1,215 @@
+/*
+ * 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.api.persistencemanager.getobject;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+
+import org.apache.jdo.tck.JDO_Test;
+
+import org.apache.jdo.tck.pc.mylib.PCPoint;
+
+import org.apache.jdo.tck.util.BatchTestRunner;
+
+/**
+ *<B>Title:</B> Test GetObjectsById
+ *<BR>
+ *<B>Keywords:</B> getObjectsById getObjectById
+ *<BR>
+ *<B>Assertion IDs:</B> 12.5.6-17
+ *<BR>
+ *<B>Assertion Description: </B>
+ * 12.5.6-17 [Collection getObjectsById (Collection oids); 
+ * Object[] getObjectsById (Object[] oids); 
+ * Collection getObjectsById (Collection oids, boolean validate); 
+ * Object[] getObjectsById (Object[] oids, boolean validate); 
+ * The getObjectsById method attempts to find instances in the cache 
+ * with the specified JDO identities. The elements of the oids parameter 
+ * object might have been returned by earlier calls to getObjectId 
+ * or getTransactionalObjectId, or might have been constructed by 
+ * the application. If a method with no validate parameter is used, 
+ * the method behaves exactly as the correspond ing method with 
+ * the validate flag set to true. If the Object[] form of the method 
+ * is used, the returned objects correspond by position with 
+ * the object ids in the oids parameter. If the Collection form 
+ * of the method is used, the iterator over the returned Collection 
+ * returns instances in the same order as the oids returned by 
+ * an iterator over the parameter Collection. The cardinality of 
+ * the return value is the same as the cardinality of 
+ * the oids parameter. ]  
+ */
+
+public class GetObjectsById extends JDO_Test {
+
+    /** */
+    private static final String ASSERTION_FAILED = 
+        "Assertion 12.5.6-17 (GetObjectsById) failed: ";
+    
+    /** Number of persistent instances */
+    private static final int NUMBER_OF_INSTANCES = 50;
+
+    /** Persistent instances */
+    private final Collection instanceCollection = 
+            new ArrayList(NUMBER_OF_INSTANCES);
+
+    /** Object ids */
+    private final Collection oidCollection =
+            new ArrayList(NUMBER_OF_INSTANCES);
+
+    /** Persistent instances */
+    private final Object[] instanceArray = 
+            new Object[NUMBER_OF_INSTANCES];
+
+    /** Object ids */
+    private final Object[] oidArray =
+            new Object[NUMBER_OF_INSTANCES];
+
+    /**
+     * 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(GetObjectsById.class);
+    }
+
+    /**
+     * @see JDO_Test#localSetUp()
+     */
+    protected void localSetUp() {
+        addTearDownClass(PCPoint.class);
+        getPM().currentTransaction().begin();
+        Object instance;
+        Object oid;
+        instanceCollection.clear();
+        oidCollection.clear();
+        for (int i = 0; i < NUMBER_OF_INSTANCES; ++i) {
+            instance = new PCPoint(i, 1000 + i);
+            pm.makePersistent(instance);
+            instanceCollection.add(instance);
+            instanceArray[i] = instance;
+            oid = pm.getObjectId(instance);
+            oidCollection.add(oid);
+            oidArray[i] = oid;
+        }
+        pm.currentTransaction().commit();
+    }
+    
+    /** */
+    public void testCollection() {
+        getPM().currentTransaction().begin();
+        Collection result = pm.getObjectsById(oidCollection);
+        pm.currentTransaction().commit();
+        checkResultCollection("after getObjectsById(Collection)", 
+                result);
+        failOnError();
+    }
+
+    /** */
+    public void testCollectionTrue() {
+        getPM().currentTransaction().begin();
+        Collection result = pm.getObjectsById(oidCollection, true);
+        pm.currentTransaction().commit();
+        checkResultCollection(
+                "after getObjectsById(Collection, true)", 
+                result);
+        failOnError();
+    }
+
+    /** */
+    public void testCollectionFalse() {
+        getPM().currentTransaction().begin();
+        Collection result = pm.getObjectsById(oidCollection, false);
+        pm.currentTransaction().commit();
+        checkResultCollection(
+                "after getObjectsById(Collection, false)", 
+                result);
+        failOnError();
+    }
+
+    /** */
+    public void testArray() {
+        getPM().currentTransaction().begin();
+        Object[] result = pm.getObjectsById(oidArray);
+        pm.currentTransaction().commit();
+        checkResultArray("after getObjectsById(Object[], false)", result);
+        failOnError();
+    }
+
+    /** */
+    public void testArrayTrue() {
+        getPM().currentTransaction().begin();
+        Object[] result = pm.getObjectsById(oidArray, true);
+        pm.currentTransaction().commit();
+        checkResultArray("after getObjectsById(Object[], false)", result);
+        failOnError();
+    }
+
+    /** */
+    public void testArrayFalse() {
+        getPM().currentTransaction().begin();
+        Object[] result = pm.getObjectsById(oidArray, false);
+        pm.currentTransaction().commit();
+        checkResultArray("after getObjectsById(Object[], false)", result);
+        failOnError();
+    }
+
+    /** Check the results of getObjectsById */
+    private void checkResultCollection(String location, Collection instances) {
+        Iterator expected = instanceCollection.iterator();
+        Iterator actual = instances.iterator();
+        for (int i = 0; i < NUMBER_OF_INSTANCES; ++i) {
+            checkIdentity(ASSERTION_FAILED + location + ", position " + i,
+                    expected.next(), actual.next());
+        }
+        checkIteratorComplete(ASSERTION_FAILED,
+                actual);
+    }
+
+    /** Check the results of getObjectsById */
+    private void checkResultArray(String location, Object[] actual) {
+        int length = actual.length;
+        if (length != NUMBER_OF_INSTANCES) {
+            appendMessage(location + "incorrect length of result. " +
+                    "expected: " + NUMBER_OF_INSTANCES +
+                    "  actual: " + length);
+        }
+        Object[] expected = instanceArray;
+        for (int i = 0; i < NUMBER_OF_INSTANCES; ++i) {
+            checkIdentity(ASSERTION_FAILED + location + ", position " + i,
+                    expected[i], actual[i]);
+        }
+    }
+
+    /** Check the identity of the instances */
+    private void checkIdentity(String location, 
+            Object expected, Object actual) {
+        if (expected != actual) {
+            appendMessage(location + "failed to compare \n" +
+                    "expected: " + expected + " actual: " + actual);
+        }
+    }
+
+    /** Check that the iterator has no more elements */
+    private void checkIteratorComplete (String location, Iterator iterator) {
+        if (iterator.hasNext()) {
+            appendMessage(location + 
+                    "result iterator has more elements than expected.");
+        }        
+    }
+}
\ No newline at end of file