Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAxel Richard2013-03-13 09:02:22 +0000
committerAxel Richard2013-03-18 14:01:13 +0000
commita65a3a35cc015367b6608de2cb1ea7043237033c (patch)
tree5cddbd2a9fb4e7b5751a36e3668a41c2d662b73a /plugins/org.eclipse.emf.compare.uml2.tests/src
parent0e5138aaf013f713b261699b137883265896d39d (diff)
downloadorg.eclipse.emf.compare-a65a3a35cc015367b6608de2cb1ea7043237033c.tar.gz
org.eclipse.emf.compare-a65a3a35cc015367b6608de2cb1ea7043237033c.tar.xz
org.eclipse.emf.compare-a65a3a35cc015367b6608de2cb1ea7043237033c.zip
[403187] Ordering post processors
Add an ordinal number attribute to the post processor extension point. The UML Post processor has now an ordinal number superior than the Compare Digaram Post processor. Bug: 403187 Change-Id: I985f5ae19bc1567908a024b5a438594b266cb1db
Diffstat (limited to 'plugins/org.eclipse.emf.compare.uml2.tests/src')
-rw-r--r--plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/AbstractTest.java303
1 files changed, 152 insertions, 151 deletions
diff --git a/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/AbstractTest.java b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/AbstractTest.java
index b8997894f..b8d70ce9d 100644
--- a/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/AbstractTest.java
+++ b/plugins/org.eclipse.emf.compare.uml2.tests/src/org/eclipse/emf/compare/uml2/tests/AbstractTest.java
@@ -1,151 +1,152 @@
-/**
- * Copyright (c) 2012, 2013 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.uml2.tests;
-
-import static org.junit.Assert.assertTrue;
-
-import com.google.common.base.Predicate;
-import com.google.common.collect.Iterators;
-
-import java.util.Iterator;
-import java.util.List;
-import java.util.regex.Pattern;
-
-import org.eclipse.emf.common.notify.Notifier;
-import org.eclipse.emf.common.util.BasicMonitor;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.emf.compare.AttributeChange;
-import org.eclipse.emf.compare.ComparePackage;
-import org.eclipse.emf.compare.Comparison;
-import org.eclipse.emf.compare.Diff;
-import org.eclipse.emf.compare.EMFCompare;
-import org.eclipse.emf.compare.ReferenceChange;
-import org.eclipse.emf.compare.merge.BatchMerger;
-import org.eclipse.emf.compare.merge.IBatchMerger;
-import org.eclipse.emf.compare.merge.IMerger;
-import org.eclipse.emf.compare.postprocessor.PostProcessorDescriptorRegistryImpl;
-import org.eclipse.emf.compare.scope.IComparisonScope;
-import org.eclipse.emf.compare.tests.framework.AbstractInputData;
-import org.eclipse.emf.compare.tests.postprocess.data.TestPostProcessor;
-import org.eclipse.emf.compare.uml2.internal.merge.UMLMerger;
-import org.eclipse.emf.compare.uml2.internal.postprocessor.UMLPostProcessor;
-import org.eclipse.emf.compare.utils.ReferenceUtil;
-import org.eclipse.emf.ecore.EPackage;
-import org.eclipse.emf.ecore.EStructuralFeature;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.uml2.uml.UMLPackage;
-import org.eclipse.uml2.uml.internal.resource.UMLResourceFactoryImpl;
-import org.junit.Before;
-import org.junit.BeforeClass;
-
-@SuppressWarnings("nls")
-public abstract class AbstractTest {
-
- private EMFCompare emfCompare;
-
- private static final IMerger.Registry mergerRegistry = IMerger.RegistryImpl.createStandaloneInstance();
-
- @BeforeClass
- public static void fillRegistries() {
- EPackage.Registry.INSTANCE.put(ComparePackage.eNS_URI, ComparePackage.eINSTANCE);
- EPackage.Registry.INSTANCE.put(UMLPackage.eNS_URI, UMLPackage.eINSTANCE);
-
- Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("uml", //$NON-NLS-1$
- new UMLResourceFactoryImpl());
-
- final IMerger umlMerger = new UMLMerger();
- umlMerger.setRanking(11);
- mergerRegistry.add(umlMerger);
- }
-
- @Before
- public void before() {
- PostProcessorDescriptorRegistryImpl<String> registry = new PostProcessorDescriptorRegistryImpl<String>();
- registry.put(UMLPostProcessor.class.getName(), new TestPostProcessor.TestPostProcessorDescriptor(
- Pattern.compile("http://www.eclipse.org/uml2/\\d\\.0\\.0/UML"), null, new UMLPostProcessor()));
- emfCompare = EMFCompare.builder().setPostProcessorRegistry(registry).build();
- }
-
- protected EMFCompare getCompare() {
- return emfCompare;
- }
-
- protected enum TestKind {
- ADD, DELETE;
- }
-
- protected static Integer count(List<Diff> differences, Predicate<Object> p) {
- int count = 0;
- final Iterator<Diff> result = Iterators.filter(differences.iterator(), p);
- while (result.hasNext()) {
- count++;
- result.next();
- }
- return Integer.valueOf(count);
- }
-
- public static Predicate<? super Diff> onRealFeature(final EStructuralFeature feature) {
- return new Predicate<Diff>() {
- public boolean apply(Diff input) {
- final EStructuralFeature affectedFeature;
- if (input instanceof AttributeChange) {
- affectedFeature = ((AttributeChange)input).getAttribute();
- } else if (input instanceof ReferenceChange) {
- affectedFeature = ((ReferenceChange)input).getReference();
- } else {
- return false;
- }
- return feature == affectedFeature;
- }
- };
- }
-
- public static Predicate<? super Diff> isChangeAdd() {
- return new Predicate<Diff>() {
- public boolean apply(Diff input) {
- if (input instanceof ReferenceChange) {
- return ReferenceUtil.getAsList(input.getMatch().getLeft(),
- ((ReferenceChange)input).getReference()).contains(
- ((ReferenceChange)input).getValue());
- } else if (input instanceof AttributeChange) {
- return ReferenceUtil.getAsList(input.getMatch().getLeft(),
- ((AttributeChange)input).getAttribute()).contains(
- ((AttributeChange)input).getValue());
- }
- return false;
- }
- };
- }
-
- protected abstract AbstractInputData getInput();
-
- protected void testMergeLeftToRight(Notifier left, Notifier right, Notifier origin) {
- final IComparisonScope scope = EMFCompare.createDefaultScope(left, right, origin);
- final Comparison comparisonBefore = getCompare().compare(scope);
- EList<Diff> differences = comparisonBefore.getDifferences();
- final IBatchMerger merger = new BatchMerger(mergerRegistry);
- merger.copyAllLeftToRight(differences, new BasicMonitor());
- final Comparison comparisonAfter = getCompare().compare(scope);
- assertTrue("Comparison#getDifferences() must be empty after copyAllLeftToRight", comparisonAfter
- .getDifferences().isEmpty());
- }
-
- protected void testMergeRightToLeft(Notifier left, Notifier right, Notifier origin) {
- final IComparisonScope scope = EMFCompare.createDefaultScope(left, right, origin);
- final Comparison comparisonBefore = getCompare().compare(scope);
- EList<Diff> differences = comparisonBefore.getDifferences();
- final IBatchMerger merger = new BatchMerger(mergerRegistry);
- merger.copyAllRightToLeft(differences, new BasicMonitor());
- final Comparison comparisonAfter = getCompare().compare(scope);
- assertTrue("Comparison#getDifferences() must be empty after copyAllRightToLeft", comparisonAfter
- .getDifferences().isEmpty());
- }
-}
+/**
+ * Copyright (c) 2012, 2013 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.uml2.tests;
+
+import static org.junit.Assert.assertTrue;
+
+import com.google.common.base.Predicate;
+import com.google.common.collect.Iterators;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.regex.Pattern;
+
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.util.BasicMonitor;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.compare.AttributeChange;
+import org.eclipse.emf.compare.ComparePackage;
+import org.eclipse.emf.compare.Comparison;
+import org.eclipse.emf.compare.Diff;
+import org.eclipse.emf.compare.EMFCompare;
+import org.eclipse.emf.compare.ReferenceChange;
+import org.eclipse.emf.compare.merge.BatchMerger;
+import org.eclipse.emf.compare.merge.IBatchMerger;
+import org.eclipse.emf.compare.merge.IMerger;
+import org.eclipse.emf.compare.postprocessor.PostProcessorDescriptorRegistryImpl;
+import org.eclipse.emf.compare.scope.IComparisonScope;
+import org.eclipse.emf.compare.tests.framework.AbstractInputData;
+import org.eclipse.emf.compare.tests.postprocess.data.TestPostProcessor;
+import org.eclipse.emf.compare.uml2.internal.merge.UMLMerger;
+import org.eclipse.emf.compare.uml2.internal.postprocessor.UMLPostProcessor;
+import org.eclipse.emf.compare.utils.ReferenceUtil;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.internal.resource.UMLResourceFactoryImpl;
+import org.junit.Before;
+import org.junit.BeforeClass;
+
+@SuppressWarnings("nls")
+public abstract class AbstractTest {
+
+ private EMFCompare emfCompare;
+
+ private static final IMerger.Registry mergerRegistry = IMerger.RegistryImpl.createStandaloneInstance();
+
+ @BeforeClass
+ public static void fillRegistries() {
+ EPackage.Registry.INSTANCE.put(ComparePackage.eNS_URI, ComparePackage.eINSTANCE);
+ EPackage.Registry.INSTANCE.put(UMLPackage.eNS_URI, UMLPackage.eINSTANCE);
+
+ Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("uml", //$NON-NLS-1$
+ new UMLResourceFactoryImpl());
+
+ final IMerger umlMerger = new UMLMerger();
+ umlMerger.setRanking(11);
+ mergerRegistry.add(umlMerger);
+ }
+
+ @Before
+ public void before() {
+ PostProcessorDescriptorRegistryImpl<String> registry = new PostProcessorDescriptorRegistryImpl<String>();
+ registry.put(UMLPostProcessor.class.getName(), new TestPostProcessor.TestPostProcessorDescriptor(
+ Pattern.compile("http://www.eclipse.org/uml2/\\d\\.0\\.0/UML"), null, new UMLPostProcessor(),
+ 20));
+ emfCompare = EMFCompare.builder().setPostProcessorRegistry(registry).build();
+ }
+
+ protected EMFCompare getCompare() {
+ return emfCompare;
+ }
+
+ protected enum TestKind {
+ ADD, DELETE;
+ }
+
+ protected static Integer count(List<Diff> differences, Predicate<Object> p) {
+ int count = 0;
+ final Iterator<Diff> result = Iterators.filter(differences.iterator(), p);
+ while (result.hasNext()) {
+ count++;
+ result.next();
+ }
+ return Integer.valueOf(count);
+ }
+
+ public static Predicate<? super Diff> onRealFeature(final EStructuralFeature feature) {
+ return new Predicate<Diff>() {
+ public boolean apply(Diff input) {
+ final EStructuralFeature affectedFeature;
+ if (input instanceof AttributeChange) {
+ affectedFeature = ((AttributeChange)input).getAttribute();
+ } else if (input instanceof ReferenceChange) {
+ affectedFeature = ((ReferenceChange)input).getReference();
+ } else {
+ return false;
+ }
+ return feature == affectedFeature;
+ }
+ };
+ }
+
+ public static Predicate<? super Diff> isChangeAdd() {
+ return new Predicate<Diff>() {
+ public boolean apply(Diff input) {
+ if (input instanceof ReferenceChange) {
+ return ReferenceUtil.getAsList(input.getMatch().getLeft(),
+ ((ReferenceChange)input).getReference()).contains(
+ ((ReferenceChange)input).getValue());
+ } else if (input instanceof AttributeChange) {
+ return ReferenceUtil.getAsList(input.getMatch().getLeft(),
+ ((AttributeChange)input).getAttribute()).contains(
+ ((AttributeChange)input).getValue());
+ }
+ return false;
+ }
+ };
+ }
+
+ protected abstract AbstractInputData getInput();
+
+ protected void testMergeLeftToRight(Notifier left, Notifier right, Notifier origin) {
+ final IComparisonScope scope = EMFCompare.createDefaultScope(left, right, origin);
+ final Comparison comparisonBefore = getCompare().compare(scope);
+ EList<Diff> differences = comparisonBefore.getDifferences();
+ final IBatchMerger merger = new BatchMerger(mergerRegistry);
+ merger.copyAllLeftToRight(differences, new BasicMonitor());
+ final Comparison comparisonAfter = getCompare().compare(scope);
+ assertTrue("Comparison#getDifferences() must be empty after copyAllLeftToRight", comparisonAfter
+ .getDifferences().isEmpty());
+ }
+
+ protected void testMergeRightToLeft(Notifier left, Notifier right, Notifier origin) {
+ final IComparisonScope scope = EMFCompare.createDefaultScope(left, right, origin);
+ final Comparison comparisonBefore = getCompare().compare(scope);
+ EList<Diff> differences = comparisonBefore.getDifferences();
+ final IBatchMerger merger = new BatchMerger(mergerRegistry);
+ merger.copyAllRightToLeft(differences, new BasicMonitor());
+ final Comparison comparisonAfter = getCompare().compare(scope);
+ assertTrue("Comparison#getDifferences() must be empty after copyAllRightToLeft", comparisonAfter
+ .getDifferences().isEmpty());
+ }
+}

Back to the top