blob: ddd8b28f4c9d12a3a0f46a41af2cd5ce8544357f [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.persistencemanager.fetchplan;
import java.util.Collection;
import java.util.HashSet;
import javax.jdo.FetchPlan;
import org.apache.jdo.tck.JDO_Test;
import org.apache.jdo.tck.pc.mylib.PCPoint;
import org.apache.jdo.tck.pc.mylib.PCRect;
/**
* This class is an abstract superclass for the fetch plan tests. It contains methods useful for
* testing the behavior of the fetch plan.
*/
public class AbstractFetchPlanTest extends JDO_Test {
/*
* The <code>main</code> method is not defined in this abstract class.
*/
/** The persistent instances used in the test. */
protected PCPoint upperLeft;
protected PCPoint lowerRight;
protected PCRect pcrect;
/** The oids of the persistent instances used in the test. */
protected Object upperLeftoid;
protected Object lowerRightoid;
protected Object pcrectoid;
/** The String arrays used for setting fetch groups. */
protected final String[] defaultGroup = new String[] {"default"};
protected final String[] upperLeftGroup = new String[] {"default", "PCRect.upperLeft"};
protected final String[] lowerRightGroup = new String[] {"default", "PCRect.lowerRight"};
protected final String[] bothGroup =
new String[] {"default", "PCRect.upperLeft", "PCRect.lowerRight"};
/**
* @see org.apache.jdo.tck.JDO_Test#localSetUp()
*/
@Override
protected void localSetUp() {
addTearDownClass(PCRect.class);
addTearDownClass(PCPoint.class);
upperLeft = new PCPoint(0, 10);
lowerRight = new PCPoint(10, 0);
pcrect = new PCRect(upperLeft, lowerRight);
getPM().currentTransaction().begin();
pm.makePersistent(pcrect); // makes all three persistent
upperLeftoid = pm.getObjectId(upperLeft);
lowerRightoid = pm.getObjectId(lowerRight);
pcrectoid = pm.getObjectId(pcrect);
pm.currentTransaction().commit();
}
/** Set the default plus upper left field as the fetch group. */
protected void setDefaultGroup() {
FetchPlan fp = getPM().getFetchPlan();
fp.setGroups(defaultGroup);
}
/** Set the default plus upper left field as the fetch group. */
protected void setUpperLeftGroup() {
FetchPlan fp = getPM().getFetchPlan();
fp.setGroups(upperLeftGroup);
}
/** Set the default plus lower right field as the fetch group. */
protected void setLowerRightGroup() {
FetchPlan fp = getPM().getFetchPlan();
fp.setGroups(upperLeftGroup);
}
/** Set the default plus both fields as the fetch group. */
protected void setBothGroup() {
FetchPlan fp = getPM().getFetchPlan();
fp.setGroups(bothGroup);
}
/**
* @param location location
* @param pcrect PCREct instance
*/
protected void checkBothLoaded(String location, PCRect pcrect) {
checkUpperLeftLoaded(location, pcrect);
checkLowerRightLoaded(location, pcrect);
}
/**
* @param location location
* @param pcrect PCREct instance
*/
protected void checkUpperLeftLoaded(String location, PCRect pcrect) {
if (pcrect.upperLeft == null) {
appendMessage(
location
+ NL
+ "Upper Left was null."
+ NL
+ "The fetch plan includes PCRect.upperLeft and this field"
+ " should have been loaded.");
}
}
/**
* @param location location
* @param pcrect pc instance
*/
protected void checkLowerRightLoaded(String location, PCRect pcrect) {
if (pcrect.lowerRight == null) {
appendMessage(
location
+ NL
+ "Lower Right was null."
+ NL
+ "The fetch plan includes PCRect.lowerRight and this field"
+ " should have been loaded.");
}
}
/**
* @param location location
* @param fetchPlan fetch plan
* @param groups groups
*/
@SuppressWarnings("unchecked")
protected void checkGroups(String location, FetchPlan fetchPlan, String[] groups) {
Collection<String> expected = new HashSet<>();
Collection<String> actual = fetchPlan.getGroups();
for (String group : groups) {
expected.add(group);
}
if (!expected.equals(actual)) {
appendMessage(
location
+ NL
+ "Fetch groups differ."
+ NL
+ "expected: "
+ expected
+ NL
+ "actual: "
+ actual
+ NL);
}
}
}