blob: ea0bcfb72772140150577f50518bce549cae9cc9 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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
<<<<<<< Updated upstream
*
* 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
=======
*
* https://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
>>>>>>> Stashed changes
* limitations under the License.
*/
package org.apache.jdo.tck.api.jdohelper;
import java.util.Arrays;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import javax.jdo.JDOHelper;
import javax.jdo.PersistenceManager;
import javax.jdo.identity.SingleFieldIdentity;
import org.apache.jdo.tck.JDO_Test;
import org.apache.jdo.tck.pc.mylib.PCPoint;
import org.apache.jdo.tck.pc.singlefieldidentity.PCPointSingleFieldInteger;
import org.apache.jdo.tck.util.BatchTestRunner;
/**
* <B>Title:</B> Test GetObjectIds <br>
* <B>Keywords:</B> getObjectIds getObjectId <br>
* <B>Assertion IDs:</B> A8.3-11 <br>
* <B>Assertion Description: </B> These methods return the JDO identities of the parameter
* instances. For each instance in the parameter, the getObjectId method is called. They return one
* identity instance for each persistence-capable instance in the parameter. The order of iteration
* of the returned Collection exactly matches the order of iteration of the parameter Collection.]
*/
public class GetObjectIds extends JDO_Test {
/** */
private static final String ASSERTION_FAILED = "Assertion A8.3-11 (GetObjectIds) 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(GetObjectIds.class);
}
/** The parameter objects */
Object obj0;
Object obj1;
Object obj2;
Object obj3;
Object obj4;
Object[] objs;
/** The object ids */
Object oid0;
Object oid1;
Object oid2;
Object oid3;
Object oid4;
Object[] oids;
/** Typed objects */
PCPointSingleFieldInteger singleFieldIdentityObj0;
PCPointSingleFieldInteger singleFieldIdentityObj1;
PCPointSingleFieldInteger[] singleFieldIdentityObjs;
/** Typed object ids */
SingleFieldIdentity singleFieldIdentityOid0;
SingleFieldIdentity singleFieldIdentityOid1;
SingleFieldIdentity[] singleFieldIdentityOids;
/** The second persistence manager. */
PersistenceManager pm2;
/**
* @see org.apache.jdo.tck.JDO_Test#localSetUp()
*/
@Override
protected void localSetUp() {
addTearDownClass(PCPoint.class);
objs =
new Object[] {
obj0 = null,
obj1 = new Date(),
obj2 = new PCPoint(23, 45), // persistent in pm1
obj3 = new PCPoint(26, 47), // persistent in pm2
obj4 = new PCPoint(23, 45) // not persistent
};
singleFieldIdentityObjs =
new PCPointSingleFieldInteger[] {
singleFieldIdentityObj0 = new PCPointSingleFieldInteger(0, 1), // persistent in pm1
singleFieldIdentityObj1 = new PCPointSingleFieldInteger(1, 1) // persistent in pm1
};
getPM();
pm.currentTransaction().begin();
pm.makePersistent(obj2);
if (runsWithApplicationIdentity()) {
pm.makePersistent(singleFieldIdentityObj0);
pm.makePersistent(singleFieldIdentityObj1);
}
pm.currentTransaction().commit();
pm2 = getPMF().getPersistenceManager();
pm2.currentTransaction().begin();
pm2.makePersistent(obj3);
pm2.currentTransaction().commit();
oids =
new Object[] {
oid0 = JDOHelper.getObjectId(obj0),
oid1 = JDOHelper.getObjectId(obj1),
oid2 = JDOHelper.getObjectId(obj2),
oid3 = JDOHelper.getObjectId(obj3),
oid4 = JDOHelper.getObjectId(obj4),
};
singleFieldIdentityOids =
new SingleFieldIdentity[] {
singleFieldIdentityOid0 =
(SingleFieldIdentity) JDOHelper.getObjectId(singleFieldIdentityObj0),
singleFieldIdentityOid1 =
(SingleFieldIdentity) JDOHelper.getObjectId(singleFieldIdentityObj1)
};
}
/**
* @see org.apache.jdo.tck.JDO_Test#localTearDown()
*/
@Override
protected void localTearDown() {
pm2.close();
}
/** */
public void testGetObjectIdsArray() {
StringBuilder messages = new StringBuilder();
Object[] expectedArray = oids;
Object[] actualArray = JDOHelper.getObjectIds(objs);
for (int i = 0; i < objs.length; ++i) {
Object expected = expectedArray[i];
Object actual = actualArray[i];
if (expected == null ? actual != null : !expected.equals(actual)) {
messages.append(
"\nComparison failed for object ids at position "
+ i
+ "\nexpected: "
+ expected
+ "\nactual: "
+ actual);
}
}
if (messages.length() != 0) {
fail(ASSERTION_FAILED + "getObjectIds(Object[] pcs) " + messages);
}
}
/** */
public void testGetObjectIdsCollection() {
StringBuilder messages = new StringBuilder();
List<Object> paramList = Arrays.asList(objs);
List<Object> expectedList = Arrays.asList(oids);
Collection<Object> actualCollection = JDOHelper.getObjectIds(paramList);
Iterator<Object> expectedIterator = expectedList.iterator();
Iterator<Object> actualIterator = actualCollection.iterator();
for (int i = 0; i < objs.length; ++i) {
Object expected = expectedIterator.next();
Object actual = actualIterator.next();
if (expected == null ? actual != null : !expected.equals(actual)) {
messages.append(
"\nComparison failed for object ids at position "
+ i
+ "\nexpected: "
+ expected
+ "\nactual: "
+ actual);
}
}
if (messages.length() != 0) {
fail(ASSERTION_FAILED + "getObjectIds(Collection pcs) " + messages);
}
}
/** */
public void testTypedGetObjectIdsArray() {
if (!runsWithApplicationIdentity()) return;
StringBuilder messages = new StringBuilder();
Object[] expectedArray = singleFieldIdentityOids;
Object[] actualArray = JDOHelper.getObjectIds(singleFieldIdentityObjs);
for (int i = 0; i < singleFieldIdentityObjs.length; ++i) {
Object expected = expectedArray[i];
Object actual = actualArray[i];
if (expected == null ? actual != null : !expected.equals(actual)) {
messages.append(
"\nComparison failed for object ids at position "
+ i
+ "\nexpected: "
+ expected
+ "\nactual: "
+ actual);
}
}
if (messages.length() != 0) {
fail(ASSERTION_FAILED + "getObjectIds(Object[] pcs) " + messages);
}
}
/** */
public void testTypedGetObjectIdsCollection() {
if (!runsWithApplicationIdentity()) return;
StringBuilder messages = new StringBuilder();
List<PCPointSingleFieldInteger> paramList = Arrays.asList(singleFieldIdentityObjs);
List<?> expectedList = Arrays.asList(singleFieldIdentityOids);
Collection<?> actualCollection = JDOHelper.getObjectIds(paramList);
Iterator<?> expectedIterator = expectedList.iterator();
Iterator<?> actualIterator = actualCollection.iterator();
for (int i = 0; i < singleFieldIdentityObjs.length; ++i) {
Object expected = expectedIterator.next();
Object actual = actualIterator.next();
if (expected == null ? actual != null : !expected.equals(actual)) {
messages.append(
"\nComparison failed for object ids at position "
+ i
+ "\nexpected: "
+ expected
+ "\nactual: "
+ actual);
}
}
if (messages.length() != 0) {
fail(ASSERTION_FAILED + "getObjectIds(Collection<SingleFieldIdentyty> pcs) " + messages);
}
}
}