blob: b512861040f903be99dfa4121eff47a066d404ec [file] [log] [blame]
//------------------------------------------------------------------------------
// Copyright (c) 2005, 2008 IBM Corporation and others.
// 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:
// IBM Corporation - initial implementation
//------------------------------------------------------------------------------
package org.eclipse.epf.library.tests.variability;
import java.util.List;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.epf.library.configuration.ConfigurationHelper;
import org.eclipse.epf.library.configuration.DefaultElementRealizer;
import org.eclipse.epf.library.configuration.ElementRealizer;
import org.eclipse.epf.library.tests.LibraryTestHelper;
import org.eclipse.epf.library.util.LibraryUtil;
import org.eclipse.epf.uma.Artifact;
import org.eclipse.epf.uma.ContentPackage;
import org.eclipse.epf.uma.MethodConfiguration;
import org.eclipse.epf.uma.MethodPlugin;
import org.eclipse.epf.uma.Role;
import org.eclipse.epf.uma.Task;
import org.eclipse.epf.uma.UmaPackage;
import org.eclipse.epf.uma.ecore.util.OppositeFeature;
import org.eclipse.epf.uma.util.AssociationHelper;
/**
* Test case for fulfillment realization
*
* @author Weiping Lu
* @since 1.5
*/
public class FulfillmentTest extends VariablityBaseTestCase {
/**
* @param name
*/
public FulfillmentTest(String name) {
super(name);
}
public void test01() {
MethodPlugin plugin = LibraryTestHelper.createMethodPlugin("plugin 1");
ContentPackage pkg = LibraryTestHelper.createContentPackage(plugin, "p1");
Role r1 = LibraryTestHelper.createRole(pkg, "r1");
Role r2 = LibraryTestHelper.createRole(pkg, "r2");
Task t1 = LibraryTestHelper.createTask(pkg, "t1");
Task t2 = LibraryTestHelper.createTask(pkg, "t2");
Artifact slot1 = LibraryTestHelper.createArtifact(pkg, "slot1");
Artifact slot2 = LibraryTestHelper.createArtifact(pkg, "slot2");
slot1.setIsAbstract(true);
slot2.setIsAbstract(true);
slot1.setPresentationName("b_slot");
slot2.setPresentationName("a_slot");
Artifact a1 = LibraryTestHelper.createArtifact(pkg, "a1");
a1.getFulfills().add(slot1);
a1.getFulfills().add(slot2);
Artifact a2 = LibraryTestHelper.createArtifact(pkg, "a2");
a2.getFulfills().add(slot1);
a2.getFulfills().add(slot2);
a1.setPresentationName("b_a1");
a2.setPresentationName("a_a2");
MethodConfiguration config = LibraryTestHelper.createConfiguration("config");
config.getMethodPluginSelection().add(plugin);
config.getMethodPackageSelection().add(pkg);
LibraryUtil.validateMethodConfiguration(config);
ElementRealizer realizer = DefaultElementRealizer.newElementRealizer(config);
EStructuralFeature feature;
OppositeFeature ofeature;
List items;
r1.getResponsibleFor().add(slot1);
r2.getResponsibleFor().add(slot2);
t1.getPerformedBy().add(r1);
t2.getPerformedBy().add(r2);
ofeature = AssociationHelper.WorkProduct_ResponsibleRoles;
items = ConfigurationHelper.calc0nFeatureValue(a1, ofeature, realizer);
assertEquals(2, items.size());
items = ConfigurationHelper.calcFulfillableElement_Fulfills(a1, config);
assertEquals(slot2, items.get(0));
assertEquals(slot1, items.get(1));
ofeature = AssociationHelper.FulFills_FullFillableElements;
items = ConfigurationHelper.calcFulfills_FulfillableElement(slot1, config);
assertEquals(2, items.size());
assertEquals(a2, items.get(0));
assertEquals(a1, items.get(1));
}
}