diff options
Diffstat (limited to 'plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges')
34 files changed, 908 insertions, 0 deletions
diff --git a/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/MultiplicityElementChangesTest.java b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/MultiplicityElementChangesTest.java new file mode 100644 index 000000000..fd13628fd --- /dev/null +++ b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/MultiplicityElementChangesTest.java @@ -0,0 +1,600 @@ +/******************************************************************************* + * Copyright (c) 2016 EclipseSource Muenchen GmbH 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: + * Alexandra Buzila - initial API and implementation + *******************************************************************************/ +package org.eclipse.emf.compare.uml2.tests.multiplicitychanges; + +import static com.google.common.base.Predicates.and; +import static com.google.common.collect.Iterables.filter; +import static com.google.common.collect.Iterables.size; +import static org.eclipse.emf.compare.DifferenceSource.LEFT; +import static org.eclipse.emf.compare.DifferenceSource.RIGHT; +import static org.eclipse.emf.compare.utils.EMFComparePredicates.fromSide; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import com.google.common.base.Predicate; +import com.google.common.collect.Lists; + +import java.io.IOException; +import java.util.ArrayList; + +import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.compare.AttributeChange; +import org.eclipse.emf.compare.Comparison; +import org.eclipse.emf.compare.Conflict; +import org.eclipse.emf.compare.ConflictKind; +import org.eclipse.emf.compare.Diff; +import org.eclipse.emf.compare.DifferenceKind; +import org.eclipse.emf.compare.ReferenceChange; +import org.eclipse.emf.compare.ide.ui.tests.framework.ResolutionStrategyID; +import org.eclipse.emf.compare.ide.ui.tests.framework.RuntimeTestRunner; +import org.eclipse.emf.compare.ide.ui.tests.framework.annotations.Compare; +import org.eclipse.emf.compare.ide.ui.tests.framework.annotations.ResolutionStrategies; +import org.eclipse.emf.compare.uml2.internal.MultiplicityElementChange; +import org.eclipse.emf.compare.utils.MatchUtil; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.uml2.uml.LiteralInteger; +import org.eclipse.uml2.uml.LiteralUnlimitedNatural; +import org.eclipse.uml2.uml.UMLPackage; +import org.junit.runner.RunWith; + +@RunWith(RuntimeTestRunner.class) +@ResolutionStrategies(ResolutionStrategyID.PROJECT) +public class MultiplicityElementChangesTest { + + private static final Predicate<Diff> IS_MULTIPLICITY_CHANGE = new Predicate<Diff>() { + public boolean apply(Diff diff) { + return diff instanceof MultiplicityElementChange; + } + }; + + private static final Predicate<Diff> IS_LOWER_VALUE_REFERENCE_CHANGE = new Predicate<Diff>() { + public boolean apply(Diff diff) { + if (!(diff instanceof ReferenceChange)) { + return false; + } + ReferenceChange refChange = (ReferenceChange)diff; + return refChange.getReference() == UMLPackage.eINSTANCE.getMultiplicityElement_LowerValue(); + } + }; + + private static final Predicate<Diff> IS_LOWER_VALUE_ATTRIBUTE_CHANGE = new Predicate<Diff>() { + public boolean apply(Diff diff) { + if (!(diff instanceof AttributeChange)) { + return false; + } + EObject container = MatchUtil.getContainer(diff.getMatch().getComparison(), diff); + if (container instanceof LiteralInteger || container instanceof LiteralUnlimitedNatural) { + EStructuralFeature eContainingFeature = container.eContainingFeature(); + return eContainingFeature == UMLPackage.eINSTANCE.getMultiplicityElement_LowerValue(); + } + return false; + } + }; + + private static final Predicate<Diff> IS_UPPER_VALUE_REFERENCE_CHANGE = new Predicate<Diff>() { + public boolean apply(Diff diff) { + if (!(diff instanceof ReferenceChange)) { + return false; + } + ReferenceChange refChange = (ReferenceChange)diff; + return refChange.getReference() == UMLPackage.eINSTANCE.getMultiplicityElement_UpperValue(); + } + }; + + private static final Predicate<Diff> IS_UPPER_VALUE_ATTRIBUTE_CHANGE = new Predicate<Diff>() { + public boolean apply(Diff diff) { + if (!(diff instanceof AttributeChange)) { + return false; + } + EObject container = MatchUtil.getContainer(diff.getMatch().getComparison(), diff); + if (container instanceof LiteralInteger || container instanceof LiteralUnlimitedNatural) { + EStructuralFeature eContainingFeature = container.eContainingFeature(); + return eContainingFeature == UMLPackage.eINSTANCE.getMultiplicityElement_UpperValue(); + } + return false; + } + }; + + private static final Predicate<Diff> IS_UPPER_VALUE_CHANGE = new Predicate<Diff>() { + public boolean apply(Diff diff) { + return IS_UPPER_VALUE_REFERENCE_CHANGE.apply(diff) || IS_UPPER_VALUE_ATTRIBUTE_CHANGE.apply(diff); + } + }; + + private static final Predicate<Diff> IS_LOWER_VALUE_CHANGE = new Predicate<Diff>() { + public boolean apply(Diff diff) { + return IS_LOWER_VALUE_REFERENCE_CHANGE.apply(diff) || IS_LOWER_VALUE_ATTRIBUTE_CHANGE.apply(diff); + } + }; + + /** + * <b>origin:</b> an activity with an input pin <br> + * <b>left:</b> multiplicity lower value is added to the input pin <br> + * <b>right:</b> multiplicity upper value is added to the input pin + */ + @Compare(left = "a1/left.uml", right = "a1/right.uml", ancestor = "a1/origin.uml") + public void testNonConflictingAddition(Comparison comparison) throws IOException { + EList<Diff> diffs = comparison.getDifferences(); + Iterable<Diff> leftChanges = filter(diffs, and(IS_MULTIPLICITY_CHANGE, fromSide(LEFT))); + Iterable<Diff> rightChanges = filter(diffs, and(IS_MULTIPLICITY_CHANGE, fromSide(RIGHT))); + + assertEquals(1, size(leftChanges)); + assertEquals(1, size(rightChanges)); + + MultiplicityElementChange leftChange = (MultiplicityElementChange)leftChanges.iterator().next(); + assertEquals(1, leftChange.getRefinedBy().size()); + assertTrue(leftChange.getRefinedBy().get(0) instanceof ReferenceChange); + assertEquals(DifferenceKind.ADD, leftChange.getKind()); + + MultiplicityElementChange rightChange = (MultiplicityElementChange)rightChanges.iterator().next(); + assertEquals(1, rightChange.getRefinedBy().size()); + assertTrue(rightChange.getRefinedBy().get(0) instanceof ReferenceChange); + assertEquals(DifferenceKind.ADD, rightChange.getKind()); + + assertEquals(0, comparison.getConflicts().size()); + } + + /** + * <b>origin:</b> an activity with an input pin <br> + * <b>left:</b> multiplicity lower value is added to the input pin <br> + * <b>right:</b> multiplicity lower and upper values are added to the input pin, but the lower value is + * the same value as in the left change + */ + @Compare(left = "a2/left.uml", right = "a2/right.uml", ancestor = "a2/origin.uml") + public void testAdditionsWithPseudoconflict(Comparison comparison) throws IOException { + EList<Diff> diffs = comparison.getDifferences(); + ArrayList<Diff> leftChanges = Lists.newArrayList(filter(diffs, and(IS_MULTIPLICITY_CHANGE, + fromSide(LEFT)))); + ArrayList<Diff> rightChanges = Lists.newArrayList(filter(diffs, and(IS_MULTIPLICITY_CHANGE, + fromSide(RIGHT)))); + + assertEquals(1, size(leftChanges)); + assertEquals(2, size(rightChanges)); + + MultiplicityElementChange leftChange = (MultiplicityElementChange)leftChanges.get(0); + assertEquals(1, leftChange.getRefinedBy().size()); + assertTrue(leftChange.getRefinedBy().get(0) instanceof ReferenceChange); + assertEquals(DifferenceKind.ADD, leftChange.getKind()); + + MultiplicityElementChange rightChange1 = (MultiplicityElementChange)rightChanges.get(0); + assertEquals(1, rightChange1.getRefinedBy().size()); + assertTrue(rightChange1.getRefinedBy().get(0) instanceof ReferenceChange); + assertEquals(DifferenceKind.ADD, rightChange1.getKind()); + + MultiplicityElementChange rightChange2 = (MultiplicityElementChange)rightChanges.get(1); + assertEquals(1, rightChange2.getRefinedBy().size()); + assertTrue(rightChange2.getRefinedBy().get(0) instanceof ReferenceChange); + assertEquals(DifferenceKind.ADD, rightChange2.getKind()); + + assertEquals(1, comparison.getConflicts().size()); + Conflict conflict = comparison.getConflicts().get(0); + assertEquals(ConflictKind.PSEUDO, conflict.getKind()); + assertTrue(conflict.getDifferences().contains(leftChange)); + + if (isLowerValueChange(rightChange1)) { + assertEquals(conflict, rightChange1.getConflict()); + } else { + assertTrue(isLowerValueChange(rightChange2)); + assertEquals(conflict, rightChange2.getConflict()); + } + } + + /** + * <b>origin:</b> an activity with an input pin <br> + * <b>left:</b> multiplicity lower value is added to the input pin <br> + * <b>right:</b> multiplicity lower and upper values are added to the input pin, but the lower value is + * different than the one in the left change + */ + @Compare(left = "a3/left.uml", right = "a3/right.uml", ancestor = "a3/origin.uml") + public void testAdditionsWithConflict(Comparison comparison) throws IOException { + EList<Diff> diffs = comparison.getDifferences(); + ArrayList<Diff> leftChanges = Lists.newArrayList(filter(diffs, and(IS_MULTIPLICITY_CHANGE, + fromSide(LEFT)))); + ArrayList<Diff> rightChanges = Lists.newArrayList(filter(diffs, and(IS_MULTIPLICITY_CHANGE, + fromSide(RIGHT)))); + + assertEquals(1, size(leftChanges)); + assertEquals(2, size(rightChanges)); + + MultiplicityElementChange leftChange = (MultiplicityElementChange)leftChanges.get(0); + assertEquals(1, leftChange.getRefinedBy().size()); + assertTrue(leftChange.getRefinedBy().get(0) instanceof ReferenceChange); + assertEquals(DifferenceKind.ADD, leftChange.getKind()); + + MultiplicityElementChange rightChange1 = (MultiplicityElementChange)rightChanges.get(0); + assertEquals(1, rightChange1.getRefinedBy().size()); + assertTrue(rightChange1.getRefinedBy().get(0) instanceof ReferenceChange); + assertEquals(DifferenceKind.ADD, rightChange1.getKind()); + + MultiplicityElementChange rightChange2 = (MultiplicityElementChange)rightChanges.get(1); + assertEquals(1, rightChange2.getRefinedBy().size()); + assertTrue(rightChange2.getRefinedBy().get(0) instanceof ReferenceChange); + assertEquals(DifferenceKind.ADD, rightChange2.getKind()); + + assertEquals(1, comparison.getConflicts().size()); + Conflict conflict = comparison.getConflicts().get(0); + assertEquals(ConflictKind.REAL, conflict.getKind()); + + if (isLowerValueChange(rightChange1)) { + assertEquals(conflict, rightChange1.getConflict()); + } else { + assertTrue(isLowerValueChange(rightChange2)); + assertEquals(conflict, rightChange2.getConflict()); + } + } + + /** + * <b>origin:</b> an activity with an input pin, with a lower and upper value <br> + * <b>left:</b> multiplicity lower value is changed to 1 <br> + * <b>right:</b> multiplicity lower value is changed to 2 <br> + * A real conflict should be produced. + */ + @Compare(left = "a4/left.uml", right = "a4/right.uml", ancestor = "a4/origin.uml") + public void testChangesWithConflict(Comparison comparison) throws IOException { + EList<Diff> diffs = comparison.getDifferences(); + Iterable<Diff> leftChanges = filter(diffs, and(IS_MULTIPLICITY_CHANGE, fromSide(LEFT))); + Iterable<Diff> rightChanges = filter(diffs, and(IS_MULTIPLICITY_CHANGE, fromSide(RIGHT))); + + assertEquals(1, size(leftChanges)); + MultiplicityElementChange leftChange = (MultiplicityElementChange)leftChanges.iterator().next(); + assertEquals(1, leftChange.getRefinedBy().size()); + assertTrue(leftChange.getRefinedBy().get(0) instanceof AttributeChange); + assertEquals(DifferenceKind.CHANGE, leftChange.getKind()); + + assertEquals(1, size(rightChanges)); + MultiplicityElementChange rightChange = (MultiplicityElementChange)rightChanges.iterator().next(); + assertEquals(1, rightChange.getRefinedBy().size()); + assertTrue(rightChange.getRefinedBy().get(0) instanceof AttributeChange); + assertEquals(DifferenceKind.CHANGE, rightChange.getKind()); + + assertEquals(1, comparison.getConflicts().size()); + Conflict conflict = comparison.getConflicts().get(0); + assertEquals(ConflictKind.REAL, conflict.getKind()); + assertEquals(conflict, rightChange.getConflict()); + } + + /** + * <b>origin:</b> an activity with an input pin, with a lower and upper value <br> + * <b>left:</b> multiplicity lower value is changed to 1 <br> + * <b>right:</b> multiplicity lower value is changed to 1 <br> + * A pseudo conflict should be produced. + */ + @Compare(left = "a5/left.uml", right = "a5/right.uml", ancestor = "a5/origin.uml") + public void testChangesWithPseudoconflict(Comparison comparison) throws IOException { + EList<Diff> diffs = comparison.getDifferences(); + Iterable<Diff> leftChanges = filter(diffs, and(IS_MULTIPLICITY_CHANGE, fromSide(LEFT))); + Iterable<Diff> rightChanges = filter(diffs, and(IS_MULTIPLICITY_CHANGE, fromSide(RIGHT))); + + assertEquals(1, size(leftChanges)); + Diff leftChange = leftChanges.iterator().next(); + assertEquals(1, leftChange.getRefinedBy().size()); + assertTrue(leftChange.getRefinedBy().get(0) instanceof AttributeChange); + assertEquals(DifferenceKind.CHANGE, leftChange.getKind()); + + assertEquals(1, size(rightChanges)); + Diff rightChange = rightChanges.iterator().next(); + assertEquals(1, rightChange.getRefinedBy().size()); + assertTrue(rightChange.getRefinedBy().get(0) instanceof AttributeChange); + assertEquals(DifferenceKind.CHANGE, rightChange.getKind()); + + assertEquals(1, comparison.getConflicts().size()); + Conflict conflict = comparison.getConflicts().get(0); + assertEquals(ConflictKind.PSEUDO, conflict.getKind()); + assertEquals(conflict, rightChange.getConflict()); + + } + + /** + * <b>origin:</b> an activity with an input pin, with a lower and upper value <br> + * <b>left:</b> multiplicity lower value is changed to 1 <br> + * <b>right:</b> multiplicity lower and upper values are removed <br> + */ + @Compare(left = "a6/left.uml", right = "a6/right.uml", ancestor = "a6/origin.uml") + public void testRemoveConflict(Comparison comparison) throws IOException { + EList<Diff> diffs = comparison.getDifferences(); + ArrayList<Diff> leftChanges = Lists.newArrayList(filter(diffs, and(IS_MULTIPLICITY_CHANGE, + fromSide(LEFT)))); + ArrayList<Diff> rightChanges = Lists.newArrayList(filter(diffs, and(IS_MULTIPLICITY_CHANGE, + fromSide(RIGHT)))); + + assertEquals(1, size(leftChanges)); + MultiplicityElementChange leftChange = (MultiplicityElementChange)leftChanges.iterator().next(); + assertEquals(1, leftChange.getRefinedBy().size()); + assertTrue(leftChange.getRefinedBy().get(0) instanceof AttributeChange); + assertEquals(DifferenceKind.CHANGE, leftChange.getKind()); + + assertEquals(2, size(rightChanges)); + + MultiplicityElementChange rightChange1 = (MultiplicityElementChange)rightChanges.get(0); + assertEquals(1, rightChange1.getRefinedBy().size()); + assertTrue(rightChange1.getRefinedBy().get(0) instanceof ReferenceChange); + assertEquals(DifferenceKind.DELETE, rightChange1.getKind()); + + MultiplicityElementChange rightChange2 = (MultiplicityElementChange)rightChanges.get(1); + assertEquals(1, rightChange2.getRefinedBy().size()); + assertTrue(rightChange2.getRefinedBy().get(0) instanceof ReferenceChange); + assertEquals(DifferenceKind.DELETE, rightChange2.getKind()); + + assertEquals(1, comparison.getConflicts().size()); + Conflict conflict = comparison.getConflicts().get(0); + assertEquals(ConflictKind.REAL, conflict.getKind()); + + if (isLowerValueChange(rightChange1)) { + assertTrue(isUpperValueChange(rightChange2)); + assertEquals(conflict, rightChange1.getConflict()); + } else { + assertTrue(isUpperValueChange(rightChange1)); + assertTrue(isLowerValueChange(rightChange2)); + assertEquals(conflict, rightChange2.getConflict()); + } + } + + /** + * <b>origin:</b> an activity with an input pin, with a lower and upper value <br> + * <b>left:</b> multiplicity upper value is removed <br> + * <b>right:</b> multiplicity lower value is changed to 1 <br> + */ + @Compare(left = "a7/left.uml", right = "a7/right.uml", ancestor = "a7/origin.uml") + public void testRemoveNoConflict(Comparison comparison) throws IOException { + EList<Diff> diffs = comparison.getDifferences(); + Iterable<Diff> leftChanges = filter(diffs, and(IS_MULTIPLICITY_CHANGE, fromSide(LEFT))); + Iterable<Diff> rightChanges = filter(diffs, and(IS_MULTIPLICITY_CHANGE, fromSide(RIGHT))); + + assertEquals(1, size(leftChanges)); + MultiplicityElementChange leftChange = (MultiplicityElementChange)leftChanges.iterator().next(); + assertEquals(1, leftChange.getRefinedBy().size()); + assertTrue(leftChange.getRefinedBy().get(0) instanceof ReferenceChange); + assertEquals(DifferenceKind.DELETE, leftChange.getKind()); + + assertEquals(1, size(rightChanges)); + MultiplicityElementChange rightChange = (MultiplicityElementChange)rightChanges.iterator().next(); + assertEquals(1, rightChange.getRefinedBy().size()); + assertTrue(rightChange.getRefinedBy().get(0) instanceof AttributeChange); + assertEquals(DifferenceKind.CHANGE, rightChange.getKind()); + + assertEquals(0, comparison.getConflicts().size()); + + } + + /** + * <b>origin:</b> an activity with an input pin, with a lower and upper value <br> + * <b>left:</b> multiplicity upper value is removed <br> + * <b>right:</b> multiplicity upper value is removed <br> + */ + @Compare(left = "a8/left.uml", right = "a8/right.uml", ancestor = "a8/origin.uml") + public void testRemovePseudoConflict(Comparison comparison) throws IOException { + EList<Diff> diffs = comparison.getDifferences(); + Iterable<Diff> leftChanges = filter(diffs, and(IS_MULTIPLICITY_CHANGE, fromSide(LEFT))); + Iterable<Diff> rightChanges = filter(diffs, and(IS_MULTIPLICITY_CHANGE, fromSide(RIGHT))); + + assertEquals(1, size(leftChanges)); + assertEquals(1, size(rightChanges)); + + MultiplicityElementChange leftChange = (MultiplicityElementChange)leftChanges.iterator().next(); + assertEquals(1, leftChange.getRefinedBy().size()); + assertTrue(leftChange.getRefinedBy().get(0) instanceof ReferenceChange); + assertEquals(DifferenceKind.DELETE, leftChange.getKind()); + + MultiplicityElementChange rightChange = (MultiplicityElementChange)rightChanges.iterator().next(); + assertEquals(1, rightChange.getRefinedBy().size()); + assertTrue(rightChange.getRefinedBy().get(0) instanceof ReferenceChange); + assertEquals(DifferenceKind.DELETE, rightChange.getKind()); + + assertEquals(1, comparison.getConflicts().size()); + Conflict conflict = comparison.getConflicts().get(0); + assertEquals(ConflictKind.PSEUDO, conflict.getKind()); + + } + + /** + * <b>origin:</b> an activity with an input pin, with an upper value <br> + * <b>left:</b> multiplicity upper value is removed <br> + * <b>right:</b> multiplicity lower value is added <br> + */ + @Compare(left = "a9/left.uml", right = "a9/right.uml", ancestor = "a9/origin.uml") + public void testRemoveAndAddNoConflict(Comparison comparison) throws IOException { + EList<Diff> diffs = comparison.getDifferences(); + Iterable<Diff> leftChanges = filter(diffs, and(IS_MULTIPLICITY_CHANGE, fromSide(LEFT))); + Iterable<Diff> rightChanges = filter(diffs, and(IS_MULTIPLICITY_CHANGE, fromSide(RIGHT))); + + assertEquals(1, size(leftChanges)); + assertEquals(1, size(rightChanges)); + + MultiplicityElementChange leftChange = (MultiplicityElementChange)leftChanges.iterator().next(); + assertEquals(1, leftChange.getRefinedBy().size()); + assertTrue(leftChange.getRefinedBy().get(0) instanceof ReferenceChange); + assertEquals(DifferenceKind.DELETE, leftChange.getKind()); + + MultiplicityElementChange rightChange = (MultiplicityElementChange)rightChanges.iterator().next(); + assertEquals(1, rightChange.getRefinedBy().size()); + assertTrue(rightChange.getRefinedBy().get(0) instanceof ReferenceChange); + assertEquals(DifferenceKind.ADD, rightChange.getKind()); + + assertEquals(0, comparison.getConflicts().size()); + } + + /** + * <b>origin:</b> an activity with an input pin, with an upper value <br> + * <b>left:</b> multiplicity upper (0) and lower (1) value are added<br> + * <b>right:</b> multiplicity upper (1) and lower (1) value are added<br> + * These changes should produce a real and a pseudo conflict for the same multiplicity change + */ + @Compare(left = "a10/left.uml", right = "a10/right.uml", ancestor = "a10/origin.uml") + public void testRealAndPseudoConflict(Comparison comparison) throws IOException { + EList<Diff> diffs = comparison.getDifferences(); + ArrayList<Diff> leftChanges = Lists.newArrayList(filter(diffs, and(IS_MULTIPLICITY_CHANGE, + fromSide(LEFT)))); + ArrayList<Diff> rightChanges = Lists.newArrayList(filter(diffs, and(IS_MULTIPLICITY_CHANGE, + fromSide(RIGHT)))); + + assertEquals(2, size(leftChanges)); + assertEquals(2, size(rightChanges)); + + MultiplicityElementChange leftChange1 = (MultiplicityElementChange)leftChanges.get(0); + assertEquals(1, leftChange1.getRefinedBy().size()); + assertTrue(leftChange1.getRefinedBy().get(0) instanceof ReferenceChange); + assertEquals(DifferenceKind.ADD, leftChange1.getKind()); + + MultiplicityElementChange leftChange2 = (MultiplicityElementChange)leftChanges.get(1); + assertEquals(1, leftChange2.getRefinedBy().size()); + assertTrue(leftChange2.getRefinedBy().get(0) instanceof ReferenceChange); + assertEquals(DifferenceKind.ADD, leftChange2.getKind()); + + MultiplicityElementChange rightChange1 = (MultiplicityElementChange)rightChanges.get(0); + assertEquals(1, rightChange1.getRefinedBy().size()); + assertTrue(rightChange1.getRefinedBy().get(0) instanceof ReferenceChange); + assertEquals(DifferenceKind.ADD, rightChange1.getKind()); + + MultiplicityElementChange rightChange2 = (MultiplicityElementChange)rightChanges.get(1); + assertEquals(1, rightChange2.getRefinedBy().size()); + assertTrue(rightChange2.getRefinedBy().get(0) instanceof ReferenceChange); + assertEquals(DifferenceKind.ADD, rightChange2.getKind()); + + assertEquals(2, comparison.getConflicts().size()); + Conflict conflict1 = comparison.getConflicts().get(0); + Conflict conflict2 = comparison.getConflicts().get(1); + + if (conflict1.getKind() == ConflictKind.PSEUDO) { + assertEquals(ConflictKind.REAL, conflict2.getKind()); + } else { + assertEquals(ConflictKind.PSEUDO, conflict2.getKind()); + } + + if (isUpperValueChange(leftChange1)) { + assertTrue(isLowerValueChange(leftChange2)); + assertNotNull(leftChange1.getConflict()); + assertEquals(ConflictKind.REAL, leftChange1.getConflict().getKind()); + assertNotNull(leftChange2.getConflict()); + assertEquals(ConflictKind.PSEUDO, leftChange2.getConflict().getKind()); + } else { + assertTrue(isLowerValueChange(leftChange1)); + assertTrue(isUpperValueChange(leftChange2)); + assertNotNull(leftChange1.getConflict()); + assertEquals(ConflictKind.PSEUDO, leftChange1.getConflict().getKind()); + assertNotNull(leftChange2.getConflict()); + assertEquals(ConflictKind.REAL, leftChange2.getConflict().getKind()); + } + + if (isUpperValueChange(rightChange1)) { + assertTrue(isLowerValueChange(rightChange2)); + assertNotNull(rightChange1.getConflict()); + assertEquals(ConflictKind.REAL, rightChange1.getConflict().getKind()); + assertNotNull(rightChange2.getConflict()); + assertEquals(ConflictKind.PSEUDO, rightChange2.getConflict().getKind()); + } else { + assertTrue(isLowerValueChange(rightChange1)); + assertTrue(isUpperValueChange(rightChange2)); + assertNotNull(rightChange1.getConflict()); + assertEquals(ConflictKind.PSEUDO, rightChange1.getConflict().getKind()); + assertNotNull(rightChange2.getConflict()); + assertEquals(ConflictKind.REAL, rightChange2.getConflict().getKind()); + } + + } + + private boolean isLowerValueChange(MultiplicityElementChange multiplicityElementChange) { + if (multiplicityElementChange.getRefinedBy().size() != 1) { + return false; + } + return IS_LOWER_VALUE_CHANGE.apply(multiplicityElementChange.getRefinedBy().get(0)); + } + + private boolean isUpperValueChange(MultiplicityElementChange multiplicityElementChange) { + if (multiplicityElementChange.getRefinedBy().size() != 1) { + return false; + } + return IS_UPPER_VALUE_CHANGE.apply(multiplicityElementChange.getRefinedBy().get(0)); + } + + /** + * <b>origin:</b> an activity with an input pin, with a lower value <br> + * <b>left:</b> multiplicity lower value is deleted and upper value is added (0)<br> + * <b>right:</b> multiplicity upper value is added, with the same value as in the left change and the + * lower value is changed to a different value than the one in the left change<br> + * These changes should produce a real and a pseudo conflict for the same multiplicity change + */ + @Compare(left = "a11/left.uml", right = "a11/right.uml", ancestor = "a11/origin.uml") + public void testRealAndPseudoConflictWithChangeAndDelete(Comparison comparison) throws IOException { + EList<Diff> diffs = comparison.getDifferences(); + ArrayList<Diff> leftChanges = Lists.newArrayList(filter(diffs, and(IS_MULTIPLICITY_CHANGE, + fromSide(LEFT)))); + ArrayList<Diff> rightChanges = Lists.newArrayList(filter(diffs, and(IS_MULTIPLICITY_CHANGE, + fromSide(RIGHT)))); + + assertEquals(2, size(leftChanges)); + assertEquals(2, size(rightChanges)); + + MultiplicityElementChange leftAddChange; + MultiplicityElementChange leftDeleteChange; + + if (leftChanges.get(0).getKind() == DifferenceKind.ADD) { + leftAddChange = (MultiplicityElementChange)leftChanges.get(0); + leftDeleteChange = (MultiplicityElementChange)leftChanges.get(1); + } else { + leftAddChange = (MultiplicityElementChange)leftChanges.get(1); + leftDeleteChange = (MultiplicityElementChange)leftChanges.get(0); + } + + assertEquals(1, leftAddChange.getRefinedBy().size()); + assertTrue(leftAddChange.getRefinedBy().get(0) instanceof ReferenceChange); + assertEquals(DifferenceKind.ADD, leftAddChange.getKind()); + + assertEquals(1, leftDeleteChange.getRefinedBy().size()); + assertTrue(leftDeleteChange.getRefinedBy().get(0) instanceof ReferenceChange); + assertEquals(DifferenceKind.DELETE, leftDeleteChange.getKind()); + + MultiplicityElementChange rightChange; + MultiplicityElementChange rightAddChange; + + if (rightChanges.get(0).getKind() == DifferenceKind.ADD) { + rightAddChange = (MultiplicityElementChange)rightChanges.get(0); + rightChange = (MultiplicityElementChange)rightChanges.get(1); + } else { + rightAddChange = (MultiplicityElementChange)rightChanges.get(1); + rightChange = (MultiplicityElementChange)rightChanges.get(0); + } + + assertEquals(1, rightAddChange.getRefinedBy().size()); + assertTrue(rightAddChange.getRefinedBy().get(0) instanceof ReferenceChange); + assertEquals(DifferenceKind.ADD, rightAddChange.getKind()); + + assertEquals(1, rightChange.getRefinedBy().size()); + assertTrue(rightChange.getRefinedBy().get(0) instanceof AttributeChange); + assertEquals(DifferenceKind.CHANGE, rightChange.getKind()); + + assertEquals(2, comparison.getConflicts().size()); + Conflict conflict1 = comparison.getConflicts().get(0); + Conflict conflict2 = comparison.getConflicts().get(1); + + if (conflict1.getKind() == ConflictKind.PSEUDO) { + assertEquals(ConflictKind.REAL, conflict2.getKind()); + } else { + assertEquals(ConflictKind.PSEUDO, conflict2.getKind()); + } + assertEquals(ConflictKind.REAL, leftDeleteChange.getConflict().getKind()); + assertEquals(leftDeleteChange.getConflict(), rightChange.getConflict()); + assertEquals(ConflictKind.PSEUDO, leftAddChange.getConflict().getKind()); + assertEquals(leftAddChange.getConflict(), rightAddChange.getConflict()); + } + + // @Override + // protected void registerPostProcessors( + // org.eclipse.emf.compare.postprocessor.IPostProcessor.Descriptor.Registry<String> postProcessorRegistry) + // { + // super.registerPostProcessors(postProcessorRegistry); + // postProcessorRegistry.put(MultiplicityElementChangePostProcessor.class.getName(), + // new TestPostProcessor.TestPostProcessorDescriptor(Pattern + // .compile("http://www.eclipse.org/uml2/\\d\\.0\\.0/UML"), null, //$NON-NLS-1$ + // new MultiplicityElementChangePostProcessor(), 25)); + // } +} diff --git a/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a1/left.uml b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a1/left.uml new file mode 100644 index 000000000..8750ba0ac --- /dev/null +++ b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a1/left.uml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_M2-I4L6KEeWfFPKKpMWCyw" name="RootElement"> + <packagedElement xmi:type="uml:Activity" xmi:id="_Qrq3oL6MEeWfFPKKpMWCyw" name="Activity1" node="_SgUFEL6MEeWfFPKKpMWCyw"> + <node xmi:type="uml:ActionInputPin" xmi:id="_SgUFEL6MEeWfFPKKpMWCyw" name="ActionInputPin1"> + <upperBound xmi:type="uml:LiteralInteger" xmi:id="_SgdPAL6MEeWfFPKKpMWCyw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_g7jmoL6MEeWfFPKKpMWCyw" value="1"/> + </node> + </packagedElement> +</uml:Model> diff --git a/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a1/origin.uml b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a1/origin.uml new file mode 100644 index 000000000..530742ca6 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a1/origin.uml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_M2-I4L6KEeWfFPKKpMWCyw" name="RootElement"> + <packagedElement xmi:type="uml:Activity" xmi:id="_Qrq3oL6MEeWfFPKKpMWCyw" name="Activity1" node="_SgUFEL6MEeWfFPKKpMWCyw"> + <node xmi:type="uml:ActionInputPin" xmi:id="_SgUFEL6MEeWfFPKKpMWCyw" name="ActionInputPin1"> + <upperBound xmi:type="uml:LiteralInteger" xmi:id="_SgdPAL6MEeWfFPKKpMWCyw" value="1"/> + </node> + </packagedElement> +</uml:Model> diff --git a/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a1/right.uml b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a1/right.uml new file mode 100644 index 000000000..3de259bc5 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a1/right.uml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_M2-I4L6KEeWfFPKKpMWCyw" name="RootElement"> + <packagedElement xmi:type="uml:Activity" xmi:id="_Qrq3oL6MEeWfFPKKpMWCyw" name="Activity1" node="_SgUFEL6MEeWfFPKKpMWCyw"> + <node xmi:type="uml:ActionInputPin" xmi:id="_SgUFEL6MEeWfFPKKpMWCyw" name="ActionInputPin1"> + <upperBound xmi:type="uml:LiteralInteger" xmi:id="_SgdPAL6MEeWfFPKKpMWCyw" value="1"/> + <upperValue xmi:type="uml:LiteralInteger" xmi:id="_y4nCEL6MEeWfFPKKpMWCyw" value="2"/> + </node> + </packagedElement> +</uml:Model> diff --git a/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a10/left.uml b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a10/left.uml new file mode 100644 index 000000000..6da8962cd --- /dev/null +++ b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a10/left.uml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_M2-I4L6KEeWfFPKKpMWCyw" name="RootElement"> + <packagedElement xmi:type="uml:Activity" xmi:id="_Qrq3oL6MEeWfFPKKpMWCyw" name="Activity1" node="_SgUFEL6MEeWfFPKKpMWCyw"> + <node xmi:type="uml:ActionInputPin" xmi:id="_SgUFEL6MEeWfFPKKpMWCyw" name="ActionInputPin1"> + <upperBound xmi:type="uml:LiteralInteger" xmi:id="_SgdPAL6MEeWfFPKKpMWCyw" value="1"/> + <upperValue xmi:type="uml:LiteralInteger" xmi:id="_WPbo4L6REeWfFPKKpMWCyw" value="0"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_g7jmoL6MEeWfFPKKpMWCyw" value="1"/> + </node> + </packagedElement> +</uml:Model> diff --git a/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a10/origin.uml b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a10/origin.uml new file mode 100644 index 000000000..530742ca6 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a10/origin.uml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_M2-I4L6KEeWfFPKKpMWCyw" name="RootElement"> + <packagedElement xmi:type="uml:Activity" xmi:id="_Qrq3oL6MEeWfFPKKpMWCyw" name="Activity1" node="_SgUFEL6MEeWfFPKKpMWCyw"> + <node xmi:type="uml:ActionInputPin" xmi:id="_SgUFEL6MEeWfFPKKpMWCyw" name="ActionInputPin1"> + <upperBound xmi:type="uml:LiteralInteger" xmi:id="_SgdPAL6MEeWfFPKKpMWCyw" value="1"/> + </node> + </packagedElement> +</uml:Model> diff --git a/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a10/right.uml b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a10/right.uml new file mode 100644 index 000000000..44a0d8e47 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a10/right.uml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_M2-I4L6KEeWfFPKKpMWCyw" name="RootElement"> + <packagedElement xmi:type="uml:Activity" xmi:id="_Qrq3oL6MEeWfFPKKpMWCyw" name="Activity1" node="_SgUFEL6MEeWfFPKKpMWCyw"> + <node xmi:type="uml:ActionInputPin" xmi:id="_SgUFEL6MEeWfFPKKpMWCyw" name="ActionInputPin1"> + <upperBound xmi:type="uml:LiteralInteger" xmi:id="_SgdPAL6MEeWfFPKKpMWCyw" value="1"/> + <upperValue xmi:type="uml:LiteralInteger" xmi:id="_bXa-MWYwEeWdseMo2ly0ug" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jPlpwGYvEeWdseMo2ly0ug" value="1"/> + </node> + </packagedElement> +</uml:Model> diff --git a/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a11/left.uml b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a11/left.uml new file mode 100644 index 000000000..fd39ace1f --- /dev/null +++ b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a11/left.uml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_M2-I4L6KEeWfFPKKpMWCyw" name="RootElement"> + <packagedElement xmi:type="uml:Activity" xmi:id="_Qrq3oL6MEeWfFPKKpMWCyw" name="Activity1" node="_SgUFEL6MEeWfFPKKpMWCyw"> + <node xmi:type="uml:ActionInputPin" xmi:id="_SgUFEL6MEeWfFPKKpMWCyw" name="ActionInputPin1"> + <upperBound xmi:type="uml:LiteralInteger" xmi:id="_SgdPAL6MEeWfFPKKpMWCyw" value="1"/> + <upperValue xmi:type="uml:LiteralInteger" xmi:id="_WPbo4L6REeWfFPKKpMWCyw" value="0"/> + </node> + </packagedElement> +</uml:Model> diff --git a/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a11/origin.uml b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a11/origin.uml new file mode 100644 index 000000000..8750ba0ac --- /dev/null +++ b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a11/origin.uml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_M2-I4L6KEeWfFPKKpMWCyw" name="RootElement"> + <packagedElement xmi:type="uml:Activity" xmi:id="_Qrq3oL6MEeWfFPKKpMWCyw" name="Activity1" node="_SgUFEL6MEeWfFPKKpMWCyw"> + <node xmi:type="uml:ActionInputPin" xmi:id="_SgUFEL6MEeWfFPKKpMWCyw" name="ActionInputPin1"> + <upperBound xmi:type="uml:LiteralInteger" xmi:id="_SgdPAL6MEeWfFPKKpMWCyw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_g7jmoL6MEeWfFPKKpMWCyw" value="1"/> + </node> + </packagedElement> +</uml:Model> diff --git a/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a11/right.uml b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a11/right.uml new file mode 100644 index 000000000..9f1166561 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a11/right.uml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_M2-I4L6KEeWfFPKKpMWCyw" name="RootElement"> + <packagedElement xmi:type="uml:Activity" xmi:id="_Qrq3oL6MEeWfFPKKpMWCyw" name="Activity1" node="_SgUFEL6MEeWfFPKKpMWCyw"> + <node xmi:type="uml:ActionInputPin" xmi:id="_SgUFEL6MEeWfFPKKpMWCyw" name="ActionInputPin1"> + <upperBound xmi:type="uml:LiteralInteger" xmi:id="_SgdPAL6MEeWfFPKKpMWCyw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_g7jmoL6MEeWfFPKKpMWCyw" value="2"/> + <upperValue xmi:type="uml:LiteralInteger" xmi:id="_1234L6REeWfFPKKpMWCyw" value="0"/> + </node> + </packagedElement> +</uml:Model> diff --git a/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a2/left.uml b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a2/left.uml new file mode 100644 index 000000000..ad48eeefa --- /dev/null +++ b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a2/left.uml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_M2-I4L6KEeWfFPKKpMWCyw" name="RootElement"> + <packagedElement xmi:type="uml:Activity" xmi:id="_Qrq3oL6MEeWfFPKKpMWCyw" name="Activity1" node="_SgUFEL6MEeWfFPKKpMWCyw"> + <node xmi:type="uml:ActionInputPin" xmi:id="_SgUFEL6MEeWfFPKKpMWCyw" name="ActionInputPin1"> + <upperBound xmi:type="uml:LiteralInteger" xmi:id="_SgdPAL6MEeWfFPKKpMWCyw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Fic2AWYwEeWdseMo2ly0ug" value="1"/> + </node> + </packagedElement> +</uml:Model> diff --git a/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a2/origin.uml b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a2/origin.uml new file mode 100644 index 000000000..530742ca6 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a2/origin.uml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_M2-I4L6KEeWfFPKKpMWCyw" name="RootElement"> + <packagedElement xmi:type="uml:Activity" xmi:id="_Qrq3oL6MEeWfFPKKpMWCyw" name="Activity1" node="_SgUFEL6MEeWfFPKKpMWCyw"> + <node xmi:type="uml:ActionInputPin" xmi:id="_SgUFEL6MEeWfFPKKpMWCyw" name="ActionInputPin1"> + <upperBound xmi:type="uml:LiteralInteger" xmi:id="_SgdPAL6MEeWfFPKKpMWCyw" value="1"/> + </node> + </packagedElement> +</uml:Model> diff --git a/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a2/right.uml b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a2/right.uml new file mode 100644 index 000000000..171c268e6 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a2/right.uml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_M2-I4L6KEeWfFPKKpMWCyw" name="RootElement"> + <packagedElement xmi:type="uml:Activity" xmi:id="_Qrq3oL6MEeWfFPKKpMWCyw" name="Activity1" node="_SgUFEL6MEeWfFPKKpMWCyw"> + <node xmi:type="uml:ActionInputPin" xmi:id="_SgUFEL6MEeWfFPKKpMWCyw" name="ActionInputPin1"> + <upperBound xmi:type="uml:LiteralInteger" xmi:id="_SgdPAL6MEeWfFPKKpMWCyw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_g7jmoL6MEeWfFPKKpMWCyw" value="1"/> + <upperValue xmi:type="uml:LiteralInteger" xmi:id="_WPbo4L6REeWfFPKKpMWCyw" value="2"/> + </node> + </packagedElement> +</uml:Model> diff --git a/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a3/left.uml b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a3/left.uml new file mode 100644 index 000000000..7e3fc4c56 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a3/left.uml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_M2-I4L6KEeWfFPKKpMWCyw" name="RootElement"> + <packagedElement xmi:type="uml:Activity" xmi:id="_Qrq3oL6MEeWfFPKKpMWCyw" name="Activity1" node="_SgUFEL6MEeWfFPKKpMWCyw"> + <node xmi:type="uml:ActionInputPin" xmi:id="_SgUFEL6MEeWfFPKKpMWCyw" name="ActionInputPin1"> + <upperBound xmi:type="uml:LiteralInteger" xmi:id="_SgdPAL6MEeWfFPKKpMWCyw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_g7jmoL6MEeWfFPKKpMWCyw" value="2"/> + </node> + </packagedElement> +</uml:Model> diff --git a/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a3/origin.uml b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a3/origin.uml new file mode 100644 index 000000000..530742ca6 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a3/origin.uml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_M2-I4L6KEeWfFPKKpMWCyw" name="RootElement"> + <packagedElement xmi:type="uml:Activity" xmi:id="_Qrq3oL6MEeWfFPKKpMWCyw" name="Activity1" node="_SgUFEL6MEeWfFPKKpMWCyw"> + <node xmi:type="uml:ActionInputPin" xmi:id="_SgUFEL6MEeWfFPKKpMWCyw" name="ActionInputPin1"> + <upperBound xmi:type="uml:LiteralInteger" xmi:id="_SgdPAL6MEeWfFPKKpMWCyw" value="1"/> + </node> + </packagedElement> +</uml:Model> diff --git a/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a3/right.uml b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a3/right.uml new file mode 100644 index 000000000..7e95aa91d --- /dev/null +++ b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a3/right.uml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_M2-I4L6KEeWfFPKKpMWCyw" name="RootElement"> + <packagedElement xmi:type="uml:Activity" xmi:id="_Qrq3oL6MEeWfFPKKpMWCyw" name="Activity1" node="_SgUFEL6MEeWfFPKKpMWCyw"> + <node xmi:type="uml:ActionInputPin" xmi:id="_SgUFEL6MEeWfFPKKpMWCyw" name="ActionInputPin1"> + <upperBound xmi:type="uml:LiteralInteger" xmi:id="_SgdPAL6MEeWfFPKKpMWCyw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Fic2AWYwEeWdseMo2ly0ug" value="1"/> + <upperValue xmi:type="uml:LiteralInteger" xmi:id="_WPbo4L6REeWfFPKKpMWCyw" value="1"/> + </node> + </packagedElement> +</uml:Model> diff --git a/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a4/left.uml b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a4/left.uml new file mode 100644 index 000000000..b9fd37539 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a4/left.uml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_M2-I4L6KEeWfFPKKpMWCyw" name="RootElement"> + <packagedElement xmi:type="uml:Activity" xmi:id="_Qrq3oL6MEeWfFPKKpMWCyw" name="Activity1" node="_SgUFEL6MEeWfFPKKpMWCyw"> + <node xmi:type="uml:ActionInputPin" xmi:id="_SgUFEL6MEeWfFPKKpMWCyw" name="ActionInputPin1"> + <upperBound xmi:type="uml:LiteralInteger" xmi:id="_SgdPAL6MEeWfFPKKpMWCyw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_g7jmoL6MEeWfFPKKpMWCyw" value="1"/> + <upperValue xmi:type="uml:LiteralInteger" xmi:id="_WPbo4L6REeWfFPKKpMWCyw" value="0"/> + </node> + </packagedElement> +</uml:Model> diff --git a/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a4/origin.uml b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a4/origin.uml new file mode 100644 index 000000000..42239eabf --- /dev/null +++ b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a4/origin.uml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_M2-I4L6KEeWfFPKKpMWCyw" name="RootElement"> + <packagedElement xmi:type="uml:Activity" xmi:id="_Qrq3oL6MEeWfFPKKpMWCyw" name="Activity1" node="_SgUFEL6MEeWfFPKKpMWCyw"> + <node xmi:type="uml:ActionInputPin" xmi:id="_SgUFEL6MEeWfFPKKpMWCyw" name="ActionInputPin1"> + <upperBound xmi:type="uml:LiteralInteger" xmi:id="_SgdPAL6MEeWfFPKKpMWCyw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_g7jmoL6MEeWfFPKKpMWCyw" value="0"/> + <upperValue xmi:type="uml:LiteralInteger" xmi:id="_WPbo4L6REeWfFPKKpMWCyw" value="0"/> + </node> + </packagedElement> +</uml:Model> diff --git a/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a4/right.uml b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a4/right.uml new file mode 100644 index 000000000..76f3de022 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a4/right.uml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_M2-I4L6KEeWfFPKKpMWCyw" name="RootElement"> + <packagedElement xmi:type="uml:Activity" xmi:id="_Qrq3oL6MEeWfFPKKpMWCyw" name="Activity1" node="_SgUFEL6MEeWfFPKKpMWCyw"> + <node xmi:type="uml:ActionInputPin" xmi:id="_SgUFEL6MEeWfFPKKpMWCyw" name="ActionInputPin1"> + <upperBound xmi:type="uml:LiteralInteger" xmi:id="_SgdPAL6MEeWfFPKKpMWCyw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_g7jmoL6MEeWfFPKKpMWCyw" value="2"/> + <upperValue xmi:type="uml:LiteralInteger" xmi:id="_WPbo4L6REeWfFPKKpMWCyw" value="0"/> + </node> + </packagedElement> +</uml:Model> diff --git a/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a5/left.uml b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a5/left.uml new file mode 100644 index 000000000..b9fd37539 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a5/left.uml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_M2-I4L6KEeWfFPKKpMWCyw" name="RootElement"> + <packagedElement xmi:type="uml:Activity" xmi:id="_Qrq3oL6MEeWfFPKKpMWCyw" name="Activity1" node="_SgUFEL6MEeWfFPKKpMWCyw"> + <node xmi:type="uml:ActionInputPin" xmi:id="_SgUFEL6MEeWfFPKKpMWCyw" name="ActionInputPin1"> + <upperBound xmi:type="uml:LiteralInteger" xmi:id="_SgdPAL6MEeWfFPKKpMWCyw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_g7jmoL6MEeWfFPKKpMWCyw" value="1"/> + <upperValue xmi:type="uml:LiteralInteger" xmi:id="_WPbo4L6REeWfFPKKpMWCyw" value="0"/> + </node> + </packagedElement> +</uml:Model> diff --git a/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a5/origin.uml b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a5/origin.uml new file mode 100644 index 000000000..42239eabf --- /dev/null +++ b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a5/origin.uml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_M2-I4L6KEeWfFPKKpMWCyw" name="RootElement"> + <packagedElement xmi:type="uml:Activity" xmi:id="_Qrq3oL6MEeWfFPKKpMWCyw" name="Activity1" node="_SgUFEL6MEeWfFPKKpMWCyw"> + <node xmi:type="uml:ActionInputPin" xmi:id="_SgUFEL6MEeWfFPKKpMWCyw" name="ActionInputPin1"> + <upperBound xmi:type="uml:LiteralInteger" xmi:id="_SgdPAL6MEeWfFPKKpMWCyw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_g7jmoL6MEeWfFPKKpMWCyw" value="0"/> + <upperValue xmi:type="uml:LiteralInteger" xmi:id="_WPbo4L6REeWfFPKKpMWCyw" value="0"/> + </node> + </packagedElement> +</uml:Model> diff --git a/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a5/right.uml b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a5/right.uml new file mode 100644 index 000000000..b9fd37539 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a5/right.uml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_M2-I4L6KEeWfFPKKpMWCyw" name="RootElement"> + <packagedElement xmi:type="uml:Activity" xmi:id="_Qrq3oL6MEeWfFPKKpMWCyw" name="Activity1" node="_SgUFEL6MEeWfFPKKpMWCyw"> + <node xmi:type="uml:ActionInputPin" xmi:id="_SgUFEL6MEeWfFPKKpMWCyw" name="ActionInputPin1"> + <upperBound xmi:type="uml:LiteralInteger" xmi:id="_SgdPAL6MEeWfFPKKpMWCyw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_g7jmoL6MEeWfFPKKpMWCyw" value="1"/> + <upperValue xmi:type="uml:LiteralInteger" xmi:id="_WPbo4L6REeWfFPKKpMWCyw" value="0"/> + </node> + </packagedElement> +</uml:Model> diff --git a/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a6/left.uml b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a6/left.uml new file mode 100644 index 000000000..b9fd37539 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a6/left.uml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_M2-I4L6KEeWfFPKKpMWCyw" name="RootElement"> + <packagedElement xmi:type="uml:Activity" xmi:id="_Qrq3oL6MEeWfFPKKpMWCyw" name="Activity1" node="_SgUFEL6MEeWfFPKKpMWCyw"> + <node xmi:type="uml:ActionInputPin" xmi:id="_SgUFEL6MEeWfFPKKpMWCyw" name="ActionInputPin1"> + <upperBound xmi:type="uml:LiteralInteger" xmi:id="_SgdPAL6MEeWfFPKKpMWCyw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_g7jmoL6MEeWfFPKKpMWCyw" value="1"/> + <upperValue xmi:type="uml:LiteralInteger" xmi:id="_WPbo4L6REeWfFPKKpMWCyw" value="0"/> + </node> + </packagedElement> +</uml:Model> diff --git a/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a6/origin.uml b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a6/origin.uml new file mode 100644 index 000000000..42239eabf --- /dev/null +++ b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a6/origin.uml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_M2-I4L6KEeWfFPKKpMWCyw" name="RootElement"> + <packagedElement xmi:type="uml:Activity" xmi:id="_Qrq3oL6MEeWfFPKKpMWCyw" name="Activity1" node="_SgUFEL6MEeWfFPKKpMWCyw"> + <node xmi:type="uml:ActionInputPin" xmi:id="_SgUFEL6MEeWfFPKKpMWCyw" name="ActionInputPin1"> + <upperBound xmi:type="uml:LiteralInteger" xmi:id="_SgdPAL6MEeWfFPKKpMWCyw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_g7jmoL6MEeWfFPKKpMWCyw" value="0"/> + <upperValue xmi:type="uml:LiteralInteger" xmi:id="_WPbo4L6REeWfFPKKpMWCyw" value="0"/> + </node> + </packagedElement> +</uml:Model> diff --git a/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a6/right.uml b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a6/right.uml new file mode 100644 index 000000000..530742ca6 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a6/right.uml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_M2-I4L6KEeWfFPKKpMWCyw" name="RootElement"> + <packagedElement xmi:type="uml:Activity" xmi:id="_Qrq3oL6MEeWfFPKKpMWCyw" name="Activity1" node="_SgUFEL6MEeWfFPKKpMWCyw"> + <node xmi:type="uml:ActionInputPin" xmi:id="_SgUFEL6MEeWfFPKKpMWCyw" name="ActionInputPin1"> + <upperBound xmi:type="uml:LiteralInteger" xmi:id="_SgdPAL6MEeWfFPKKpMWCyw" value="1"/> + </node> + </packagedElement> +</uml:Model> diff --git a/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a7/left.uml b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a7/left.uml new file mode 100644 index 000000000..bea951449 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a7/left.uml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_M2-I4L6KEeWfFPKKpMWCyw" name="RootElement"> + <packagedElement xmi:type="uml:Activity" xmi:id="_Qrq3oL6MEeWfFPKKpMWCyw" name="Activity1" node="_SgUFEL6MEeWfFPKKpMWCyw"> + <node xmi:type="uml:ActionInputPin" xmi:id="_SgUFEL6MEeWfFPKKpMWCyw" name="ActionInputPin1"> + <upperBound xmi:type="uml:LiteralInteger" xmi:id="_SgdPAL6MEeWfFPKKpMWCyw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_g7jmoL6MEeWfFPKKpMWCyw" value="0"/> + </node> + </packagedElement> +</uml:Model> diff --git a/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a7/origin.uml b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a7/origin.uml new file mode 100644 index 000000000..42239eabf --- /dev/null +++ b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a7/origin.uml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_M2-I4L6KEeWfFPKKpMWCyw" name="RootElement"> + <packagedElement xmi:type="uml:Activity" xmi:id="_Qrq3oL6MEeWfFPKKpMWCyw" name="Activity1" node="_SgUFEL6MEeWfFPKKpMWCyw"> + <node xmi:type="uml:ActionInputPin" xmi:id="_SgUFEL6MEeWfFPKKpMWCyw" name="ActionInputPin1"> + <upperBound xmi:type="uml:LiteralInteger" xmi:id="_SgdPAL6MEeWfFPKKpMWCyw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_g7jmoL6MEeWfFPKKpMWCyw" value="0"/> + <upperValue xmi:type="uml:LiteralInteger" xmi:id="_WPbo4L6REeWfFPKKpMWCyw" value="0"/> + </node> + </packagedElement> +</uml:Model> diff --git a/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a7/right.uml b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a7/right.uml new file mode 100644 index 000000000..b9fd37539 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a7/right.uml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_M2-I4L6KEeWfFPKKpMWCyw" name="RootElement"> + <packagedElement xmi:type="uml:Activity" xmi:id="_Qrq3oL6MEeWfFPKKpMWCyw" name="Activity1" node="_SgUFEL6MEeWfFPKKpMWCyw"> + <node xmi:type="uml:ActionInputPin" xmi:id="_SgUFEL6MEeWfFPKKpMWCyw" name="ActionInputPin1"> + <upperBound xmi:type="uml:LiteralInteger" xmi:id="_SgdPAL6MEeWfFPKKpMWCyw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_g7jmoL6MEeWfFPKKpMWCyw" value="1"/> + <upperValue xmi:type="uml:LiteralInteger" xmi:id="_WPbo4L6REeWfFPKKpMWCyw" value="0"/> + </node> + </packagedElement> +</uml:Model> diff --git a/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a8/left.uml b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a8/left.uml new file mode 100644 index 000000000..bea951449 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a8/left.uml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_M2-I4L6KEeWfFPKKpMWCyw" name="RootElement"> + <packagedElement xmi:type="uml:Activity" xmi:id="_Qrq3oL6MEeWfFPKKpMWCyw" name="Activity1" node="_SgUFEL6MEeWfFPKKpMWCyw"> + <node xmi:type="uml:ActionInputPin" xmi:id="_SgUFEL6MEeWfFPKKpMWCyw" name="ActionInputPin1"> + <upperBound xmi:type="uml:LiteralInteger" xmi:id="_SgdPAL6MEeWfFPKKpMWCyw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_g7jmoL6MEeWfFPKKpMWCyw" value="0"/> + </node> + </packagedElement> +</uml:Model> diff --git a/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a8/origin.uml b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a8/origin.uml new file mode 100644 index 000000000..42239eabf --- /dev/null +++ b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a8/origin.uml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_M2-I4L6KEeWfFPKKpMWCyw" name="RootElement"> + <packagedElement xmi:type="uml:Activity" xmi:id="_Qrq3oL6MEeWfFPKKpMWCyw" name="Activity1" node="_SgUFEL6MEeWfFPKKpMWCyw"> + <node xmi:type="uml:ActionInputPin" xmi:id="_SgUFEL6MEeWfFPKKpMWCyw" name="ActionInputPin1"> + <upperBound xmi:type="uml:LiteralInteger" xmi:id="_SgdPAL6MEeWfFPKKpMWCyw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_g7jmoL6MEeWfFPKKpMWCyw" value="0"/> + <upperValue xmi:type="uml:LiteralInteger" xmi:id="_WPbo4L6REeWfFPKKpMWCyw" value="0"/> + </node> + </packagedElement> +</uml:Model> diff --git a/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a8/right.uml b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a8/right.uml new file mode 100644 index 000000000..bea951449 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a8/right.uml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_M2-I4L6KEeWfFPKKpMWCyw" name="RootElement"> + <packagedElement xmi:type="uml:Activity" xmi:id="_Qrq3oL6MEeWfFPKKpMWCyw" name="Activity1" node="_SgUFEL6MEeWfFPKKpMWCyw"> + <node xmi:type="uml:ActionInputPin" xmi:id="_SgUFEL6MEeWfFPKKpMWCyw" name="ActionInputPin1"> + <upperBound xmi:type="uml:LiteralInteger" xmi:id="_SgdPAL6MEeWfFPKKpMWCyw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_g7jmoL6MEeWfFPKKpMWCyw" value="0"/> + </node> + </packagedElement> +</uml:Model> diff --git a/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a9/left.uml b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a9/left.uml new file mode 100644 index 000000000..530742ca6 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a9/left.uml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_M2-I4L6KEeWfFPKKpMWCyw" name="RootElement"> + <packagedElement xmi:type="uml:Activity" xmi:id="_Qrq3oL6MEeWfFPKKpMWCyw" name="Activity1" node="_SgUFEL6MEeWfFPKKpMWCyw"> + <node xmi:type="uml:ActionInputPin" xmi:id="_SgUFEL6MEeWfFPKKpMWCyw" name="ActionInputPin1"> + <upperBound xmi:type="uml:LiteralInteger" xmi:id="_SgdPAL6MEeWfFPKKpMWCyw" value="1"/> + </node> + </packagedElement> +</uml:Model> diff --git a/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a9/origin.uml b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a9/origin.uml new file mode 100644 index 000000000..fd39ace1f --- /dev/null +++ b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a9/origin.uml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_M2-I4L6KEeWfFPKKpMWCyw" name="RootElement"> + <packagedElement xmi:type="uml:Activity" xmi:id="_Qrq3oL6MEeWfFPKKpMWCyw" name="Activity1" node="_SgUFEL6MEeWfFPKKpMWCyw"> + <node xmi:type="uml:ActionInputPin" xmi:id="_SgUFEL6MEeWfFPKKpMWCyw" name="ActionInputPin1"> + <upperBound xmi:type="uml:LiteralInteger" xmi:id="_SgdPAL6MEeWfFPKKpMWCyw" value="1"/> + <upperValue xmi:type="uml:LiteralInteger" xmi:id="_WPbo4L6REeWfFPKKpMWCyw" value="0"/> + </node> + </packagedElement> +</uml:Model> diff --git a/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a9/right.uml b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a9/right.uml new file mode 100644 index 000000000..76f3de022 --- /dev/null +++ b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/multiplicitychanges/a9/right.uml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_M2-I4L6KEeWfFPKKpMWCyw" name="RootElement"> + <packagedElement xmi:type="uml:Activity" xmi:id="_Qrq3oL6MEeWfFPKKpMWCyw" name="Activity1" node="_SgUFEL6MEeWfFPKKpMWCyw"> + <node xmi:type="uml:ActionInputPin" xmi:id="_SgUFEL6MEeWfFPKKpMWCyw" name="ActionInputPin1"> + <upperBound xmi:type="uml:LiteralInteger" xmi:id="_SgdPAL6MEeWfFPKKpMWCyw" value="1"/> + <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_g7jmoL6MEeWfFPKKpMWCyw" value="2"/> + <upperValue xmi:type="uml:LiteralInteger" xmi:id="_WPbo4L6REeWfFPKKpMWCyw" value="0"/> + </node> + </packagedElement> +</uml:Model> |