Index: test/java/org/apache/jdo/tck/api/persistencemanager/GetPutRemoveUserObject.java =================================================================== --- test/java/org/apache/jdo/tck/api/persistencemanager/GetPutRemoveUserObject.java (revision 0) +++ test/java/org/apache/jdo/tck/api/persistencemanager/GetPutRemoveUserObject.java (revision 0) @@ -0,0 +1,141 @@ +/* + * 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; + +import org.apache.jdo.tck.JDO_Test; + +import org.apache.jdo.tck.util.BatchTestRunner; + + +/** + *Title: Test GetPutRemoveUserObject + *
+ *Keywords: getUserObject putUserObject removeUserObject + *
+ *Assertion IDs: A12.11-1 + *
+ *Assertion Description: + * Object putUserObject(Object key, Object value); This method models + * the put method of Map. The current value associated with the key + * is returned and replaced by the parameter value. + * If the parameter value is null, the implementation may remove + * the entry from the table of managed key/value pairs + * Object removeUserObject(Object key); This method models + * the remove method of Map. The current value associated with the key + * is returned and removed. + * Object getUserObject(Object key); This method models + * the get method of Map. The current value associated with the key + * is returned. If the key is not found in the table, null is returned.]..] + */ + +public class GetPutRemoveUserObject extends JDO_Test { + + /** */ + private static final String ASSERTION_FAILED = + "Assertion A12.11-1 (GetPutRemoveUserObject) failed: "; + + /** First key + */ + private static final String KEY1 = "jdo.tck.key1"; + + /** Second key + */ + private static final String KEY2 = "jdo.tck.key2"; + + /** Non-existent key + */ + private static final String KEY_DOES_NOT_EXIST = "jdo.tck.keyDoesNotExist"; + + /** + * The main 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(GetPutRemoveUserObject.class); + } + + /** */ + public void testGetNonexistentKey() { + getPM(); + assertNull(ASSERTION_FAILED + + "Non-null value returned from key that does not exist.", + pm.getUserObject(KEY_DOES_NOT_EXIST)); + } + + public void testGetKey() { + getPM(); + UserObject obj1p = new UserObject(); + UserObject obj2p = new UserObject(); + Object obj1pv = pm.putUserObject(KEY1, obj1p); + Object obj2pv = pm.putUserObject(KEY2, obj2p); + Object obj1g = pm.getUserObject(KEY1); + Object obj2g = pm.getUserObject(KEY2); + pm.putUserObject(KEY1, null); + pm.putUserObject(KEY2, null); + assertNull(ASSERTION_FAILED + + "putUserObject expected null" + + "; actual: " + obj1pv, + obj1pv); + assertSame(ASSERTION_FAILED + + "getUserObject expected: " + obj1p + + "; actual: " + obj1g, + obj1p, obj1g); + assertNull(ASSERTION_FAILED + + "putUserObject expected null" + + "; actual: " + obj2pv, + obj2pv); + assertSame(ASSERTION_FAILED + + "getUserObject expected: " + obj2p + + "; actual: " + obj2g, + obj2p, obj2g); + } + + public void testRemoveKey() { + getPM(); + UserObject obj1p = new UserObject(); + UserObject obj2p = new UserObject(); + pm.putUserObject(KEY1, obj1p); + pm.putUserObject(KEY2, obj2p); + Object obj1r = pm.removeUserObject(KEY1); + Object obj1rr = pm.removeUserObject(KEY1); + Object obj2r = pm.removeUserObject(KEY2); + Object obj2rr = pm.removeUserObject(KEY2); + assertSame(ASSERTION_FAILED + + "removeUserObject(KEY1) expected: " + obj1p + + "; actual: " + obj1r, + obj1p, obj1r); + assertNull(ASSERTION_FAILED + + "getUserObject(KEY1) expected null: " + + "; actual: " + obj1rr, + obj1rr); + assertSame(ASSERTION_FAILED + + "removeUserObject(KEY2) returned: " + obj2p + + "; actual: " + obj2r, + obj2p, obj2r); + assertNull(ASSERTION_FAILED + + "getUserObject(KEY2) expected null: " + + "; actual: " + obj2rr, + obj2rr); + } + + private class UserObject { + /** No implementation needed for this class. It is only used + * with == comparisons. + */ + } +}