diff options
Diffstat (limited to 'plugins/org.eclipse.emf.compare.tests/src/org/eclipse')
24 files changed, 635 insertions, 2 deletions
diff --git a/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/AbstractMergerTest.java b/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/AbstractMergerTest.java new file mode 100644 index 000000000..1ac97f348 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/AbstractMergerTest.java @@ -0,0 +1,111 @@ +/******************************************************************************* + * Copyright (c) 2016 Obeo. + * 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: + * Obeo - initial API and implementation + *******************************************************************************/ +package org.eclipse.emf.compare.tests.merge; + +import static com.google.common.base.Preconditions.checkNotNull; +import static org.junit.Assert.assertEquals; + +import java.util.List; + +import org.eclipse.emf.common.util.BasicMonitor; +import org.eclipse.emf.compare.Comparison; +import org.eclipse.emf.compare.Diff; +import org.eclipse.emf.compare.EMFCompare; +import org.eclipse.emf.compare.merge.IMerger; +import org.eclipse.emf.compare.merge.IMerger.Registry; +import org.eclipse.emf.compare.scope.DefaultComparisonScope; +import org.eclipse.emf.compare.scope.IComparisonScope; +import org.eclipse.emf.ecore.resource.Resource; +import org.junit.Test; + +/** + * Abstract test class for merge tests. The class create a comparison for the given resources, merge given + * diffs to merge in the correct side then assert that the result is equal to a given resource. The + * responsibility of finding the diffs to merge is given to concrete classes since this is specific to each + * test. + * + * @author <a href="mailto:mathieu.cartaud@obeo.fr">Mathieu Cartaud</a> + */ +public abstract class AbstractMergerTest { + + protected Resource origin; + + protected Resource left; + + protected Resource right; + + protected Resource expected; + + protected boolean rightToLeft; + + protected Registry mergerRegistry; + + protected Comparison comparison; + + public AbstractMergerTest(final Resource origin, final Resource left, final Resource right, + final boolean rightToLeft, final Resource expected, IMerger.Registry mergerRegistry) { + this.origin = checkNotNull(origin); + this.left = checkNotNull(left); + this.right = checkNotNull(right); + this.expected = checkNotNull(expected); + this.rightToLeft = rightToLeft; + this.mergerRegistry = checkNotNull(mergerRegistry); + } + + /** + * This class is implemented by client to get the diffs to merge for each specific test. + * + * @return the list of diffs to merge + */ + protected abstract List<Diff> getDiffsToMerge(); + + @Test + public void runMergeTest() { + createComparison(); + List<Diff> diffsToMerge = getDiffsToMerge(); + mergeAndCompare(diffsToMerge); + } + + /** + * Create the initial comparison. + */ + protected void createComparison() { + IComparisonScope scope = new DefaultComparisonScope(left, right, origin); + comparison = EMFCompare.builder().build().compare(scope); + } + + /** + * Merge the given diffs and assert that the result is identical with the expected result resource. + * + * @param diffsToMerge + * The list of diffs to merge + */ + protected void mergeAndCompare(List<Diff> diffsToMerge) { + for (Diff diff : diffsToMerge) { + if (rightToLeft) { + mergerRegistry.getHighestRankingMerger(diff).copyRightToLeft(diff, new BasicMonitor()); + } else { + mergerRegistry.getHighestRankingMerger(diff).copyLeftToRight(diff, new BasicMonitor()); + } + } + + IComparisonScope scope; + if (rightToLeft) { + scope = new DefaultComparisonScope(left, expected, null); + } else { + scope = new DefaultComparisonScope(right, expected, null); + } + + comparison = EMFCompare.builder().build().compare(scope); + assertEquals(0, comparison.getDifferences().size()); + } + +} diff --git a/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/Bug485266_MoveDeleteConflict_Test.java b/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/Bug485266_MoveDeleteConflict_Test.java new file mode 100644 index 000000000..692fc8d6c --- /dev/null +++ b/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/Bug485266_MoveDeleteConflict_Test.java @@ -0,0 +1,222 @@ +/******************************************************************************* + * Copyright (c) 2016 Obeo. + * 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: + * Obeo - initial API and implementation + *******************************************************************************/ +package org.eclipse.emf.compare.tests.merge; + +import static org.eclipse.emf.compare.DifferenceKind.MOVE; +import static org.eclipse.emf.compare.utils.EMFComparePredicates.ofKind; +import static org.junit.Assert.assertEquals; + +import com.google.common.collect.Collections2; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; + +import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.compare.Conflict; +import org.eclipse.emf.compare.Diff; +import org.eclipse.emf.compare.merge.IMerger; +import org.eclipse.emf.compare.tests.merge.data.bug485266.Bug485266InputData; +import org.eclipse.emf.ecore.resource.Resource; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +import org.junit.runners.Parameterized.Parameters; + +/** + * This class assert that EMFCompare correctly handle conflicts between the suppression of an element + * (packageA) on a side and the move of an other element (which is a child of packageA) on the other side. + * + * @author <a href="mailto:mathieu.cartaud@obeo.fr">Mathieu Cartaud</a> + */ +@RunWith(Parameterized.class) +public class Bug485266_MoveDeleteConflict_Test extends AbstractMergerTest { + + /** + * Create the list of parameters for the parametrized test. The parameters for each test is an object: + * + * <pre> + * Object[] { + * originResource, + * leftResource, + * rightResource, + * boolean for the merge direction, + * the resource we expect after the merge} + * </pre> + * + * @return the list of parameters for the tests + * @throws IOException + */ + @SuppressWarnings({"boxing" }) + @Parameters + public static Collection<Object[]> params() throws IOException { + Bug485266InputData inputData = new Bug485266InputData(); + + /** + * <pre> + * The ancestor: + * - root + * - packageA + * - nodeB + * + * The left model: + * - root + * + * The right model: + * - root + * - packageA + * - nodeB + * + * The correct result on the left side after a merge of the move of nodeB from right to left: + * - root + * - nodeB + * </pre> + */ + Object[] test1RightToLeft = new Object[] {inputData.getData1AncestorResource(), + inputData.getData1LeftResource(), inputData.getData1RightResource(), true, + inputData.getData1ResultResource() }; + Object[] test1LeftToRight = new Object[] {inputData.getData1AncestorResource(), + inputData.getData1RightResource(), inputData.getData1LeftResource(), false, + inputData.getData1ResultResource() }; + + /** + * <pre> + * The ancestor: + * - root + * - packageA + * - packageB + * - packageC + * - packageD + * - packageE + * + * The left model: + * - root + * + * The right model: + * - root + * - packageA + * - packageB + * - packageC + * - packageD + * - packageE + * + * The correct result on the left side after a merge of the move of packageB and packageD from right to left: + * - root + * - packageB + * - packageD + * </pre> + */ + Object[] test2RightToLeft = new Object[] {inputData.getData2AncestorResource(), + inputData.getData2LeftResource(), inputData.getData2RightResource(), true, + inputData.getData2ResultResource() }; + Object[] test2LeftToRight = new Object[] {inputData.getData2AncestorResource(), + inputData.getData2RightResource(), inputData.getData2LeftResource(), false, + inputData.getData2ResultResource() }; + + /** + * More complex models (supertypes, renaming) + */ + Object[] test3RightToLeft = new Object[] {inputData.getData3AncestorResource(), + inputData.getData3LeftResource(), inputData.getData3RightResource(), true, + inputData.getData3ResultResource() }; + Object[] test3LeftToRight = new Object[] {inputData.getData3AncestorResource(), + inputData.getData3RightResource(), inputData.getData3LeftResource(), false, + inputData.getData3ResultResource() }; + + /** + * <pre> + * The ancestor: + * - root + * - packageA + * - packageB + * - packageC + * + * The left model: + * - root + * + * The right model: + * - root + * - packageC + * - packageB + * + * The correct result on the left side after a merge of the move of packageB and packageD from right to left: + * - root + * - packageC + * - packageB + * </pre> + * + * The test is actually commented due to a bug in comparison process. + */ + Object[] test4RightToLeft = new Object[] {inputData.getData4AncestorResource(), + inputData.getData4LeftResource(), inputData.getData4RightResource(), true, + inputData.getData4ResultResource() }; + Object[] test4LeftToRight = new Object[] {inputData.getData4AncestorResource(), + inputData.getData4RightResource(), inputData.getData4LeftResource(), false, + inputData.getData4ResultResource() }; + + /** + * <pre> + * The ancestor: + * - root + * - packageA + * - packageB + * - packageC + * + * The left model: + * - root + * + * The right model: + * - root + * - packageB + * - packageA + * - packageD + * + * The correct result on the left side after a merge of the move of packageB and packageD from right to left: + * - root + * - packageB + * - packageA + * </pre> + */ + Object[] test5RightToLeft = new Object[] {inputData.getData5AncestorResource(), + inputData.getData5LeftResource(), inputData.getData5RightResource(), true, + inputData.getData5ResultResource() }; + Object[] test5LeftToRight = new Object[] {inputData.getData5AncestorResource(), + inputData.getData5RightResource(), inputData.getData5LeftResource(), false, + inputData.getData5ResultResource() }; + + // test4 is not used for the moment since their is a bug in the comparison process with this models + return Arrays.asList(test1RightToLeft, test1LeftToRight, test2RightToLeft, test2LeftToRight, + test3RightToLeft, test3LeftToRight, test5RightToLeft, test5LeftToRight); + } + + public Bug485266_MoveDeleteConflict_Test(final Resource origin, final Resource left, + final Resource right, final boolean rightToLeft, final Resource expected) { + super(origin, left, right, rightToLeft, expected, IMerger.RegistryImpl.createStandaloneInstance()); + } + + @Override + protected List<Diff> getDiffsToMerge() { + List<Diff> diffsToMerge = new ArrayList<Diff>(); + + final EList<Conflict> conflicts = comparison.getConflicts(); + for (Conflict conflict : conflicts) { + final EList<Diff> differences = conflict.getDifferences(); + + final Collection<Diff> moveDiffs = Collections2.filter(differences, ofKind(MOVE)); + assertEquals(1, moveDiffs.size()); + + final Diff move = moveDiffs.iterator().next(); + diffsToMerge.add(move); + } + return diffsToMerge; + } +} diff --git a/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/Bug485266InputData.java b/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/Bug485266InputData.java new file mode 100644 index 000000000..4e7d2f47f --- /dev/null +++ b/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/Bug485266InputData.java @@ -0,0 +1,99 @@ +/******************************************************************************* + * Copyright (c) 2016 Obeo. + * 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: + * Obeo - initial API and implementation + *******************************************************************************/ +package org.eclipse.emf.compare.tests.merge.data.bug485266; + +import java.io.IOException; + +import org.eclipse.emf.compare.tests.framework.AbstractInputData; +import org.eclipse.emf.ecore.resource.Resource; + +public class Bug485266InputData extends AbstractInputData { + + public Resource getData1AncestorResource() throws IOException { + return loadFromClassLoader("data1/ancestor.ecore"); //$NON-NLS-1$ + } + + public Resource getData1LeftResource() throws IOException { + return loadFromClassLoader("data1/left.ecore"); //$NON-NLS-1$ + } + + public Resource getData1RightResource() throws IOException { + return loadFromClassLoader("data1/right.ecore"); //$NON-NLS-1$ + } + + public Resource getData1ResultResource() throws IOException { + return loadFromClassLoader("data1/result.ecore"); //$NON-NLS-1$ + } + + public Resource getData2AncestorResource() throws IOException { + return loadFromClassLoader("data2/ancestor.ecore"); //$NON-NLS-1$ + } + + public Resource getData2LeftResource() throws IOException { + return loadFromClassLoader("data2/left.ecore"); //$NON-NLS-1$ + } + + public Resource getData2RightResource() throws IOException { + return loadFromClassLoader("data2/right.ecore"); //$NON-NLS-1$ + } + + public Resource getData2ResultResource() throws IOException { + return loadFromClassLoader("data2/result.ecore"); //$NON-NLS-1$ + } + + public Resource getData3AncestorResource() throws IOException { + return loadFromClassLoader("data3/ancestor.ecore"); //$NON-NLS-1$ + } + + public Resource getData3LeftResource() throws IOException { + return loadFromClassLoader("data3/left.ecore"); //$NON-NLS-1$ + } + + public Resource getData3RightResource() throws IOException { + return loadFromClassLoader("data3/right.ecore"); //$NON-NLS-1$ + } + + public Resource getData3ResultResource() throws IOException { + return loadFromClassLoader("data3/result.ecore"); //$NON-NLS-1$ + } + + public Resource getData4AncestorResource() throws IOException { + return loadFromClassLoader("data4/ancestor.ecore"); //$NON-NLS-1$ + } + + public Resource getData4LeftResource() throws IOException { + return loadFromClassLoader("data4/left.ecore"); //$NON-NLS-1$ + } + + public Resource getData4RightResource() throws IOException { + return loadFromClassLoader("data4/right.ecore"); //$NON-NLS-1$ + } + + public Resource getData4ResultResource() throws IOException { + return loadFromClassLoader("data4/result.ecore"); //$NON-NLS-1$ + } + + public Resource getData5AncestorResource() throws IOException { + return loadFromClassLoader("data5/ancestor.ecore"); //$NON-NLS-1$ + } + + public Resource getData5LeftResource() throws IOException { + return loadFromClassLoader("data5/left.ecore"); //$NON-NLS-1$ + } + + public Resource getData5RightResource() throws IOException { + return loadFromClassLoader("data5/right.ecore"); //$NON-NLS-1$ + } + + public Resource getData5ResultResource() throws IOException { + return loadFromClassLoader("data5/result.ecore"); //$NON-NLS-1$ + } +} diff --git a/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data1/ancestor.ecore b/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data1/ancestor.ecore new file mode 100644 index 000000000..817e40d13 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data1/ancestor.ecore @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+ xmi:id="_root" name="root" nsURI="http://www.eclipse.org/emf/compare/conflicts/move/delete"
+ nsPrefix="r">
+ <eSubpackages xmi:id="_packageA" name="packageA">
+ <eSubpackages xmi:id="_shouldNotBePresentAfterMerge" name="shouldNotBePresentAfterMerge">
+ <eSubpackages xmi:id="_elementMoved" name="elementMoved"/>
+ </eSubpackages>
+ </eSubpackages>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data1/left.ecore b/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data1/left.ecore new file mode 100644 index 000000000..156a796d6 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data1/left.ecore @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" + xmi:id="_root" name="root" nsURI="http://www.eclipse.org/emf/compare/conflicts/move/delete" + nsPrefix="r"> + <eSubpackages xmi:id="_packageA" name="packageA"/> +</ecore:EPackage> diff --git a/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data1/result.ecore b/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data1/result.ecore new file mode 100644 index 000000000..d4a6e96f6 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data1/result.ecore @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" + xmi:id="_root" name="root" nsURI="http://www.eclipse.org/emf/compare/conflicts/move/delete" + nsPrefix="r"> + <eSubpackages xmi:id="_packageA" name="packageA"> + <eSubpackages xmi:id="_elementMoved" name="elementMoved"/> + </eSubpackages> +</ecore:EPackage> diff --git a/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data1/right.ecore b/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data1/right.ecore new file mode 100644 index 000000000..a3d6268e3 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data1/right.ecore @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+ xmi:id="_root" name="root" nsURI="http://www.eclipse.org/emf/compare/conflicts/move/delete"
+ nsPrefix="r">
+ <eSubpackages xmi:id="_packageA" name="packageA">
+ <eSubpackages xmi:id="_shouldNotBePresentAfterMerge" name="shouldNotBePresentAfterMerge"/>
+ <eSubpackages xmi:id="_elementMoved" name="elementMoved"/>
+ </eSubpackages>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data2/ancestor.ecore b/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data2/ancestor.ecore new file mode 100644 index 000000000..d2812a7f1 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data2/ancestor.ecore @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+ xmi:id="_root" name="root" nsURI="http://www.eclipse.org/emf/compare/conflicts/move/delete"
+ nsPrefix="r">
+ <eSubpackages xmi:id="_packageA" name="packageA">
+ <eSubpackages xmi:id="_shouldNotBePresentAfterMerge0" name="shouldNotBePresentAfterMerge0">
+ <eSubpackages xmi:id="_elementMoved1" name="elementMoved1">
+ <eSubpackages xmi:id="_shouldNotBePresentAfterMerge1" name="shouldNotBePresentAfterMerge1">
+ <eSubpackages xmi:id="_elementMoved2" name="elementMoved2">
+ <eSubpackages xmi:id="_shouldNotBePresentAfterMerge2" name="shouldNotBePresentAfterMerge2"/>
+ </eSubpackages>
+ </eSubpackages>
+ </eSubpackages>
+ </eSubpackages>
+ </eSubpackages>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data2/left.ecore b/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data2/left.ecore new file mode 100644 index 000000000..46bb331ac --- /dev/null +++ b/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data2/left.ecore @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+ xmi:id="_root" name="root" nsURI="http://www.eclipse.org/emf/compare/conflicts/move/delete"
+ nsPrefix="r">
+ <eSubpackages xmi:id="_packageA" name="packageA"/>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data2/result.ecore b/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data2/result.ecore new file mode 100644 index 000000000..92d43c3fc --- /dev/null +++ b/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data2/result.ecore @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" + xmi:id="_root" name="root" nsURI="http://www.eclipse.org/emf/compare/conflicts/move/delete" + nsPrefix="r"> + <eSubpackages xmi:id="_packageA" name="packageA"> + <eSubpackages xmi:id="_elementMoved1" name="elementMoved1"/> + <eSubpackages xmi:id="_elementMoved2" name="elementMoved2"/> + </eSubpackages> +</ecore:EPackage> diff --git a/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data2/right.ecore b/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data2/right.ecore new file mode 100644 index 000000000..0a0cf3c63 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data2/right.ecore @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+ xmi:id="_root" name="root" nsURI="http://www.eclipse.org/emf/compare/conflicts/move/delete"
+ nsPrefix="r">
+ <eSubpackages xmi:id="_packageA" name="packageA">
+ <eSubpackages xmi:id="_shouldNotBePresentAfterMerge0" name="shouldNotBePresentAfterMerge0"/>
+ <eSubpackages xmi:id="_elementMoved1" name="elementMoved1">
+ <eSubpackages xmi:id="_shouldNotBePresentAfterMerge1" name="shouldNotBePresentAfterMerge1"/>
+ </eSubpackages>
+ <eSubpackages xmi:id="_elementMoved2" name="elementMoved2">
+ <eSubpackages xmi:id="_shouldNotBePresentAfterMerge2" name="shouldNotBePresentAfterMerge2"/>
+ </eSubpackages>
+ </eSubpackages>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data3/ancestor.ecore b/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data3/ancestor.ecore new file mode 100644 index 000000000..0e4a0af3c --- /dev/null +++ b/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data3/ancestor.ecore @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmi:id="_root" name="root" nsURI="http://www.eclipse.org/emf/compare/conflicts/move/delete"
+ nsPrefix="r">
+ <eSubpackages xmi:id="_packageA" name="packageA">
+ <eSubpackages xmi:id="_shouldNotBePresentAfterMerge" name="shouldNotBePresentAfterMerge">
+ <eClassifiers xmi:id="_elementMoved" xsi:type="ecore:EClass" name="elementMoved" eSuperTypes="#_superType1"/>
+ </eSubpackages>
+ </eSubpackages>
+ <eSubpackages xmi:id="_packageB" name="packageB">
+ <eClassifiers xmi:id="_superType1" xsi:type="ecore:EClass" name="superType1"/>
+ </eSubpackages>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data3/left.ecore b/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data3/left.ecore new file mode 100644 index 000000000..ce5c046dc --- /dev/null +++ b/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data3/left.ecore @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmi:id="_root" name="root" nsURI="http://www.eclipse.org/emf/compare/conflicts/move/delete" + nsPrefix="r"> + <eSubpackages xmi:id="_packageA" name="packageA"/> + <eSubpackages xmi:id="_packageB" name="packageB"> + <eClassifiers xsi:type="ecore:EClass" xmi:id="_superType1" name="superType1"/> + </eSubpackages> +</ecore:EPackage> diff --git a/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data3/result.ecore b/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data3/result.ecore new file mode 100644 index 000000000..ed1fde1d8 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data3/result.ecore @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmi:id="_root" name="root" nsURI="http://www.eclipse.org/emf/compare/conflicts/move/delete" + nsPrefix="r"> + <eSubpackages xmi:id="_packageA" name="packageA"> + <eClassifiers xsi:type="ecore:EClass" xmi:id="_elementMoved" name="elementMovedRenamed"/> + </eSubpackages> + <eSubpackages xmi:id="_packageB" name="packageB"> + <eClassifiers xsi:type="ecore:EClass" xmi:id="_superType1" name="superType1"/> + </eSubpackages> +</ecore:EPackage> diff --git a/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data3/right.ecore b/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data3/right.ecore new file mode 100644 index 000000000..832f00ca3 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data3/right.ecore @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmi:id="_root" name="root" nsURI="http://www.eclipse.org/emf/compare/conflicts/move/delete"
+ nsPrefix="r">
+ <eSubpackages xmi:id="_packageA" name="packageA">
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_elementMoved" name="elementMovedRenamed" eSuperTypes="#_superType1 #_superType2"/>
+ <eSubpackages xmi:id="_shouldNotBePresentAfterMerge" name="shouldNotBePresentAfterMerge"/>
+ </eSubpackages>
+ <eSubpackages xmi:id="_packageB" name="packageB">
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_superType1" name="superType1Renamed"/>
+ <eClassifiers xsi:type="ecore:EClass" xmi:id="_superType2" name="superType2"/>
+ </eSubpackages>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data4/ancestor.ecore b/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data4/ancestor.ecore new file mode 100644 index 000000000..f9dc4fdf5 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data4/ancestor.ecore @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+ xmi:id="_root" name="root" nsURI="http://www.eclipse.org/emf/compare/conflicts/move/delete"
+ nsPrefix="r">
+ <eSubpackages xmi:id="_packageA" name="packageA">
+ <eSubpackages xmi:id="_shouldNotBePresentAfterMerge" name="shouldNotBePresentAfterMerge">
+ <eSubpackages xmi:id="_containerPackage" name="containerPackage">
+ <eSubpackages xmi:id="_childPackage" name="childPackage"/>
+ </eSubpackages>
+ </eSubpackages>
+ </eSubpackages>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data4/left.ecore b/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data4/left.ecore new file mode 100644 index 000000000..46bb331ac --- /dev/null +++ b/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data4/left.ecore @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+ xmi:id="_root" name="root" nsURI="http://www.eclipse.org/emf/compare/conflicts/move/delete"
+ nsPrefix="r">
+ <eSubpackages xmi:id="_packageA" name="packageA"/>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data4/result.ecore b/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data4/result.ecore new file mode 100644 index 000000000..5544a7d77 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data4/result.ecore @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+ xmi:id="_root" name="root" nsURI="http://www.eclipse.org/emf/compare/conflicts/move/delete"
+ nsPrefix="r">
+ <eSubpackages xmi:id="_packageA" name="packageA">
+ <eSubpackages xmi:id="_childPackage" name="childPackage">
+ <eSubpackages xmi:id="_containerPackage" name="containerPackage"/>
+ </eSubpackages>
+ </eSubpackages>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data4/right.ecore b/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data4/right.ecore new file mode 100644 index 000000000..5544a7d77 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data4/right.ecore @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+ xmi:id="_root" name="root" nsURI="http://www.eclipse.org/emf/compare/conflicts/move/delete"
+ nsPrefix="r">
+ <eSubpackages xmi:id="_packageA" name="packageA">
+ <eSubpackages xmi:id="_childPackage" name="childPackage">
+ <eSubpackages xmi:id="_containerPackage" name="containerPackage"/>
+ </eSubpackages>
+ </eSubpackages>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data5/ancestor.ecore b/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data5/ancestor.ecore new file mode 100644 index 000000000..8eb6ec845 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data5/ancestor.ecore @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+ xmi:id="_root" name="root" nsURI="http://www.eclipse.org/emf/compare/conflicts/move/delete"
+ nsPrefix="r">
+ <eSubpackages xmi:id="_packageA" name="packageA">
+ <eSubpackages xmi:id="_internalPackage" name="internalPackage"/>
+ <eSubpackages xmi:id="_containerPackage" name="containerPackage"/>
+ <eSubpackages xmi:id="_shouldNotBePresentAfterMerge" name="shouldNotBePresentAfterMerge"/>
+ </eSubpackages>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data5/left.ecore b/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data5/left.ecore new file mode 100644 index 000000000..46bb331ac --- /dev/null +++ b/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data5/left.ecore @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+ xmi:id="_root" name="root" nsURI="http://www.eclipse.org/emf/compare/conflicts/move/delete"
+ nsPrefix="r">
+ <eSubpackages xmi:id="_packageA" name="packageA"/>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data5/result.ecore b/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data5/result.ecore new file mode 100644 index 000000000..e32961b7f --- /dev/null +++ b/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data5/result.ecore @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" + xmi:id="_root" name="root" nsURI="http://www.eclipse.org/emf/compare/conflicts/move/delete" + nsPrefix="r"> + <eSubpackages xmi:id="_packageA" name="packageA"> + <eSubpackages xmi:id="_containerPackage" name="containerPackage"> + <eSubpackages xmi:id="_internalPackage" name="internalPackage"/> + </eSubpackages> + </eSubpackages> +</ecore:EPackage> diff --git a/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data5/right.ecore b/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data5/right.ecore new file mode 100644 index 000000000..6d169d7a5 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/merge/data/bug485266/data5/right.ecore @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
+ xmi:id="_root" name="root" nsURI="http://www.eclipse.org/emf/compare/conflicts/move/delete"
+ nsPrefix="r">
+ <eSubpackages xmi:id="_packageA" name="packageA">
+ <eSubpackages xmi:id="_containerPackage" name="containerPackage">
+ <eSubpackages xmi:id="_internalPackage" name="internalPackage"/>
+ </eSubpackages>
+ <eSubpackages xmi:id="_shouldNotBePresentAfterMerge" name="shouldNotBePresentAfterMerge"/>
+ </eSubpackages>
+</ecore:EPackage>
diff --git a/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/suite/AllTests.java b/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/suite/AllTests.java index 0e7647aea..11b6cad45 100644 --- a/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/suite/AllTests.java +++ b/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/suite/AllTests.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2012, 2015 Obeo and others. + * Copyright (c) 2012, 2016 Obeo 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 @@ -42,6 +42,7 @@ import org.eclipse.emf.compare.tests.match.ProximityIndexTest; import org.eclipse.emf.compare.tests.match.ProxyMatchingTest; import org.eclipse.emf.compare.tests.match.RootIDMatchingTest; import org.eclipse.emf.compare.tests.match.XMIMatchingTest; +import org.eclipse.emf.compare.tests.merge.Bug485266_MoveDeleteConflict_Test; import org.eclipse.emf.compare.tests.merge.ConflictMergeTest; import org.eclipse.emf.compare.tests.merge.ExtensionMergeTest; import org.eclipse.emf.compare.tests.merge.FeatureMaps2wayMergeTest; @@ -91,7 +92,8 @@ import org.junit.runners.Suite.SuiteClasses; FeatureFilterTest.class, ThreeWayBatchMergingTest.class, MultiLineAttributeConflictDetectionTest.class, ThreeWayTextDiffTest.class, MultiLineAttributeMergeTest.class, MonitorCancelTest.class, IdentifierEObjectMatcherTest.class, - MatchUtilFeatureContainsTest.class, RefineMergeTest.class, Bug484557ConflictTest.class }) + MatchUtilFeatureContainsTest.class, RefineMergeTest.class, Bug484557ConflictTest.class, + Bug485266_MoveDeleteConflict_Test.class }) public class AllTests { /** * Standalone launcher for all of compare's tests. |