blob: ff2d668930cbdd7a1579b5d0b8d21b8735f25326 [file] [log] [blame]
//------------------------------------------------------------------------------
// Copyright (c) 2005, 2006 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 org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.epf.library.configuration.ConfigurationHelper;
import org.eclipse.epf.library.configuration.DefaultElementRealizer;
import org.eclipse.epf.library.tests.LibraryTestHelper;
import org.eclipse.epf.library.util.LibraryUtil;
import org.eclipse.epf.uma.ContentPackage;
import org.eclipse.epf.uma.MethodConfiguration;
import org.eclipse.epf.uma.MethodElement;
import org.eclipse.epf.uma.MethodPlugin;
import org.eclipse.epf.uma.Role;
import org.eclipse.epf.uma.Task;
import org.eclipse.epf.uma.UmaPackage;
/**
* Test case for 0..1 feature varaibility.
*
* @author Jinhua Xi
* @since 1.0
*/
public class Outgoing01FeatureTest extends VariablityBaseTestCase {
/**
* @param name
*/
public Outgoing01FeatureTest(String name) {
super(name);
}
public void test_task_performedBy() {
MethodPlugin plugin = LibraryTestHelper.createMethodPlugin("plugin 1");
ContentPackage pkg = LibraryTestHelper.createContentPackage(plugin, "p1");
Task t1 = LibraryTestHelper.createTask(pkg, "t1");
Role r1 = LibraryTestHelper.createRole(pkg, "r1");
t1.setPerformedBy(r1);
MethodConfiguration config = LibraryTestHelper.createConfiguration("config 1");
config.getMethodPluginSelection().add(plugin);
config.getMethodPackageSelection().add(pkg);
LibraryUtil.validateMethodConfiguration(config);
DefaultElementRealizer realizer = new DefaultElementRealizer(config);
EStructuralFeature feature = UmaPackage.eINSTANCE.getTask_PerformedBy();
MethodElement r = ConfigurationHelper.calc01FeatureValue(t1, feature, realizer);
assertEquals(r1, r);
}
public void test_task_performedBy_with_contributor() {
MethodPlugin plugin = LibraryTestHelper.createMethodPlugin("plugin 1");
ContentPackage pkg = LibraryTestHelper.createContentPackage(plugin, "p1");
Task t1 = LibraryTestHelper.createTask(pkg, "t1");
Role r1 = LibraryTestHelper.createRole(pkg, "r1");
Task t2 = LibraryTestHelper.createTask(pkg, "t2");
Role r2 = LibraryTestHelper.createRole(pkg, "r2");
t1.setPerformedBy(r1);
t2.setPerformedBy(r2);
// t2 contributes to t1, since t1 already has a to-one association,
// the one from the contributor is ignored
LibraryTestHelper.setContributes(t2, t1);
MethodConfiguration config = LibraryTestHelper.createConfiguration("config 1");
config.getMethodPluginSelection().add(plugin);
config.getMethodPackageSelection().add(pkg);
LibraryUtil.validateMethodConfiguration(config);
DefaultElementRealizer realizer = new DefaultElementRealizer(config);
EStructuralFeature feature = UmaPackage.eINSTANCE.getTask_PerformedBy();
MethodElement r = ConfigurationHelper.calc01FeatureValue(t1, feature, realizer);
assertEquals(r1, r);
}
public void test_task_performedBy_from_contributor() {
MethodPlugin plugin = LibraryTestHelper.createMethodPlugin("plugin 1");
ContentPackage pkg = LibraryTestHelper.createContentPackage(plugin, "p1");
Task t1 = LibraryTestHelper.createTask(pkg, "t1");
// Role r1 = LibraryTestHelper.createRole(pkg, "r1");
Task t2 = LibraryTestHelper.createTask(pkg, "t2");
Role r2 = LibraryTestHelper.createRole(pkg, "r2");
// don't set performer in t1, so it will get from the contributor
//t1.setPerformedBy(r1);
t2.setPerformedBy(r2);
// t2 contributes to t1, since t1 does not have a to-one association,
// the one from the contributor is used
LibraryTestHelper.setContributes(t2, t1);
MethodConfiguration config = LibraryTestHelper.createConfiguration("config 1");
config.getMethodPluginSelection().add(plugin);
config.getMethodPackageSelection().add(pkg);
LibraryUtil.validateMethodConfiguration(config);
DefaultElementRealizer realizer = new DefaultElementRealizer(config);
EStructuralFeature feature = UmaPackage.eINSTANCE.getTask_PerformedBy();
MethodElement r = ConfigurationHelper.calc01FeatureValue(t1, feature, realizer);
assertEquals(r2, r);
}
public void test_task_performedBy_with_contributors() {
MethodPlugin plugin = LibraryTestHelper.createMethodPlugin("plugin 1");
ContentPackage pkg = LibraryTestHelper.createContentPackage(plugin, "p1");
Task t1 = LibraryTestHelper.createTask(pkg, "t1");
// Role r1 = LibraryTestHelper.createRole(pkg, "r1");
Task t2 = LibraryTestHelper.createTask(pkg, "t2");
Role r2 = LibraryTestHelper.createRole(pkg, "r2");
Task t3 = LibraryTestHelper.createTask(pkg, "t3");
Role r3 = LibraryTestHelper.createRole(pkg, "r3");
// don't set performer in t1, so it will get from the contributor
t2.setPerformedBy(r2);
t3.setPerformedBy(r3);
// t2 and t3 both contribute to t1, even though t1 does not have a to-one association,
// the ones from the contributors are ignored since there are more than one
LibraryTestHelper.setContributes(t2, t1);
LibraryTestHelper.setContributes(t3, t1);
MethodConfiguration config = LibraryTestHelper.createConfiguration("config 1");
config.getMethodPluginSelection().add(plugin);
config.getMethodPackageSelection().add(pkg);
LibraryUtil.validateMethodConfiguration(config);
DefaultElementRealizer realizer = new DefaultElementRealizer(config);
EStructuralFeature feature = UmaPackage.eINSTANCE.getTask_PerformedBy();
MethodElement r = ConfigurationHelper.calc01FeatureValue(t1, feature, realizer);
assertEquals(null, r);
}
public void test_task_performedBy_with_replacer() {
MethodPlugin plugin = LibraryTestHelper.createMethodPlugin("plugin 1");
ContentPackage pkg = LibraryTestHelper.createContentPackage(plugin, "p1");
Task t1 = LibraryTestHelper.createTask(pkg, "t1");
Role r1 = LibraryTestHelper.createRole(pkg, "r1");
Task t2 = LibraryTestHelper.createTask(pkg, "t2");
Role r2 = LibraryTestHelper.createRole(pkg, "r2");
t1.setPerformedBy(r1);
t2.setPerformedBy(r2);
LibraryTestHelper.setReplaces(t2, t1);
MethodConfiguration config = LibraryTestHelper.createConfiguration("config 1");
config.getMethodPluginSelection().add(plugin);
config.getMethodPackageSelection().add(pkg);
LibraryUtil.validateMethodConfiguration(config);
DefaultElementRealizer realizer = new DefaultElementRealizer(config);
MethodElement t = ConfigurationHelper.getCalculatedElement(t1, realizer);
assertEquals(t2, t); // if this fail, the remaining code will not be executed
EStructuralFeature feature = UmaPackage.eINSTANCE.getTask_PerformedBy();
MethodElement r = ConfigurationHelper.calc01FeatureValue(t, feature, realizer);
assertEquals(r2, r);
}
public void test_task_performedBy_with_replacer_no_performer() {
MethodPlugin plugin = LibraryTestHelper.createMethodPlugin("plugin 1");
ContentPackage pkg = LibraryTestHelper.createContentPackage(plugin, "p1");
Task t1 = LibraryTestHelper.createTask(pkg, "t1");
Role r1 = LibraryTestHelper.createRole(pkg, "r1");
Task t2 = LibraryTestHelper.createTask(pkg, "t2");
Role r2 = LibraryTestHelper.createRole(pkg, "r2");
t1.setPerformedBy(r1);
// t2 has no primary performer
// t2.setPerformedBy(r2);
LibraryTestHelper.setReplaces(t2, t1);
MethodConfiguration config = LibraryTestHelper.createConfiguration("config 1");
config.getMethodPluginSelection().add(plugin);
config.getMethodPackageSelection().add(pkg);
LibraryUtil.validateMethodConfiguration(config);
DefaultElementRealizer realizer = new DefaultElementRealizer(config);
MethodElement t = ConfigurationHelper.getCalculatedElement(t1, realizer);
assertEquals(t2, t); // if this fail, the remaining code will not be executed
EStructuralFeature feature = UmaPackage.eINSTANCE.getTask_PerformedBy();
MethodElement r = ConfigurationHelper.calc01FeatureValue(t, feature, realizer);
assertEquals(null, r);
}
public void test_task_performedBy_with_replacers() {
MethodPlugin plugin = LibraryTestHelper.createMethodPlugin("plugin 1");
ContentPackage pkg = LibraryTestHelper.createContentPackage(plugin, "p1");
Task t1 = LibraryTestHelper.createTask(pkg, "t1");
Role r1 = LibraryTestHelper.createRole(pkg, "r1");
Task t2 = LibraryTestHelper.createTask(pkg, "t2");
Role r2 = LibraryTestHelper.createRole(pkg, "r2");
Task t3 = LibraryTestHelper.createTask(pkg, "t3");
Role r3 = LibraryTestHelper.createRole(pkg, "r3");
t1.setPerformedBy(r1);
t2.setPerformedBy(r2);
t3.setPerformedBy(r3);
LibraryTestHelper.setReplaces(t2, t1);
LibraryTestHelper.setReplaces(t3, t1);
MethodConfiguration config = LibraryTestHelper.createConfiguration("config 1");
config.getMethodPluginSelection().add(plugin);
config.getMethodPackageSelection().add(pkg);
LibraryUtil.validateMethodConfiguration(config);
DefaultElementRealizer realizer = new DefaultElementRealizer(config);
// if more than one replacer, all replacers are ignored
MethodElement t = ConfigurationHelper.getCalculatedElement(t1, realizer);
assertEquals(t1, t);
EStructuralFeature feature = UmaPackage.eINSTANCE.getTask_PerformedBy();
MethodElement r = ConfigurationHelper.calc01FeatureValue(t, feature, realizer);
assertEquals(r1, r);
}
public void test_task_performedBy_with_extenders() {
MethodPlugin plugin = LibraryTestHelper.createMethodPlugin("plugin 1");
ContentPackage pkg = LibraryTestHelper.createContentPackage(plugin, "p1");
Task t1 = LibraryTestHelper.createTask(pkg, "t1");
Role r1 = LibraryTestHelper.createRole(pkg, "r1");
Task t2 = LibraryTestHelper.createTask(pkg, "t2");
Role r2 = LibraryTestHelper.createRole(pkg, "r2");
// Task t3 = LibraryTestHelper.createTask(pkg, "t3");
// Role r3 = LibraryTestHelper.createRole(pkg, "r3");
LibraryTestHelper.setExtends(t2, t1);
MethodConfiguration config = LibraryTestHelper.createConfiguration("config 1");
config.getMethodPluginSelection().add(plugin);
config.getMethodPackageSelection().add(pkg);
LibraryUtil.validateMethodConfiguration(config);
DefaultElementRealizer realizer = new DefaultElementRealizer(config);
EStructuralFeature feature = UmaPackage.eINSTANCE.getTask_PerformedBy();
MethodElement r;
// case 1:
t1.setPerformedBy(null);
t2.setPerformedBy(r2);
r = ConfigurationHelper.calc01FeatureValue(t1, feature, realizer);
assertEquals(null, r);
r = ConfigurationHelper.calc01FeatureValue(t2, feature, realizer);
assertEquals(r2, r);
// case 2:
t1.setPerformedBy(r1);
t2.setPerformedBy(r2);
r = ConfigurationHelper.calc01FeatureValue(t1, feature, realizer);
assertEquals(r1, r);
r = ConfigurationHelper.calc01FeatureValue(t2, feature, realizer);
assertEquals(r2, r);
// case 3:
t1.setPerformedBy(r1);
t2.setPerformedBy(null);
r = ConfigurationHelper.calc01FeatureValue(t1, feature, realizer);
assertEquals(r1, r);
r = ConfigurationHelper.calc01FeatureValue(t2, feature, realizer);
assertEquals(r1, r);
}
}