Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorvlorenzo2012-06-21 11:16:10 +0000
committervlorenzo2012-06-21 11:16:10 +0000
commita3d2bcac0932aef7a4365b62f1de6f72902f4738 (patch)
tree7c88ad0b64279d64e7595a32ef4fe381b80f8b82 /tests/junit/extraplugins
parent82c0bc88a6fb1d758e9185dff866af4da3fcf786 (diff)
downloadorg.eclipse.papyrus-a3d2bcac0932aef7a4365b62f1de6f72902f4738.tar.gz
org.eclipse.papyrus-a3d2bcac0932aef7a4365b62f1de6f72902f4738.tar.xz
org.eclipse.papyrus-a3d2bcac0932aef7a4365b62f1de6f72902f4738.zip
330183: [Usability] Papyrus shall enable comparing/merging models.
https://bugs.eclipse.org/bugs/show_bug.cgi?id=330183 A save of my developement
Diffstat (limited to 'tests/junit/extraplugins')
-rw-r--r--tests/junit/extraplugins/uml/compare/org.eclipse.papyrus.uml.compare.merger.tests/src/org/eclipse/papyrus/uml/compare/merger/tests/AbstractCompareTest.java226
-rw-r--r--tests/junit/extraplugins/uml/compare/org.eclipse.papyrus.uml.compare.merger.tests/src/org/eclipse/papyrus/uml/compare/merger/tests/AllTests.java11
-rw-r--r--tests/junit/extraplugins/uml/compare/org.eclipse.papyrus.uml.compare.merger.tests/src/org/eclipse/papyrus/uml/compare/merger/tests/TestMergerUtils.java40
-rw-r--r--tests/junit/extraplugins/uml/compare/org.eclipse.papyrus.uml.compare.merger.tests/src/org/eclipse/papyrus/uml/compare/merger/tests/nested/AbstractNestedCompareTest.java112
-rw-r--r--tests/junit/extraplugins/uml/compare/org.eclipse.papyrus.uml.compare.merger.tests/src/org/eclipse/papyrus/uml/compare/merger/tests/nested/NestedModelElementChangeRightTargetTest_1_LeftToRight.java109
-rw-r--r--tests/junit/extraplugins/uml/compare/org.eclipse.papyrus.uml.compare.merger.tests/src/org/eclipse/papyrus/uml/compare/merger/tests/nested/NestedModelElementChangeRightTargetTest_1_RightToLeft.java117
-rw-r--r--tests/junit/extraplugins/uml/compare/org.eclipse.papyrus.uml.compare.merger.tests/src/org/eclipse/papyrus/uml/compare/merger/tests/nested/NestedUpdateAttributeTest_1_LeftToRight.java104
-rw-r--r--tests/junit/extraplugins/uml/compare/org.eclipse.papyrus.uml.compare.merger.tests/src/org/eclipse/papyrus/uml/compare/merger/tests/nested/NestedUpdateAttributeTest_1_RightToLeft.java104
-rw-r--r--tests/junit/extraplugins/uml/compare/org.eclipse.papyrus.uml.compare.merger.tests/src/org/eclipse/papyrus/uml/compare/merger/tests/standalone/AbstractStandaloneCompareTest.java6
9 files changed, 827 insertions, 2 deletions
diff --git a/tests/junit/extraplugins/uml/compare/org.eclipse.papyrus.uml.compare.merger.tests/src/org/eclipse/papyrus/uml/compare/merger/tests/AbstractCompareTest.java b/tests/junit/extraplugins/uml/compare/org.eclipse.papyrus.uml.compare.merger.tests/src/org/eclipse/papyrus/uml/compare/merger/tests/AbstractCompareTest.java
new file mode 100644
index 00000000000..e14862e5ef8
--- /dev/null
+++ b/tests/junit/extraplugins/uml/compare/org.eclipse.papyrus.uml.compare.merger.tests/src/org/eclipse/papyrus/uml/compare/merger/tests/AbstractCompareTest.java
@@ -0,0 +1,226 @@
+package org.eclipse.papyrus.uml.compare.merger.tests;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.compare.diff.metamodel.DiffElement;
+import org.eclipse.emf.compare.diff.metamodel.DiffGroup;
+import org.eclipse.emf.compare.diff.metamodel.DiffModel;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.emf.transaction.util.TransactionUtil;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.papyrus.junit.utils.GenericUtils;
+import org.eclipse.papyrus.uml.compare.merge.services.TransactionalMergeService;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.Package;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Test;
+
+
+public abstract class AbstractCompareTest {
+
+ protected static IProject project;
+
+ protected static TransactionalEditingDomain domain;
+
+ protected static ResourceSet set;
+
+ /** indicates the direction of the merge */
+ protected static boolean leftToRight;
+
+ // protected static List<DiffElement> initialDifferences;
+ /** the left element used for the comparison */
+ protected static Element leftElement;
+
+ /** the rigth element used for the comparison */
+ protected static Element rightElement;
+
+ /** This field is used to store the initial Differences before to do the merge */
+ private static List<DiffElement> initialDifferences;
+
+
+ /**
+ * This test tests the contents of the differences found.
+ *
+ */
+ @Test
+ public void testDifferences() throws InterruptedException {
+ final DiffModel diff = getDiffModel(leftElement, leftElement);
+ // Merges all differences from model1 to model2
+ List<DiffElement> differences = new ArrayList<DiffElement>(diff.getOwnedElements());
+ initialDifferences = diff.getOwnedElements();
+ Assert.assertTrue("I don't found only 1 difference,differences.", differences.size() == 1);
+ DiffElement current = differences.get(0);
+ Assert.assertTrue("The first DiffElement is not a DiffGroupElement", current instanceof DiffGroup);
+
+ differences = current.getSubDiffElements();
+ while(differences.size() == 1 && differences.get(0) instanceof DiffGroup) {
+ differences = differences.get(0).getSubDiffElements();
+ }
+
+ testLastDiffElements(differences);
+ }
+
+ protected abstract DiffModel getDiffModel(final EObject leftElement, final EObject rightElement) throws InterruptedException;
+
+ /**
+ * This method allows to test the last DiffElement of the DiffModel
+ * The implementation is different for each case
+ *
+ * @param diffElement
+ *
+ *
+ */
+ public abstract void testLastDiffElements(final List<DiffElement> diffElement);
+
+ @Test
+ protected void mergeTestAllExecutability() throws InterruptedException {
+ final DiffModel diff = getDiffModel(leftElement, rightElement);
+ // Merges all differences from model1 to model2
+ final List<DiffElement> differences = new ArrayList<DiffElement>(diff.getOwnedElements());
+ for(final DiffElement current : differences) {
+ Command cmd = TransactionalMergeService.getMergeCommand(domain, current, leftToRight);
+ Assert.assertNotNull(NLS.bind("I can't find the merge command for {0}", current), cmd);
+ Assert.assertTrue(NLS.bind("The builded command to merge {0} is not executable", current), cmd.canExecute());
+ }
+ }
+
+
+ @Test
+ public void testCommandExecution() throws InterruptedException, IOException {
+ final DiffModel diff = getDiffModel(leftElement, rightElement);
+ // Merges all differences from model1 to model2
+ final List<DiffElement> differences = new ArrayList<DiffElement>(diff.getOwnedElements());
+ Assert.assertTrue("We should find only one DiffElement", differences.size() == 1);
+ DiffElement diffElement = differences.get(0);
+ Command cmd = TransactionalMergeService.getMergeCommand(domain, diffElement, leftToRight);
+
+ Assert.assertTrue(NLS.bind("The builded command to merge {0} is not executable", cmd), cmd.canExecute());
+ //we execute the command and hope that all it is OK
+ domain.getCommandStack().execute(cmd);
+ }
+
+ @Test
+ public void testModificationOnDiFile() {
+ Assert.fail("Test not implemented");
+ }
+
+ @Test
+ public void testModificationOnNotationFile() {
+ Assert.fail("Test not implemented");
+ }
+
+ @Test
+ public void testModificationOnUMLFile() {
+ Assert.fail("Test not implemented");
+ }
+
+ @Test
+ public void saveTest() throws IOException {
+ //we save the result
+ for(Resource current : set.getResources()) {
+ if(isAResourceOFTheTestProject(current)) {//emf compare seems do copy... so, i store only my files!
+ current.save(Collections.EMPTY_MAP);
+ Assert.assertTrue(NLS.bind("The resource {0} has not been correctly saved!", current), !current.isModified());
+ }
+ }
+ }
+
+ @Test
+ public void testResult() throws InterruptedException {
+ //we compare the left and the right UML Model, they should be equals
+ final DiffModel diff = getDiffModel(leftElement, rightElement);
+ final List<DiffElement> differences = new ArrayList<DiffElement>(diff.getOwnedElements());
+
+ Assert.assertTrue("After merging all differences, we still found differences between the models...", differences.size() == 1);
+
+ DiffElement diffElement = differences.get(0);
+ Assert.assertTrue(diffElement instanceof DiffGroup);
+ DiffGroup group = (DiffGroup)diffElement;
+
+ //the best way to be sure that there is no differences between the elements is the label... :-(
+ AdapterFactoryLabelProvider provider = new AdapterFactoryLabelProvider(org.eclipse.emf.compare.util.AdapterUtils.getAdapterFactory());
+ String label = provider.getText(group);
+ Assert.assertTrue(NLS.bind("The message for 0 differences has changed (or there is a bug : the message {0}", label), label.equals("0 change(s) in model"));
+
+ }
+
+ @Test
+ public void testXMIID() {
+ Assert.fail();
+ }
+
+ @Test
+ public void testUndo() throws IOException, InterruptedException {
+ domain.getCommandStack().undo();
+ for(Resource current : set.getResources()) {
+ current.save(Collections.EMPTY_MAP);
+ Assert.assertTrue(NLS.bind("The resource {0} has not been correctly saved!", current), !current.isModified());
+ }
+ final DiffModel diff = getDiffModel(leftElement, rightElement);
+ // Merges all differences from model1 to model2
+ final List<DiffElement> differences = new ArrayList<DiffElement>(diff.getOwnedElements());
+ TestMergerUtils.compareDiffList(initialDifferences, differences);
+ }
+
+ @Test
+ public void testRedo() throws IOException, InterruptedException {
+ domain.getCommandStack().redo();
+ for(Resource current : set.getResources()) {
+ current.save(Collections.EMPTY_MAP);
+ Assert.assertTrue(NLS.bind("The resource {0} has not been correctly saved!", current), !current.isModified());
+ }
+ testResult();
+ }
+
+ @AfterClass
+ public static final void closeAll() {
+ //useful ?
+ final List<Resource> resources = new ArrayList<Resource>(set.getResources());
+ for(Resource current : resources) {
+ current.setTrackingModification(false);
+ set.getResources().remove(current);
+ TransactionUtil.disconnectFromEditingDomain(current);
+ current.unload();
+ }
+ resources.clear();
+ //we close all the editors
+ GenericUtils.closeAllEditors();
+ }
+
+ /**
+ * EMF Compare add resources to the resourceSet... So we use this function to find our Resource!
+ *
+ * @param resource
+ * @return
+ */
+ protected boolean isAResourceOFTheTestProject(final Resource resource) {
+ return resource.getURI().path().startsWith("/" + project.getName() + "/");
+ }
+
+ /**
+ * EMF Compare add resources to the resourceSet... So we use this function to find our Resource!
+ *
+ * @return
+ * the list of the resource to save
+ */
+ protected List<Resource> getResourceOfTheProject(){
+ List<Resource> resources = new ArrayList<Resource>();
+ for(Resource current : set.getResources()){
+ if(isAResourceOFTheTestProject(current)){
+ resources.add(current);
+ }
+ }
+ return resources;
+ }
+}
diff --git a/tests/junit/extraplugins/uml/compare/org.eclipse.papyrus.uml.compare.merger.tests/src/org/eclipse/papyrus/uml/compare/merger/tests/AllTests.java b/tests/junit/extraplugins/uml/compare/org.eclipse.papyrus.uml.compare.merger.tests/src/org/eclipse/papyrus/uml/compare/merger/tests/AllTests.java
index 1bad7d41164..eb22c4696a4 100644
--- a/tests/junit/extraplugins/uml/compare/org.eclipse.papyrus.uml.compare.merger.tests/src/org/eclipse/papyrus/uml/compare/merger/tests/AllTests.java
+++ b/tests/junit/extraplugins/uml/compare/org.eclipse.papyrus.uml.compare.merger.tests/src/org/eclipse/papyrus/uml/compare/merger/tests/AllTests.java
@@ -13,6 +13,10 @@
*****************************************************************************/
package org.eclipse.papyrus.uml.compare.merger.tests;
+import org.eclipse.papyrus.uml.compare.merger.tests.nested.NestedModelElementChangeRightTargetTest_1_LeftToRight;
+import org.eclipse.papyrus.uml.compare.merger.tests.nested.NestedUpdateAttributeTest_1_LeftToRight;
+import org.eclipse.papyrus.uml.compare.merger.tests.nested.NestedModelElementChangeRightTargetTest_1_RightToLeft;
+import org.eclipse.papyrus.uml.compare.merger.tests.nested.NestedUpdateAttributeTest_1_RightToLeft;
import org.eclipse.papyrus.uml.compare.merger.tests.standalone.AttributeChangeLeftTargetTest_1_LeftToRight;
import org.eclipse.papyrus.uml.compare.merger.tests.standalone.AttributeChangeLeftTargetTest_1_RightToLeft;
import org.eclipse.papyrus.uml.compare.merger.tests.standalone.AttributeChangeRightTargetTest_1_LeftToRight;
@@ -43,6 +47,13 @@ import org.junit.runners.Suite.SuiteClasses;
@RunWith(Suite.class)
@SuiteClasses({
+
+ NestedModelElementChangeRightTargetTest_1_LeftToRight.class,
+ NestedModelElementChangeRightTargetTest_1_RightToLeft.class,
+
+ NestedUpdateAttributeTest_1_LeftToRight.class,
+ NestedUpdateAttributeTest_1_RightToLeft.class,
+
AttributeChangeLeftTargetTest_1_LeftToRight.class,
AttributeChangeLeftTargetTest_1_RightToLeft.class,
diff --git a/tests/junit/extraplugins/uml/compare/org.eclipse.papyrus.uml.compare.merger.tests/src/org/eclipse/papyrus/uml/compare/merger/tests/TestMergerUtils.java b/tests/junit/extraplugins/uml/compare/org.eclipse.papyrus.uml.compare.merger.tests/src/org/eclipse/papyrus/uml/compare/merger/tests/TestMergerUtils.java
new file mode 100644
index 00000000000..8759c3085bd
--- /dev/null
+++ b/tests/junit/extraplugins/uml/compare/org.eclipse.papyrus.uml.compare.merger.tests/src/org/eclipse/papyrus/uml/compare/merger/tests/TestMergerUtils.java
@@ -0,0 +1,40 @@
+package org.eclipse.papyrus.uml.compare.merger.tests;
+
+import java.util.List;
+
+import org.eclipse.emf.compare.diff.metamodel.DiffElement;
+import org.eclipse.emf.compare.diff.metamodel.DiffGroup;
+import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
+import org.junit.Assert;
+
+
+public class TestMergerUtils {
+
+
+ private TestMergerUtils() {
+ //to prevent instanciation
+ }
+
+ public static final void compareDiffList(final List<DiffElement> diff1, final List<DiffElement> diff2) {
+ Assert.assertEquals("The compared lists don't have the same size.", diff1.size(), diff2.size());
+ AdapterFactoryLabelProvider provider = new AdapterFactoryLabelProvider(org.eclipse.emf.compare.util.AdapterUtils.getAdapterFactory());
+ int size = diff1.size();
+ for(int i = 0; i < size; i++) {
+ DiffElement element1 = diff1.get(i);
+ DiffElement element2 = diff2.get(i);
+ //we verify that we get the same label for the 2 elements
+ Assert.assertTrue(provider.getText(element1).equals(provider.getText(element2)));
+ //we verify that the 2 elements are instance of the same class
+ Assert.assertTrue("I'm comparing 2 elements which are not instance of the same class", element1.getClass() == element2.getClass());
+
+ if(element1 instanceof DiffGroup) {
+ DiffGroup grp1 = (DiffGroup)element1;
+ DiffGroup grp2 = (DiffGroup)element2;
+ compareDiffList(grp1.getSubDiffElements(), grp2.getSubDiffElements());
+ compareDiffList(grp1.getRequires(), grp2.getRequires());
+ // compareList(grp1.getRequiredBy(), grp2.getRequiredBy());
+ }
+ }
+ }
+
+}
diff --git a/tests/junit/extraplugins/uml/compare/org.eclipse.papyrus.uml.compare.merger.tests/src/org/eclipse/papyrus/uml/compare/merger/tests/nested/AbstractNestedCompareTest.java b/tests/junit/extraplugins/uml/compare/org.eclipse.papyrus.uml.compare.merger.tests/src/org/eclipse/papyrus/uml/compare/merger/tests/nested/AbstractNestedCompareTest.java
new file mode 100644
index 00000000000..5ecff82b551
--- /dev/null
+++ b/tests/junit/extraplugins/uml/compare/org.eclipse.papyrus.uml.compare.merger.tests/src/org/eclipse/papyrus/uml/compare/merger/tests/nested/AbstractNestedCompareTest.java
@@ -0,0 +1,112 @@
+package org.eclipse.papyrus.uml.compare.merger.tests.nested;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.emf.compare.diff.metamodel.DiffModel;
+import org.eclipse.emf.compare.match.metamodel.MatchModel;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.papyrus.infra.core.resource.TransactionalEditingDomainManager;
+import org.eclipse.papyrus.infra.emf.compare.common.utils.services.PapyrusFileLoader;
+import org.eclipse.papyrus.junit.utils.GenericUtils;
+import org.eclipse.papyrus.junit.utils.PapyrusProjectUtils;
+import org.eclipse.papyrus.junit.utils.ProjectUtils;
+import org.eclipse.papyrus.uml.compare.merge.nested.utils.NestedMatchService;
+import org.eclipse.papyrus.uml.compare.merge.nested.utils.NestedMergeUtils;
+import org.eclipse.papyrus.uml.compare.merge.nested.utils.UMLDiffService;
+import org.eclipse.papyrus.uml.compare.merger.tests.AbstractCompareTest;
+import org.eclipse.papyrus.uml.compare.merger.tests.Activator;
+import org.eclipse.uml2.uml.Model;
+import org.eclipse.uml2.uml.Package;
+import org.junit.Assert;
+import org.junit.Test;
+
+;
+
+/**
+ *
+ * This abstract provides methods to compare 2 Papyrus uml files named "left.uml" and "right.uml"
+ *
+ */
+public abstract class AbstractNestedCompareTest extends AbstractCompareTest {
+
+
+ /** the root of the model used for the test */
+ protected static Package root;
+
+ private static final String FOLDER_PATH = "/resources/nested/";
+
+ /** the name of the model used to do the test */
+ private static final String MODEL = "model";
+
+
+ public static final void init(final String modelPath, boolean leftToRight) throws CoreException, IOException {
+ GenericUtils.closeIntroPart();
+ GenericUtils.cleanWorkspace();
+ project = ProjectUtils.createProject("MyProject"); //$NON-NLS-1$
+ PapyrusProjectUtils.copyPapyrusModel(project, Activator.getDefault().getBundle(), FOLDER_PATH + modelPath, MODEL);
+ final List<IFile> comparedFiles = new ArrayList<IFile>();
+
+ comparedFiles.add(project.getFile(MODEL + "." + "uml"));
+ set = new ResourceSetImpl();
+ domain = TransactionalEditingDomainManager.createDefaultTransactionalEditingDomain(set);
+ EObject[] roots = PapyrusFileLoader.loadPapyrusFiles(set, comparedFiles);
+ root = (Model)roots[0];
+ AbstractNestedCompareTest.leftToRight = leftToRight;
+ }
+
+ /**
+ *
+ * @param leftRoot
+ * @param rightRoot
+ * @return
+ * The diffModel for these parameters
+ * @throws InterruptedException
+ */
+ protected DiffModel getDiffModel(EObject leftRoot, EObject rightRoot) throws InterruptedException {
+ Map<String, Object> options = NestedMergeUtils.getMergeOptions(null, leftElement, rightElement);;
+ // Matching model elements
+ final MatchModel match = NestedMatchService.doContentMatch(leftElement, rightElement, options);
+ // Computing differences
+ final DiffModel diff = UMLDiffService.doDiff(match, false);
+ return diff;
+ }
+
+
+ @Test
+ public void testModificationOnDiFile() {
+ for(Resource current : set.getResources()) {
+ if(current.getURI().fileExtension().equals("di") && isAResourceOFTheTestProject(current)) {
+ Assert.assertFalse("I found modification on the di file", current.isModified());
+ }
+ }
+ }
+
+ @Override
+ @Test
+ public void testModificationOnNotationFile() {
+ for(Resource current : set.getResources()) {
+ if(current.getURI().fileExtension().equals("notation") && isAResourceOFTheTestProject(current)) {
+ Assert.assertFalse("I found modification on the notation file", current.isModified());
+ }
+ }
+ }
+
+ @Override
+ @Test
+ public void testModificationOnUMLFile() {
+ for(Resource current : set.getResources()) {
+ if(current.getURI().fileExtension().equals("uml") && isAResourceOFTheTestProject(current)) {
+ Assert.assertTrue("I didn't found modification on the uml file", current.isModified());
+ }
+ }
+ }
+
+
+}
diff --git a/tests/junit/extraplugins/uml/compare/org.eclipse.papyrus.uml.compare.merger.tests/src/org/eclipse/papyrus/uml/compare/merger/tests/nested/NestedModelElementChangeRightTargetTest_1_LeftToRight.java b/tests/junit/extraplugins/uml/compare/org.eclipse.papyrus.uml.compare.merger.tests/src/org/eclipse/papyrus/uml/compare/merger/tests/nested/NestedModelElementChangeRightTargetTest_1_LeftToRight.java
new file mode 100644
index 00000000000..aec89de9050
--- /dev/null
+++ b/tests/junit/extraplugins/uml/compare/org.eclipse.papyrus.uml.compare.merger.tests/src/org/eclipse/papyrus/uml/compare/merger/tests/nested/NestedModelElementChangeRightTargetTest_1_LeftToRight.java
@@ -0,0 +1,109 @@
+package org.eclipse.papyrus.uml.compare.merger.tests.nested;
+
+import java.io.IOException;
+import java.util.List;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.emf.compare.diff.metamodel.DiffElement;
+import org.eclipse.emf.compare.diff.metamodel.ModelElementChangeRightTarget;
+import org.eclipse.emf.compare.diff.metamodel.UpdateAttribute;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.papyrus.infra.emf.utils.EMFHelper;
+import org.eclipse.papyrus.uml.compare.merge.nested.utils.NestedMergeUtils;
+import org.eclipse.papyrus.uml.compare.merger.tests.AbstractCompareTest;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.Property;
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+
+public class NestedModelElementChangeRightTargetTest_1_LeftToRight extends AbstractNestedCompareTest {
+
+ private static final String MODEL_PATH = "modelElementChangeRightTarget_1/";
+
+ @BeforeClass
+ public static void init() throws CoreException, IOException {
+ AbstractNestedCompareTest.init(MODEL_PATH, true);
+ AbstractCompareTest.leftElement = (Class)AbstractNestedCompareTest.root.getOwnedMember("Class1");
+ AbstractCompareTest.rightElement = (Class)((Package)root.getPackagedElement("Package1")).getOwnedMember("Class1");
+ System.out.println(NLS.bind("Je possède {0} resources", set.getResources().size()));
+ }
+
+ @Test
+ public void testDifferences() throws InterruptedException {
+ super.testDifferences();
+ }
+
+ public void testLastDiffElements(List<DiffElement> diffElements) {
+ Assert.assertTrue(NLS.bind("The number of DiffElement is not correct : we would like {0} DiffElement, and we found {1}", new Object[]{ 1, diffElements.size() }), diffElements.size() == 1);
+ final DiffElement diffElement = diffElements.get(0);
+ Assert.assertTrue(NLS.bind("The last DiffElement is not a {0}", ModelElementChangeRightTarget.class), diffElement instanceof ModelElementChangeRightTarget);
+ }
+
+ @Test
+ public void mergeTestAllExecutability() throws InterruptedException {
+ super.mergeTestAllExecutability();
+ }
+
+ @Override
+ @Test
+ public void testCommandExecution() throws InterruptedException, IOException {
+ super.testCommandExecution();
+ }
+
+
+ @Override
+ @Test
+ public void testModificationOnDiFile() {
+ super.testModificationOnDiFile();
+ }
+
+ @Override
+ @Test
+ public void testModificationOnNotationFile() {
+ super.testModificationOnNotationFile();
+ }
+
+ @Override
+ @Test
+ public void testModificationOnUMLFile() {
+ super.testModificationOnUMLFile();
+ }
+
+
+ @Override
+ @Test
+ public void saveTest() throws IOException {
+ super.saveTest();
+ }
+
+ @Override
+ @Test
+ public void testResult() throws InterruptedException {
+// Property rightAttribute = ((Class)AbstractCompareTest.rightElement).getAttribute("property1", null);
+// Assert.assertNull("The right element has not been deleted by the merge action",rightAttribute);
+ super.testResult();
+ }
+
+ @Override
+ @Test
+ public void testXMIID() {
+ //nothing to do
+ }
+
+ @Override
+ @Test
+ public void testUndo() throws IOException, InterruptedException {
+ super.testUndo();
+ }
+
+ @Override
+ @Test
+ public void testRedo() throws IOException, InterruptedException {
+ super.testRedo();
+ }
+
+}
diff --git a/tests/junit/extraplugins/uml/compare/org.eclipse.papyrus.uml.compare.merger.tests/src/org/eclipse/papyrus/uml/compare/merger/tests/nested/NestedModelElementChangeRightTargetTest_1_RightToLeft.java b/tests/junit/extraplugins/uml/compare/org.eclipse.papyrus.uml.compare.merger.tests/src/org/eclipse/papyrus/uml/compare/merger/tests/nested/NestedModelElementChangeRightTargetTest_1_RightToLeft.java
new file mode 100644
index 00000000000..129763df37b
--- /dev/null
+++ b/tests/junit/extraplugins/uml/compare/org.eclipse.papyrus.uml.compare.merger.tests/src/org/eclipse/papyrus/uml/compare/merger/tests/nested/NestedModelElementChangeRightTargetTest_1_RightToLeft.java
@@ -0,0 +1,117 @@
+package org.eclipse.papyrus.uml.compare.merger.tests.nested;
+
+import java.io.IOException;
+import java.util.List;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.emf.compare.diff.metamodel.DiffElement;
+import org.eclipse.emf.compare.diff.metamodel.ModelElementChangeRightTarget;
+import org.eclipse.emf.compare.diff.metamodel.UpdateAttribute;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.papyrus.infra.emf.utils.EMFHelper;
+import org.eclipse.papyrus.uml.compare.merge.nested.utils.NestedMergeUtils;
+import org.eclipse.papyrus.uml.compare.merger.tests.AbstractCompareTest;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.Property;
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+
+public class NestedModelElementChangeRightTargetTest_1_RightToLeft extends AbstractNestedCompareTest {
+
+ private static final String MODEL_PATH = "modelElementChangeRightTarget_1/";
+
+ @BeforeClass
+ public static void init() throws CoreException, IOException {
+ AbstractNestedCompareTest.init(MODEL_PATH, false);
+ AbstractCompareTest.leftElement = (Class)AbstractNestedCompareTest.root.getOwnedMember("Class1");
+ AbstractCompareTest.rightElement = (Class)((Package)root.getPackagedElement("Package1")).getOwnedMember("Class1");
+ System.out.println(NLS.bind("Je possède {0} resources", set.getResources().size()));
+ }
+
+ @Test
+ public void testDifferences() throws InterruptedException {
+ super.testDifferences();
+ }
+
+ public void testLastDiffElements(List<DiffElement> diffElements) {
+ Assert.assertTrue(NLS.bind("The number of DiffElement is not correct : we would like {0} DiffElement, and we found {1}", new Object[]{ 1, diffElements.size() }), diffElements.size() == 1);
+ final DiffElement diffElement = diffElements.get(0);
+ Assert.assertTrue(NLS.bind("The last DiffElement is not a {0}", ModelElementChangeRightTarget.class), diffElement instanceof ModelElementChangeRightTarget);
+ }
+
+ @Test
+ public void mergeTestAllExecutability() throws InterruptedException {
+ super.mergeTestAllExecutability();
+ }
+
+ @Override
+ @Test
+ public void testCommandExecution() throws InterruptedException, IOException {
+ super.testCommandExecution();
+ }
+
+
+ @Override
+ @Test
+ public void testModificationOnDiFile() {
+ super.testModificationOnDiFile();
+ }
+
+ @Override
+ @Test
+ public void testModificationOnNotationFile() {
+ super.testModificationOnNotationFile();
+ }
+
+ @Override
+ @Test
+ public void testModificationOnUMLFile() {
+ super.testModificationOnUMLFile();
+ }
+
+
+ @Override
+ @Test
+ public void saveTest() throws IOException {
+ super.saveTest();
+ }
+
+ @Override
+ @Test
+ public void testResult() throws InterruptedException {
+ Property leftAttribute = ((Class)AbstractCompareTest.leftElement).getAttribute("property1", null);
+ Assert.assertNotNull("The right attribute has not been merged to the left",leftAttribute);
+ super.testResult();
+ }
+
+ @Override
+ @Test
+ public void testXMIID() {
+ //the XMI ID should not be duplicated, because we are inside the same model!
+ Property leftAttribute = ((Class)AbstractCompareTest.leftElement).getAttribute("property1", null);
+ Property rightAttribute = ((Class)AbstractCompareTest.rightElement).getAttribute("property1", null);
+ Assert.assertNotNull(leftAttribute);
+ Assert.assertNotNull(rightAttribute);
+ String leftID = EMFHelper.getXMIID(leftAttribute);
+ String rightId = EMFHelper.getXMIID(rightAttribute);
+ Assert.assertFalse("The XMIID should be different because we are in the same resource.", leftID.equals(rightId));
+ System.out.println(NLS.bind("Je possède {0} resources", set.getResources().size()));
+ }
+
+ @Override
+ @Test
+ public void testUndo() throws IOException, InterruptedException {
+ super.testUndo();
+ }
+
+ @Override
+ @Test
+ public void testRedo() throws IOException, InterruptedException {
+ super.testRedo();
+ }
+
+}
diff --git a/tests/junit/extraplugins/uml/compare/org.eclipse.papyrus.uml.compare.merger.tests/src/org/eclipse/papyrus/uml/compare/merger/tests/nested/NestedUpdateAttributeTest_1_LeftToRight.java b/tests/junit/extraplugins/uml/compare/org.eclipse.papyrus.uml.compare.merger.tests/src/org/eclipse/papyrus/uml/compare/merger/tests/nested/NestedUpdateAttributeTest_1_LeftToRight.java
new file mode 100644
index 00000000000..cb1a2518cd6
--- /dev/null
+++ b/tests/junit/extraplugins/uml/compare/org.eclipse.papyrus.uml.compare.merger.tests/src/org/eclipse/papyrus/uml/compare/merger/tests/nested/NestedUpdateAttributeTest_1_LeftToRight.java
@@ -0,0 +1,104 @@
+package org.eclipse.papyrus.uml.compare.merger.tests.nested;
+
+import java.io.IOException;
+import java.util.List;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.emf.compare.diff.metamodel.DiffElement;
+import org.eclipse.emf.compare.diff.metamodel.UpdateAttribute;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.papyrus.uml.compare.merger.tests.AbstractCompareTest;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.NamedElement;
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+
+public class NestedUpdateAttributeTest_1_LeftToRight extends AbstractNestedCompareTest {
+
+ private static final String MODEL_PATH = "updateAttribute_1/";
+
+ @BeforeClass
+ public static void init() throws CoreException, IOException {
+ AbstractNestedCompareTest.init(MODEL_PATH, true);
+ AbstractCompareTest.leftElement = (Class)root.getOwnedMember("Class1");
+ AbstractCompareTest.rightElement = (Class)root.getOwnedMember("Class2");
+ }
+
+ @Test
+ public void testDifferences() throws InterruptedException {
+ super.testDifferences();
+ }
+
+ public void testLastDiffElements(List<DiffElement> diffElements) {
+ Assert.assertTrue(NLS.bind("The number of DiffElement is not correct : we would like {0} DiffElement, and we found {1}", new Object[]{ 1, diffElements.size() }), diffElements.size() == 1);
+ final DiffElement diffElement = diffElements.get(0);
+ Assert.assertTrue(NLS.bind("The last DiffElement is not a {0}", UpdateAttribute.class), diffElement instanceof UpdateAttribute);
+ }
+
+ @Test
+ public void mergeTestAllExecutability() throws InterruptedException {
+ super.mergeTestAllExecutability();
+ }
+
+ @Override
+ @Test
+ public void testCommandExecution() throws InterruptedException, IOException {
+ super.testCommandExecution();
+ }
+
+ @Override
+ @Test
+ public void testModificationOnDiFile() {
+ super.testModificationOnDiFile();
+ }
+
+ @Override
+ @Test
+ public void testModificationOnNotationFile() {
+ super.testModificationOnNotationFile();
+ }
+
+ @Override
+ @Test
+ public void testModificationOnUMLFile() {
+ super.testModificationOnUMLFile();
+ }
+
+ @Override
+ @Test
+ public void saveTest() throws IOException {
+ super.saveTest();
+ }
+
+ @Override
+ @Test
+ public void testResult() throws InterruptedException {
+ final String leftName = ((NamedElement)leftElement).getName();
+ final String rightName = ((NamedElement)rightElement).getName();
+ Assert.assertEquals("The name of the class has not been correctly merged", leftName, rightName);
+ Assert.assertEquals("The right name has not changed", "Class1", rightName);
+ super.testResult();
+ }
+
+
+ @Override
+ @Test
+ public void testXMIID() {
+ //nothing to do
+ }
+
+ @Override
+ @Test
+ public void testUndo() throws IOException, InterruptedException {
+ super.testUndo();
+ }
+
+ @Override
+ @Test
+ public void testRedo() throws IOException, InterruptedException {
+ super.testRedo();
+ }
+
+}
diff --git a/tests/junit/extraplugins/uml/compare/org.eclipse.papyrus.uml.compare.merger.tests/src/org/eclipse/papyrus/uml/compare/merger/tests/nested/NestedUpdateAttributeTest_1_RightToLeft.java b/tests/junit/extraplugins/uml/compare/org.eclipse.papyrus.uml.compare.merger.tests/src/org/eclipse/papyrus/uml/compare/merger/tests/nested/NestedUpdateAttributeTest_1_RightToLeft.java
new file mode 100644
index 00000000000..9bc503a6a58
--- /dev/null
+++ b/tests/junit/extraplugins/uml/compare/org.eclipse.papyrus.uml.compare.merger.tests/src/org/eclipse/papyrus/uml/compare/merger/tests/nested/NestedUpdateAttributeTest_1_RightToLeft.java
@@ -0,0 +1,104 @@
+package org.eclipse.papyrus.uml.compare.merger.tests.nested;
+
+import java.io.IOException;
+import java.util.List;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.emf.compare.diff.metamodel.DiffElement;
+import org.eclipse.emf.compare.diff.metamodel.UpdateAttribute;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.papyrus.uml.compare.merger.tests.AbstractCompareTest;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.NamedElement;
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+
+public class NestedUpdateAttributeTest_1_RightToLeft extends AbstractNestedCompareTest {
+
+ private static final String MODEL_PATH = "updateAttribute_1/";
+
+ @BeforeClass
+ public static void init() throws CoreException, IOException {
+ AbstractNestedCompareTest.init(MODEL_PATH, false);
+ AbstractCompareTest.leftElement = (Class)root.getOwnedMember("Class1");
+ AbstractCompareTest.rightElement = (Class)root.getOwnedMember("Class2");
+ }
+
+ @Test
+ public void testDifferences() throws InterruptedException {
+ super.testDifferences();
+ }
+
+ public void testLastDiffElements(List<DiffElement> diffElements) {
+ Assert.assertTrue(NLS.bind("The number of DiffElement is not correct : we would like {0} DiffElement, and we found {1}", new Object[]{ 1, diffElements.size() }), diffElements.size() == 1);
+ final DiffElement diffElement = diffElements.get(0);
+ Assert.assertTrue(NLS.bind("The last DiffElement is not a {0}", UpdateAttribute.class), diffElement instanceof UpdateAttribute);
+ }
+
+ @Test
+ public void mergeTestAllExecutability() throws InterruptedException {
+ super.mergeTestAllExecutability();
+ }
+
+ @Override
+ @Test
+ public void testCommandExecution() throws InterruptedException, IOException {
+ super.testCommandExecution();
+ }
+
+ @Override
+ @Test
+ public void testModificationOnDiFile() {
+ super.testModificationOnDiFile();
+ }
+
+ @Override
+ @Test
+ public void testModificationOnNotationFile() {
+ super.testModificationOnNotationFile();
+ }
+
+ @Override
+ @Test
+ public void testModificationOnUMLFile() {
+ super.testModificationOnUMLFile();
+ }
+
+ @Override
+ @Test
+ public void saveTest() throws IOException {
+ super.saveTest();
+ }
+
+ @Override
+ @Test
+ public void testResult() throws InterruptedException {
+ super.testResult();
+ final String leftName = ((NamedElement)leftElement).getName();
+ final String rightName = ((NamedElement)rightElement).getName();
+ Assert.assertEquals("The name of the class has not been correctly merged", leftName, rightName);
+ Assert.assertEquals("The left name has not changed", "Class2", leftName);
+ }
+
+
+ @Override
+ @Test
+ public void testXMIID() {
+ //nothing to do
+ }
+
+ @Override
+ @Test
+ public void testUndo() throws IOException, InterruptedException {
+ super.testUndo();
+ }
+
+ @Override
+ @Test
+ public void testRedo() throws IOException, InterruptedException {
+ super.testRedo();
+ }
+
+}
diff --git a/tests/junit/extraplugins/uml/compare/org.eclipse.papyrus.uml.compare.merger.tests/src/org/eclipse/papyrus/uml/compare/merger/tests/standalone/AbstractStandaloneCompareTest.java b/tests/junit/extraplugins/uml/compare/org.eclipse.papyrus.uml.compare.merger.tests/src/org/eclipse/papyrus/uml/compare/merger/tests/standalone/AbstractStandaloneCompareTest.java
index bc56ca3a355..36f99da0bcc 100644
--- a/tests/junit/extraplugins/uml/compare/org.eclipse.papyrus.uml.compare.merger.tests/src/org/eclipse/papyrus/uml/compare/merger/tests/standalone/AbstractStandaloneCompareTest.java
+++ b/tests/junit/extraplugins/uml/compare/org.eclipse.papyrus.uml.compare.merger.tests/src/org/eclipse/papyrus/uml/compare/merger/tests/standalone/AbstractStandaloneCompareTest.java
@@ -143,7 +143,7 @@ public abstract class AbstractStandaloneCompareTest {
final List<DiffElement> differences = new ArrayList<DiffElement>(diff.getOwnedElements());
initialDifferences = differences;
for(final DiffElement current : differences) {
- Command cmd = TransactionalMergeService.getMergeCommand(domain, current, true);
+ Command cmd = TransactionalMergeService.getMergeCommand(domain, current, leftToRight);
Assert.assertNotNull(NLS.bind("I can't find the merge command for {0}", current), cmd);
Assert.assertTrue(NLS.bind("The builded command to merge {0} is not executable", current), cmd.canExecute());
}
@@ -160,7 +160,7 @@ public abstract class AbstractStandaloneCompareTest {
final List<DiffElement> differences = new ArrayList<DiffElement>(diff.getOwnedElements());
Assert.assertTrue("We should find only one DiffElement", differences.size() == 1);
DiffElement diffElement = differences.get(0);
- Command cmd = TransactionalMergeService.getMergeCommand(domain, diffElement, true);
+ Command cmd = TransactionalMergeService.getMergeCommand(domain, diffElement, leftToRight);
Assert.assertTrue(NLS.bind("The builded command to merge {0} is not executable", cmd), cmd.canExecute());
//we execute the command and hope that all it is OK
@@ -188,6 +188,8 @@ public abstract class AbstractStandaloneCompareTest {
DiffElement diffElement = differences.get(0);
Assert.assertTrue(diffElement instanceof DiffGroup);
DiffGroup group = (DiffGroup)diffElement;
+ //FIXME : there is a difference
+
Assert.assertTrue("After merging all differences, we still find differences between the models...", group.getSubDiffElements().size() == 0);
//for the fun!

Back to the top