blob: 43512f58843f6f4ba8c4736d727fcf2f9890846b [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2007 Boeing.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Boeing - initial API and implementation
*******************************************************************************/
package org.eclipse.osee.ats.test.util;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import junit.framework.TestCase;
import org.eclipse.osee.ats.AtsPlugin;
import org.eclipse.osee.ats.navigate.AtsNavigateViewItems;
import org.eclipse.osee.framework.logging.OseeLog;
import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
import org.eclipse.osee.framework.ui.skynet.widgets.xnavigate.XNavigateItem;
import org.eclipse.swt.widgets.TreeItem;
/**
* @author Donald G. Dunne
*/
public class NavigateTestUtil {
private static Map<String, List<XNavigateItem>> nameToNavItem;
public static String[] expectedErrorCols1 = {"ats.column.type", "ats.column.team", "ats.column.initWf"};
public static String[] expectedErrorCols2 =
{"ats.column.state", "ats.column.assignees", "ats.column.versionTarget", "ats.column.annualCostAvoidance",
"ats.column.remainingHours", "ats.column.statePercentComplete", "ats.column.stateTaskPercentComplete",
"ats.column.stateReviewPercentComplete", "ats.column.totalPercentComplete",
"ats.column.stateHoursSpent", "ats.column.stateTaskHoursSpent", "ats.column.stateReviewHoursSpent",
"ats.column.stateTotalHoursSpent", "ats.column.totalHoursSpent", "ats.column.implementer",
"ats.column.completedDate", "ats.column.cancelledDate", "ats.column.manDaysNeeded"};
public static XNavigateItem getAtsNavigateItem(String itemName) {
if (nameToNavItem == null) {
nameToNavItem = new HashMap<String, List<XNavigateItem>>(100);
// Setup hash if navigate items to names
for (XNavigateItem item : AtsNavigateViewItems.getInstance().getSearchNavigateItems())
NavigateTestUtil.createNameToNavItemMap(item, nameToNavItem);
}
if (nameToNavItem.get(itemName) == null) throw new IllegalStateException(
"No items of name \"" + itemName + "\" found");
if (nameToNavItem.get(itemName).size() > 1) throw new IllegalStateException(
"Multiple items of name \"" + itemName + "\" found; use getAtsNavigateItems");
return nameToNavItem.get(itemName).iterator().next();
}
public static List<XNavigateItem> getAtsNavigateItems(String itemName) {
if (nameToNavItem == null) {
nameToNavItem = new HashMap<String, List<XNavigateItem>>(100);
// Setup hash if navigate items to names
for (XNavigateItem item : AtsNavigateViewItems.getInstance().getSearchNavigateItems())
NavigateTestUtil.createNameToNavItemMap(item, nameToNavItem);
}
return nameToNavItem.get(itemName);
}
public static void testExpectedVersusActual(String name, Collection<? extends Artifact> arts, Class<?> clazz, int expectedNumOfType) {
int actualNumOfType = numOfType(arts, clazz);
String expectedStr =
"\"" + name + "\" Expected: " + expectedNumOfType + " Found: " + actualNumOfType + " Of Type: " + clazz;
compare(expectedNumOfType, actualNumOfType, expectedStr);
}
public static void testExpectedVersusActual(String testStr, int expected, int actual) {
String expectedStr = testStr + "Expected: " + expected + " Found: " + actual;
compare(expected, actual, expectedStr);
}
public static void testExpectedVersusActual(String testStr, boolean expectedCond, boolean actualCond) {
String expectedStr = testStr + "Expected: " + expectedCond + " Found: " + actualCond;
compare(expectedCond, actualCond, expectedStr);
}
public static void compare(int expectedNumOfType, int actualNumOfType, String expectedStr) {
if (expectedNumOfType != actualNumOfType)
OseeLog.log(AtsPlugin.class, Level.SEVERE, expectedStr, null);
else
OseeLog.log(AtsPlugin.class, Level.INFO, expectedStr);
TestCase.assertTrue(expectedStr, actualNumOfType == expectedNumOfType);
}
public static void compare(boolean expectedCond, boolean actualCond, String expectedStr) {
if (expectedCond != actualCond)
OseeLog.log(AtsPlugin.class, Level.SEVERE, expectedStr, null);
else
OseeLog.log(AtsPlugin.class, Level.INFO, expectedStr);
TestCase.assertTrue(expectedStr, expectedCond == actualCond);
}
public static int numOfType(Collection<? extends Artifact> arts, Class<?> clazz) {
int num = 0;
for (Artifact art : arts)
if (clazz.isAssignableFrom(art.getClass())) num++;
return num;
}
public static void createNameToNavItemMap(XNavigateItem item, Map<String, List<XNavigateItem>> nameToItemMap) {
List<XNavigateItem> items = new ArrayList<XNavigateItem>();
if (nameToItemMap.containsKey(item.getName())) {
items.addAll(nameToItemMap.get(item.getName()));
}
items.add(item);
nameToItemMap.put(item.getName(), items);
for (XNavigateItem child : item.getChildren()) {
createNameToNavItemMap(child, nameToItemMap);
}
}
public static void getAllArtifactChildren(TreeItem items[], Collection<Artifact> children) {
for (TreeItem item : items) {
if (item.getData() instanceof Artifact) {
//if (!children.contains(item.getData())) children.add((Artifact) item.getData());
children.add((Artifact) item.getData());
if (item.getExpanded()) getAllArtifactChildren(item.getItems(), children);
}
}
}
}