Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'compare/tests/org.eclipse.papyrus.compare.diagram.tests/src/org/eclipse/papyrus/compare/diagram/tests/groups/PapyrusDifferencesOrderTest.java')
-rw-r--r--compare/tests/org.eclipse.papyrus.compare.diagram.tests/src/org/eclipse/papyrus/compare/diagram/tests/groups/PapyrusDifferencesOrderTest.java183
1 files changed, 183 insertions, 0 deletions
diff --git a/compare/tests/org.eclipse.papyrus.compare.diagram.tests/src/org/eclipse/papyrus/compare/diagram/tests/groups/PapyrusDifferencesOrderTest.java b/compare/tests/org.eclipse.papyrus.compare.diagram.tests/src/org/eclipse/papyrus/compare/diagram/tests/groups/PapyrusDifferencesOrderTest.java
new file mode 100644
index 00000000..9c2a7118
--- /dev/null
+++ b/compare/tests/org.eclipse.papyrus.compare.diagram.tests/src/org/eclipse/papyrus/compare/diagram/tests/groups/PapyrusDifferencesOrderTest.java
@@ -0,0 +1,183 @@
+/*******************************************************************************
+ * Copyright (c) 2014, 2015 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.papyrus.compare.diagram.tests.groups;
+
+import static com.google.common.base.Predicates.alwaysTrue;
+
+import com.google.common.collect.Lists;
+import com.google.common.eventbus.EventBus;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.regex.Pattern;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.compare.diagram.ide.ui.internal.structuremergeviewer.filters.GMFRefinedElementsFilter;
+import org.eclipse.emf.compare.diagram.internal.CompareDiagramPostProcessor;
+import org.eclipse.emf.compare.diagram.internal.extensions.provider.spec.ExtensionsItemProviderAdapterFactorySpec;
+import org.eclipse.emf.compare.diagram.internal.matchs.provider.spec.DiagramCompareItemProviderAdapterFactorySpec;
+import org.eclipse.emf.compare.postprocessor.BasicPostProcessorDescriptorImpl;
+import org.eclipse.emf.compare.postprocessor.IPostProcessor.Descriptor.Registry;
+import org.eclipse.emf.compare.postprocessor.PostProcessorDescriptorRegistryImpl;
+import org.eclipse.emf.compare.provider.spec.CompareItemProviderAdapterFactorySpec;
+import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.filters.StructureMergeViewerFilter;
+import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.filters.impl.CascadingDifferencesFilter;
+import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.filters.impl.TechnicalitiesFilter;
+import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.groups.impl.BasicDifferenceGroupImpl;
+import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.groups.provider.TreeItemProviderAdapterFactorySpec;
+import org.eclipse.emf.compare.rcp.ui.structuremergeviewer.groups.IDifferenceGroup;
+import org.eclipse.emf.compare.tests.framework.AbstractInputData;
+import org.eclipse.emf.compare.uml2.internal.postprocessor.UMLPostProcessor;
+import org.eclipse.emf.compare.uml2.internal.provider.custom.UMLCompareCustomItemProviderAdapterFactory;
+import org.eclipse.emf.compare.uml2.internal.provider.decorator.UMLCompareItemProviderDecoratorAdapterFactory;
+import org.eclipse.emf.compare.uml2.rcp.ui.internal.structuremergeviewer.filters.UMLRefinedElementsFilter;
+import org.eclipse.emf.compare.uml2.rcp.ui.tests.groups.AbstractDifferenceOrderTest;
+import org.eclipse.emf.compare.uml2.rcp.ui.tests.groups.NotifierScopeProvider;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory;
+import org.eclipse.emf.edit.tree.TreeNode;
+import org.eclipse.gmf.runtime.notation.provider.NotationItemProviderAdapterFactory;
+import org.eclipse.gmf.runtime.notation.util.NotationAdapterFactory;
+import org.eclipse.papyrus.compare.diagram.tests.DiagramInputData;
+import org.eclipse.uml2.uml.edit.providers.UMLItemProviderAdapterFactory;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * Tests the order of the differences they would be displayed in the structure merge viewer for MDT Papyrus
+ * model.
+ *
+ * @author <a href="mailto:arthur.daussy@obeo.fr">Arthur Daussy</a>
+ */
+public class PapyrusDifferencesOrderTest extends AbstractDifferenceOrderTest {
+
+ /**
+ * Data holding expecting result.
+ */
+ private ExpectedResultData expectedResultData;
+
+ private EventBus eventBus;
+
+ @Before
+ @Override
+ public void before() throws IOException {
+ super.before();
+ getFilter().removeFilter(new CascadingDifferencesFilter());
+ getFilter().removeFilter(new TechnicalitiesFilter());
+ // Adds this filter for clarity
+ getFilter().addFilter(new UMLRefinedElementsFilter());
+ expectedResultData = new ExpectedResultData();
+ }
+
+ @Override
+ protected Registry<?> getPostProcessorRegistry() {
+ PostProcessorDescriptorRegistryImpl<Object> postProcessorRegistry = new PostProcessorDescriptorRegistryImpl<Object>();
+ // Adds UML post processor
+ BasicPostProcessorDescriptorImpl descriptor = new BasicPostProcessorDescriptorImpl(
+ new UMLPostProcessor(), Pattern.compile("http://www.eclipse.org/uml2/\\d.0.0/UML"), null); //$NON-NLS-1$
+ postProcessorRegistry.put(UMLPostProcessor.class.getName(), descriptor);
+ // Adds Diagram post processor
+ BasicPostProcessorDescriptorImpl descriptor2 = new BasicPostProcessorDescriptorImpl(
+ new CompareDiagramPostProcessor(),
+ Pattern.compile("http://www.eclipse.org/gmf/runtime/\\d.\\d.\\d/notation"), null); //$NON-NLS-1$
+ postProcessorRegistry.put(CompareDiagramPostProcessor.class.getName(), descriptor2);
+ return postProcessorRegistry;
+ }
+
+ @Override
+ protected NotifierScopeProvider getInput() {
+ return new InputData();
+ }
+
+ @Override
+ protected List<AdapterFactory> getAdaptersFactory() {
+ eventBus = new EventBus();
+ return Lists.<AdapterFactory> newArrayList(new CompareItemProviderAdapterFactorySpec(),
+ new TreeItemProviderAdapterFactorySpec(new StructureMergeViewerFilter(eventBus)),
+ new UMLCompareCustomItemProviderAdapterFactory(), new UMLItemProviderAdapterFactory(),
+ new UMLCompareItemProviderDecoratorAdapterFactory(),
+ new ReflectiveItemProviderAdapterFactory(), new NotationAdapterFactory(),
+ new ExtensionsItemProviderAdapterFactorySpec(),
+ new DiagramCompareItemProviderAdapterFactorySpec(), new NotationItemProviderAdapterFactory());
+ }
+
+ @Test
+ public void testPapyrusDiffWithoutDiagRefineFilter() throws IOException {
+ GMFRefinedElementsFilter diagramFilter = new GMFRefinedElementsFilter();
+ getFilter().removeFilter(diagramFilter);
+
+ IDifferenceGroup group = new BasicDifferenceGroupImpl(getComparison(), alwaysTrue(),
+ getCrossReferenceAdapter());
+ List<? extends TreeNode> roots = group.getChildren();
+
+ // Uncomment the following lines to reserialize the expected model
+ // TestWriterHelper writerHelper = createTestHelper();
+ // writerHelper.createExpectedModel(PATH_TO_MODEL_FILE+"/expectedResult_DiagRefineOff.nodes",
+ // roots,false);
+
+ compareTree(expectedResultData.getExpectedReseultWithFilterOff(), roots, false);
+ }
+
+ @Test
+ public void testPapyrusDiffWithDiagRefineFilter() throws IOException {
+ GMFRefinedElementsFilter diagramFilter = new GMFRefinedElementsFilter();
+ getFilter().addFilter(diagramFilter);
+
+ IDifferenceGroup group = new BasicDifferenceGroupImpl(getComparison(), alwaysTrue(),
+ getCrossReferenceAdapter());
+ List<? extends TreeNode> roots = group.getChildren();
+
+ // Uncomment the following lines to reserialize the expected model
+ // TestWriterHelper writerHelper = createTestHelper();
+ // writerHelper.createExpectedModel(PATH_TO_MODEL_FILE+"/expectedResult_DiagRefineOn.nodes",
+ // roots);
+
+ compareTree(expectedResultData.getExpectedReseultWithFilterOn(), roots, false);
+ }
+
+ /**
+ * Expected result data.
+ *
+ * @author <a href="mailto:arthur.daussy@obeo.fr">Arthur Daussy</a>
+ */
+ private static final class ExpectedResultData extends AbstractInputData {
+
+ public Resource getExpectedReseultWithFilterOn() throws IOException {
+ return loadFromClassLoader("data/a1/expectedResult_DiagRefineOn.nodes");
+ }
+
+ public Resource getExpectedReseultWithFilterOff() throws IOException {
+ return loadFromClassLoader("data/a1/expectedResult_DiagRefineOff.nodes");
+ }
+ }
+
+ /**
+ * Input data for this test.
+ *
+ * @author <a href="mailto:arthur.daussy@obeo.fr">Arthur Daussy</a>
+ */
+ private static final class InputData extends DiagramInputData implements NotifierScopeProvider {
+
+ public ResourceSet getLeft() throws IOException {
+ return loadFromClassLoader("data/a1/left.notation").getResourceSet();
+ }
+
+ public ResourceSet getRight() throws IOException {
+ return loadFromClassLoader("data/a1/right.notation").getResourceSet();
+ }
+
+ public ResourceSet getOrigin() throws IOException {
+ return loadFromClassLoader("data/a1/origin.notation").getResourceSet();
+ }
+ }
+
+}

Back to the top