| /******************************************************************************* |
| * Copyright (c) 2012, 2014 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.diagram.ecoretools.tests.nodechanges; |
| |
| import static com.google.common.base.Predicates.and; |
| import static com.google.common.base.Predicates.instanceOf; |
| import static junit.framework.Assert.assertFalse; |
| import static junit.framework.Assert.assertSame; |
| import static junit.framework.Assert.assertTrue; |
| import static org.eclipse.emf.compare.utils.EMFComparePredicates.added; |
| import static org.eclipse.emf.compare.utils.EMFComparePredicates.addedToReference; |
| import static org.eclipse.emf.compare.utils.EMFComparePredicates.ofKind; |
| import static org.eclipse.emf.compare.utils.EMFComparePredicates.onFeature; |
| import static org.eclipse.emf.compare.utils.EMFComparePredicates.removed; |
| import static org.eclipse.emf.compare.utils.EMFComparePredicates.removedFromReference; |
| import static org.eclipse.emf.compare.utils.EMFComparePredicates.valueIs; |
| import static org.eclipse.emf.compare.utils.EMFComparePredicates.valueNameMatches; |
| |
| import java.io.IOException; |
| import java.util.List; |
| |
| import org.eclipse.emf.compare.AttributeChange; |
| import org.eclipse.emf.compare.Comparison; |
| import org.eclipse.emf.compare.Diff; |
| import org.eclipse.emf.compare.DifferenceKind; |
| import org.eclipse.emf.compare.EMFCompare; |
| import org.eclipse.emf.compare.ReferenceChange; |
| import org.eclipse.emf.compare.ResourceAttachmentChange; |
| import org.eclipse.emf.compare.diagram.ecoretools.tests.AbstractTest; |
| import org.eclipse.emf.compare.diagram.ecoretools.tests.DiagramInputData; |
| import org.eclipse.emf.compare.diagram.ecoretools.tests.nodechanges.data.NodeChangesInputData; |
| import org.eclipse.emf.compare.diagram.internal.extensions.NodeChange; |
| import org.eclipse.emf.compare.scope.IComparisonScope; |
| import org.eclipse.emf.ecore.EObject; |
| import org.eclipse.emf.ecore.EcorePackage; |
| import org.eclipse.emf.ecore.resource.Resource; |
| import org.eclipse.gmf.runtime.notation.Bounds; |
| import org.eclipse.gmf.runtime.notation.DrawerStyle; |
| import org.eclipse.gmf.runtime.notation.FilteringStyle; |
| import org.eclipse.gmf.runtime.notation.MultiDiagramLinkStyle; |
| import org.eclipse.gmf.runtime.notation.NotationPackage; |
| import org.eclipse.gmf.runtime.notation.ShapeStyle; |
| import org.eclipse.gmf.runtime.notation.SortingStyle; |
| import org.eclipse.gmf.runtime.notation.View; |
| import org.junit.Ignore; |
| import org.junit.Test; |
| |
| import com.google.common.base.Predicate; |
| import com.google.common.collect.Iterators; |
| |
| @SuppressWarnings("nls") |
| public class NodechangesTest extends AbstractTest { |
| |
| private NodeChangesInputData input = new NodeChangesInputData(); |
| |
| @Test |
| public void testA10UseCase() throws IOException { |
| final Resource left = input.getA1Left(); |
| final Resource right = input.getA1Right(); |
| |
| final Comparison comparison = compare(left.getResourceSet(), right.getResourceSet()); |
| |
| final List<Diff> differences = comparison.getDifferences(); |
| |
| // We should have no less and no more than 57 differences |
| assertSame(Integer.valueOf(57), Integer.valueOf(differences.size())); |
| |
| final Diff addEPackage = Iterators.find(differences.iterator(), added("tc1.EPackage0")); |
| |
| final Diff addEPackageView = Iterators.find(differences.iterator(), |
| and(valueIsView, valueNameMatches("1002", NotationPackage.Literals.VIEW__TYPE), |
| elementIs(((ReferenceChange)addEPackage).getValue()))); |
| final Diff addNodeInEPackageView1 = Iterators.find(differences.iterator(), |
| and(valueIsView, valueNameMatches("4006", NotationPackage.Literals.VIEW__TYPE))); |
| final Diff addNodeInEPackageView2 = Iterators.find(differences.iterator(), |
| and(valueIsView, valueNameMatches("5003", NotationPackage.Literals.VIEW__TYPE))); |
| final Diff addDrawerStyleInNodeInEPackageView2 = Iterators.find(differences.iterator(), |
| and(valueUnder(addNodeInEPackageView2), valueIsInstanceof(DrawerStyle.class))); |
| final Diff addSortingStyleInNodeInEPackageView2 = Iterators.find(differences.iterator(), |
| and(valueUnder(addNodeInEPackageView2), valueIsInstanceof(SortingStyle.class))); |
| final Diff addFilteringStyleInNodeInEPackageView2 = Iterators.find(differences.iterator(), |
| and(valueUnder(addNodeInEPackageView2), valueIsInstanceof(FilteringStyle.class))); |
| final Diff addShapeStyleInEPackageView = Iterators.find(differences.iterator(), |
| and(valueUnder(addEPackageView), valueIsInstanceof(ShapeStyle.class))); |
| final Diff addMultiDiagramLinkStyleInEPackageView = Iterators.find(differences.iterator(), |
| and(valueUnder(addEPackageView), valueIsInstanceof(MultiDiagramLinkStyle.class))); |
| final Diff addBoundsInEPackageView = Iterators.find(differences.iterator(), |
| and(valueUnder(addEPackageView), valueIsInstanceof(Bounds.class))); |
| final Diff addRefElementInEPackageView = Iterators.find(differences.iterator(), |
| and(valueIs(((ReferenceChange)addEPackage).getValue()), onFeature("element"))); |
| |
| final Diff addEClass = Iterators.find(differences.iterator(), added("tc1.EClass0")); |
| |
| final Diff addEClassView = Iterators.find(differences.iterator(), |
| and(valueIsView, valueNameMatches("1001", NotationPackage.Literals.VIEW__TYPE), |
| elementIs(((ReferenceChange)addEClass).getValue()))); |
| final Diff addNodeInEClassView1 = Iterators.find(differences.iterator(), |
| and(valueIsView, valueNameMatches("4001", NotationPackage.Literals.VIEW__TYPE))); |
| final Diff addNodeInEClassView2 = Iterators.find(differences.iterator(), |
| and(valueIsView, valueNameMatches("5001", NotationPackage.Literals.VIEW__TYPE))); |
| final Diff addDrawerStyleInNodeInEClassView2 = Iterators.find(differences.iterator(), |
| and(valueUnder(addNodeInEClassView2), valueIsInstanceof(DrawerStyle.class))); |
| final Diff addSortingStyleInNodeInEClassView2 = Iterators.find(differences.iterator(), |
| and(valueUnder(addNodeInEClassView2), valueIsInstanceof(SortingStyle.class))); |
| final Diff addFilteringStyleInNodeInEClassView2 = Iterators.find(differences.iterator(), |
| and(valueUnder(addNodeInEClassView2), valueIsInstanceof(FilteringStyle.class))); |
| final Diff addNodeInEClassView3 = Iterators.find(differences.iterator(), |
| and(valueIsView, valueNameMatches("5002", NotationPackage.Literals.VIEW__TYPE))); |
| final Diff addDrawerStyleInNodeInEClassView3 = Iterators.find(differences.iterator(), |
| and(valueUnder(addNodeInEClassView3), valueIsInstanceof(DrawerStyle.class))); |
| final Diff addSortingStyleInNodeInEClassView3 = Iterators.find(differences.iterator(), |
| and(valueUnder(addNodeInEClassView3), valueIsInstanceof(SortingStyle.class))); |
| final Diff addFilteringStyleInNodeInEClassView = Iterators.find(differences.iterator(), |
| and(valueUnder(addNodeInEClassView3), valueIsInstanceof(FilteringStyle.class))); |
| final Diff addShapeStyleInEClassView = Iterators.find(differences.iterator(), |
| valueUnder(addEClassView)); |
| final Diff addRefElementInEClassView = Iterators.find(differences.iterator(), |
| and(valueIs(((ReferenceChange)addEClass).getValue()), onFeature("element"))); |
| final Diff addBoundsInEClassView = Iterators.find(differences.iterator(), |
| and(valueUnder(addEClassView), valueIsInstanceof(Bounds.class))); |
| |
| final Diff addEDataType = Iterators.find(differences.iterator(), added("tc1.EDataType0")); |
| |
| final Diff addEDataTypeView = Iterators.find(differences.iterator(), |
| and(valueIsView, valueNameMatches("1004", NotationPackage.Literals.VIEW__TYPE), |
| elementIs(((ReferenceChange)addEDataType).getValue()))); |
| final Diff addNodeInEDataTypeView1 = Iterators.find(differences.iterator(), |
| and(valueIsView, valueNameMatches("4008", NotationPackage.Literals.VIEW__TYPE))); |
| final Diff addNodeInEDataTypeView2 = Iterators.find(differences.iterator(), |
| and(valueIsView, valueNameMatches("4009", NotationPackage.Literals.VIEW__TYPE))); |
| final Diff addShapeStyleInEDataTypeView = Iterators.find(differences.iterator(), |
| and(valueUnder(addEDataTypeView), valueIsInstanceof(ShapeStyle.class))); |
| final Diff addRefElementInEDataTypeView = Iterators.find(differences.iterator(), |
| and(valueIs(((ReferenceChange)addEDataType).getValue()), onFeature("element"))); |
| final Diff addBoundsInEDataTypeView = Iterators.find(differences.iterator(), |
| and(valueUnder(addEDataTypeView), valueIsInstanceof(Bounds.class))); |
| |
| final Diff addEEnum = Iterators.find(differences.iterator(), added("tc1.EEnum0")); |
| |
| final Diff addEEnumView = Iterators.find(differences.iterator(), |
| and(valueIsView, valueNameMatches("1005", NotationPackage.Literals.VIEW__TYPE), |
| elementIs(((ReferenceChange)addEEnum).getValue()))); |
| final Diff addNodeInEEnumView1 = Iterators.find(differences.iterator(), |
| and(valueIsView, valueNameMatches("4010", NotationPackage.Literals.VIEW__TYPE))); |
| final Diff addNodeInEEnumView2 = Iterators.find(differences.iterator(), |
| and(valueIsView, valueNameMatches("5008", NotationPackage.Literals.VIEW__TYPE))); |
| final Diff addDrawerStyleInNodeInEEnumView2 = Iterators.find(differences.iterator(), |
| and(valueUnder(addNodeInEEnumView2), valueIsInstanceof(DrawerStyle.class))); |
| final Diff addSortingStyleInNodeInEEnumView2 = Iterators.find(differences.iterator(), |
| and(valueUnder(addNodeInEEnumView2), valueIsInstanceof(SortingStyle.class))); |
| final Diff addFilteringStyleInNodeInEEnumView2 = Iterators.find(differences.iterator(), |
| and(valueUnder(addNodeInEEnumView2), valueIsInstanceof(FilteringStyle.class))); |
| final Diff addShapeStyleInEEnumView = Iterators.find(differences.iterator(), |
| and(valueUnder(addEEnumView), valueIsInstanceof(ShapeStyle.class))); |
| final Diff addRefElementInEEnumView = Iterators.find(differences.iterator(), |
| and(valueIs(((ReferenceChange)addEEnum).getValue()), onFeature("element"))); |
| final Diff addBoundsInEEnumView = Iterators.find(differences.iterator(), |
| and(valueUnder(addEEnumView), valueIsInstanceof(Bounds.class))); |
| |
| final Diff addEAnnotation = Iterators.find(differences.iterator(), addedToReference("tc1", |
| "eAnnotations", "tc1.EAnnotation0", EcorePackage.Literals.EANNOTATION__SOURCE)); |
| |
| final Diff addEAnnotationView = Iterators.find(differences.iterator(), |
| and(valueIsView, valueNameMatches("1003", NotationPackage.Literals.VIEW__TYPE), |
| elementIs(((ReferenceChange)addEAnnotation).getValue()))); |
| final Diff addNodeInEAnnotationView1 = Iterators.find(differences.iterator(), |
| and(valueIsView, valueNameMatches("4007", NotationPackage.Literals.VIEW__TYPE))); |
| final Diff addNodeInEAnnotationView2 = Iterators.find(differences.iterator(), |
| and(valueIsView, valueNameMatches("5007", NotationPackage.Literals.VIEW__TYPE))); |
| final Diff addDrawerStyleInNodeInEAnnotationView2 = Iterators.find(differences.iterator(), |
| and(valueUnder(addNodeInEAnnotationView2), valueIsInstanceof(DrawerStyle.class))); |
| final Diff addSortingStyleInNodeInEAnnotationView2 = Iterators.find(differences.iterator(), |
| and(valueUnder(addNodeInEAnnotationView2), valueIsInstanceof(SortingStyle.class))); |
| final Diff addFilteringStyleInNodeInEAnnotationView2 = Iterators.find(differences.iterator(), |
| and(valueUnder(addNodeInEAnnotationView2), valueIsInstanceof(FilteringStyle.class))); |
| final Diff addShapeStyleInEAnnotationView = Iterators.find(differences.iterator(), |
| and(valueUnder(addEAnnotationView), valueIsInstanceof(ShapeStyle.class))); |
| final Diff addRefElementInEAnnotationView = Iterators.find(differences.iterator(), |
| and(valueIs(((ReferenceChange)addEAnnotation).getValue()), onFeature("element"))); |
| final Diff addBoundsInEAnnotationView = Iterators.find(differences.iterator(), |
| and(valueUnder(addEAnnotationView), valueIsInstanceof(Bounds.class))); |
| |
| assertSame(Integer.valueOf(5), |
| count(differences, and(instanceOf(NodeChange.class), ofKind(DifferenceKind.ADD)))); |
| |
| final Diff addNodeEPackageExtension = Iterators.find(differences.iterator(), |
| and(instanceOf(NodeChange.class), ofKind(DifferenceKind.ADD), |
| refinedBy(addRefElementInEPackageView))); |
| final Diff addNodeEClassExtension = Iterators.find(differences.iterator(), |
| and(instanceOf(NodeChange.class), ofKind(DifferenceKind.ADD), |
| refinedBy(addRefElementInEClassView))); |
| final Diff addNodeEDataTypeExtension = Iterators.find(differences.iterator(), |
| and(instanceOf(NodeChange.class), ofKind(DifferenceKind.ADD), |
| refinedBy(addRefElementInEDataTypeView))); |
| final Diff addNodeEENumExtension = Iterators.find(differences.iterator(), |
| and(instanceOf(NodeChange.class), ofKind(DifferenceKind.ADD), |
| refinedBy(addRefElementInEEnumView))); |
| final Diff addNodeEAnnotationExtension = Iterators.find(differences.iterator(), |
| and(instanceOf(NodeChange.class), ofKind(DifferenceKind.ADD), |
| refinedBy(addRefElementInEAnnotationView))); |
| |
| assertSame(Integer.valueOf(10), addNodeEPackageExtension.getRefinedBy().size()); |
| assertTrue(addNodeEPackageExtension.getRefinedBy().contains(addEPackageView));// for convenience... |
| assertTrue(addNodeEPackageExtension.getRefinedBy().contains(addNodeInEPackageView1)); |
| assertTrue(addNodeEPackageExtension.getRefinedBy().contains(addNodeInEPackageView2)); |
| assertTrue(addNodeEPackageExtension.getRefinedBy().contains(addDrawerStyleInNodeInEPackageView2)); |
| assertTrue(addNodeEPackageExtension.getRefinedBy().contains(addSortingStyleInNodeInEPackageView2)); |
| assertTrue(addNodeEPackageExtension.getRefinedBy().contains(addFilteringStyleInNodeInEPackageView2)); |
| assertTrue(addNodeEPackageExtension.getRefinedBy().contains(addShapeStyleInEPackageView)); |
| assertTrue(addNodeEPackageExtension.getRefinedBy().contains(addMultiDiagramLinkStyleInEPackageView)); |
| assertTrue(addNodeEPackageExtension.getRefinedBy().contains(addBoundsInEPackageView)); |
| assertTrue(addNodeEPackageExtension.getRefinedBy().contains(addRefElementInEPackageView)); |
| |
| assertSame(Integer.valueOf(13), addNodeEClassExtension.getRefinedBy().size()); |
| assertTrue(addNodeEClassExtension.getRefinedBy().contains(addEClassView));// for convenience... |
| assertTrue(addNodeEClassExtension.getRefinedBy().contains(addNodeInEClassView1)); |
| assertTrue(addNodeEClassExtension.getRefinedBy().contains(addNodeInEClassView2)); |
| assertTrue(addNodeEClassExtension.getRefinedBy().contains(addDrawerStyleInNodeInEClassView2)); |
| assertTrue(addNodeEClassExtension.getRefinedBy().contains(addSortingStyleInNodeInEClassView2)); |
| assertTrue(addNodeEClassExtension.getRefinedBy().contains(addFilteringStyleInNodeInEClassView2)); |
| assertTrue(addNodeEClassExtension.getRefinedBy().contains(addNodeInEClassView3)); |
| assertTrue(addNodeEClassExtension.getRefinedBy().contains(addDrawerStyleInNodeInEClassView3)); |
| assertTrue(addNodeEClassExtension.getRefinedBy().contains(addSortingStyleInNodeInEClassView3)); |
| assertTrue(addNodeEClassExtension.getRefinedBy().contains(addFilteringStyleInNodeInEClassView)); |
| assertTrue(addNodeEClassExtension.getRefinedBy().contains(addShapeStyleInEClassView)); |
| assertTrue(addNodeEClassExtension.getRefinedBy().contains(addRefElementInEClassView)); |
| assertTrue(addNodeEClassExtension.getRefinedBy().contains(addBoundsInEClassView)); |
| |
| assertSame(Integer.valueOf(6), addNodeEDataTypeExtension.getRefinedBy().size()); |
| assertTrue(addNodeEDataTypeExtension.getRefinedBy().contains(addEDataTypeView));// for convenience... |
| assertTrue(addNodeEDataTypeExtension.getRefinedBy().contains(addNodeInEDataTypeView1)); |
| assertTrue(addNodeEDataTypeExtension.getRefinedBy().contains(addNodeInEDataTypeView2)); |
| assertTrue(addNodeEDataTypeExtension.getRefinedBy().contains(addShapeStyleInEDataTypeView)); |
| assertTrue(addNodeEDataTypeExtension.getRefinedBy().contains(addRefElementInEDataTypeView)); |
| assertTrue(addNodeEDataTypeExtension.getRefinedBy().contains(addBoundsInEDataTypeView)); |
| |
| assertSame(Integer.valueOf(9), addNodeEENumExtension.getRefinedBy().size()); |
| assertTrue(addNodeEENumExtension.getRefinedBy().contains(addEEnumView));// for convenience... |
| assertTrue(addNodeEENumExtension.getRefinedBy().contains(addNodeInEEnumView1)); |
| assertTrue(addNodeEENumExtension.getRefinedBy().contains(addNodeInEEnumView2)); |
| assertTrue(addNodeEENumExtension.getRefinedBy().contains(addDrawerStyleInNodeInEEnumView2)); |
| assertTrue(addNodeEENumExtension.getRefinedBy().contains(addSortingStyleInNodeInEEnumView2)); |
| assertTrue(addNodeEENumExtension.getRefinedBy().contains(addFilteringStyleInNodeInEEnumView2)); |
| assertTrue(addNodeEENumExtension.getRefinedBy().contains(addShapeStyleInEEnumView)); |
| assertTrue(addNodeEENumExtension.getRefinedBy().contains(addRefElementInEEnumView)); |
| assertTrue(addNodeEENumExtension.getRefinedBy().contains(addBoundsInEEnumView)); |
| |
| assertSame(Integer.valueOf(9), addNodeEAnnotationExtension.getRefinedBy().size()); |
| assertTrue(addNodeEAnnotationExtension.getRefinedBy().contains(addEAnnotationView));// for |
| // convenience... |
| assertTrue(addNodeEAnnotationExtension.getRefinedBy().contains(addNodeInEAnnotationView1)); |
| assertTrue(addNodeEAnnotationExtension.getRefinedBy().contains(addNodeInEAnnotationView2)); |
| assertTrue( |
| addNodeEAnnotationExtension.getRefinedBy().contains(addDrawerStyleInNodeInEAnnotationView2)); |
| assertTrue( |
| addNodeEAnnotationExtension.getRefinedBy().contains(addSortingStyleInNodeInEAnnotationView2)); |
| assertTrue(addNodeEAnnotationExtension.getRefinedBy() |
| .contains(addFilteringStyleInNodeInEAnnotationView2)); |
| assertTrue(addNodeEAnnotationExtension.getRefinedBy().contains(addShapeStyleInEAnnotationView)); |
| assertTrue(addNodeEAnnotationExtension.getRefinedBy().contains(addRefElementInEAnnotationView)); |
| assertTrue(addNodeEAnnotationExtension.getRefinedBy().contains(addBoundsInEAnnotationView)); |
| |
| // requires tests |
| assertSame(Integer.valueOf(0), addEPackageView.getRequires().size()); |
| |
| assertSame(Integer.valueOf(1), addNodeInEPackageView1.getRequires().size()); |
| assertTrue(addNodeInEPackageView1.getRequires().contains(addEPackageView)); |
| |
| assertSame(Integer.valueOf(1), addNodeInEPackageView2.getRequires().size()); |
| assertTrue(addNodeInEPackageView2.getRequires().contains(addEPackageView)); |
| |
| assertSame(Integer.valueOf(1), addDrawerStyleInNodeInEPackageView2.getRequires().size()); |
| assertTrue(addDrawerStyleInNodeInEPackageView2.getRequires().contains(addNodeInEPackageView2)); |
| |
| assertSame(Integer.valueOf(1), addSortingStyleInNodeInEPackageView2.getRequires().size()); |
| assertTrue(addSortingStyleInNodeInEPackageView2.getRequires().contains(addNodeInEPackageView2)); |
| |
| assertSame(Integer.valueOf(1), addFilteringStyleInNodeInEPackageView2.getRequires().size()); |
| assertTrue(addFilteringStyleInNodeInEPackageView2.getRequires().contains(addNodeInEPackageView2)); |
| |
| assertSame(Integer.valueOf(1), addShapeStyleInEPackageView.getRequires().size()); |
| assertTrue(addShapeStyleInEPackageView.getRequires().contains(addEPackageView)); |
| |
| assertSame(Integer.valueOf(1), addMultiDiagramLinkStyleInEPackageView.getRequires().size()); |
| assertTrue(addMultiDiagramLinkStyleInEPackageView.getRequires().contains(addEPackageView)); |
| |
| assertSame(Integer.valueOf(1), addBoundsInEPackageView.getRequires().size()); |
| assertTrue(addBoundsInEPackageView.getRequires().contains(addEPackageView)); |
| |
| assertSame(Integer.valueOf(2), addRefElementInEPackageView.getRequires().size()); |
| assertTrue(addRefElementInEPackageView.getRequires().contains(addEPackage)); |
| assertTrue(addRefElementInEPackageView.getRequires().contains(addEPackageView)); |
| |
| assertFalse("No resource attachment changes expected", Iterators |
| .filter(differences.iterator(), instanceOf(ResourceAttachmentChange.class)).hasNext()); |
| |
| testIntersections(comparison); |
| } |
| |
| @Test |
| public void testA11UseCase() throws IOException { |
| final Resource left = input.getA1Left(); |
| final Resource right = input.getA1Right(); |
| |
| final Comparison comparison = compare(right.getResourceSet(), left.getResourceSet()); |
| |
| final List<Diff> differences = comparison.getDifferences(); |
| |
| // We should have no less and no more than 57 differences |
| assertSame(Integer.valueOf(57), Integer.valueOf(differences.size())); |
| |
| final Diff addEPackage = Iterators.find(differences.iterator(), removed("tc1.EPackage0")); |
| |
| final Diff addEPackageView = Iterators.find(differences.iterator(), |
| and(valueIsView, valueNameMatches("1002", NotationPackage.Literals.VIEW__TYPE), |
| elementIs(((ReferenceChange)addEPackage).getValue()))); |
| final Diff addNodeInEPackageView1 = Iterators.find(differences.iterator(), |
| and(valueIsView, valueNameMatches("4006", NotationPackage.Literals.VIEW__TYPE))); |
| final Diff addNodeInEPackageView2 = Iterators.find(differences.iterator(), |
| and(valueIsView, valueNameMatches("5003", NotationPackage.Literals.VIEW__TYPE))); |
| final Diff addDrawerStyleInNodeInEPackageView2 = Iterators.find(differences.iterator(), |
| and(valueUnder(addNodeInEPackageView2), valueIsInstanceof(DrawerStyle.class))); |
| final Diff addSortingStyleInNodeInEPackageView2 = Iterators.find(differences.iterator(), |
| and(valueUnder(addNodeInEPackageView2), valueIsInstanceof(SortingStyle.class))); |
| final Diff addFilteringStyleInNodeInEPackageView2 = Iterators.find(differences.iterator(), |
| and(valueUnder(addNodeInEPackageView2), valueIsInstanceof(FilteringStyle.class))); |
| final Diff addShapeStyleInEPackageView = Iterators.find(differences.iterator(), |
| and(valueUnder(addEPackageView), valueIsInstanceof(ShapeStyle.class))); |
| final Diff addMultiDiagramLinkStyleInEPackageView = Iterators.find(differences.iterator(), |
| and(valueUnder(addEPackageView), valueIsInstanceof(MultiDiagramLinkStyle.class))); |
| final Diff addBoundsInEPackageView = Iterators.find(differences.iterator(), |
| and(valueUnder(addEPackageView), valueIsInstanceof(Bounds.class))); |
| final Diff addRefElementInEPackageView = Iterators.find(differences.iterator(), |
| and(valueIs(((ReferenceChange)addEPackage).getValue()), onFeature("element"))); |
| |
| final Diff addEClass = Iterators.find(differences.iterator(), removed("tc1.EClass0")); |
| |
| final Diff addEClassView = Iterators.find(differences.iterator(), |
| and(valueIsView, valueNameMatches("1001", NotationPackage.Literals.VIEW__TYPE), |
| elementIs(((ReferenceChange)addEClass).getValue()))); |
| final Diff addNodeInEClassView1 = Iterators.find(differences.iterator(), |
| and(valueIsView, valueNameMatches("4001", NotationPackage.Literals.VIEW__TYPE))); |
| final Diff addNodeInEClassView2 = Iterators.find(differences.iterator(), |
| and(valueIsView, valueNameMatches("5001", NotationPackage.Literals.VIEW__TYPE))); |
| final Diff addDrawerStyleInNodeInEClassView2 = Iterators.find(differences.iterator(), |
| and(valueUnder(addNodeInEClassView2), valueIsInstanceof(DrawerStyle.class))); |
| final Diff addSortingStyleInNodeInEClassView2 = Iterators.find(differences.iterator(), |
| and(valueUnder(addNodeInEClassView2), valueIsInstanceof(SortingStyle.class))); |
| final Diff addFilteringStyleInNodeInEClassView2 = Iterators.find(differences.iterator(), |
| and(valueUnder(addNodeInEClassView2), valueIsInstanceof(FilteringStyle.class))); |
| final Diff addNodeInEClassView3 = Iterators.find(differences.iterator(), |
| and(valueIsView, valueNameMatches("5002", NotationPackage.Literals.VIEW__TYPE))); |
| final Diff addDrawerStyleInNodeInEClassView3 = Iterators.find(differences.iterator(), |
| and(valueUnder(addNodeInEClassView3), valueIsInstanceof(DrawerStyle.class))); |
| final Diff addSortingStyleInNodeInEClassView3 = Iterators.find(differences.iterator(), |
| and(valueUnder(addNodeInEClassView3), valueIsInstanceof(SortingStyle.class))); |
| final Diff addFilteringStyleInNodeInEClassView = Iterators.find(differences.iterator(), |
| and(valueUnder(addNodeInEClassView3), valueIsInstanceof(FilteringStyle.class))); |
| final Diff addShapeStyleInEClassView = Iterators.find(differences.iterator(), |
| valueUnder(addEClassView)); |
| final Diff addRefElementInEClassView = Iterators.find(differences.iterator(), |
| and(valueIs(((ReferenceChange)addEClass).getValue()), onFeature("element"))); |
| final Diff addBoundsInEClassView = Iterators.find(differences.iterator(), |
| and(valueUnder(addEClassView), valueIsInstanceof(Bounds.class))); |
| |
| final Diff addEDataType = Iterators.find(differences.iterator(), removed("tc1.EDataType0")); |
| |
| final Diff addEDataTypeView = Iterators.find(differences.iterator(), |
| and(valueIsView, valueNameMatches("1004", NotationPackage.Literals.VIEW__TYPE), |
| elementIs(((ReferenceChange)addEDataType).getValue()))); |
| final Diff addNodeInEDataTypeView1 = Iterators.find(differences.iterator(), |
| and(valueIsView, valueNameMatches("4008", NotationPackage.Literals.VIEW__TYPE))); |
| final Diff addNodeInEDataTypeView2 = Iterators.find(differences.iterator(), |
| and(valueIsView, valueNameMatches("4009", NotationPackage.Literals.VIEW__TYPE))); |
| final Diff addShapeStyleInEDataTypeView = Iterators.find(differences.iterator(), |
| and(valueUnder(addEDataTypeView), valueIsInstanceof(ShapeStyle.class))); |
| final Diff addRefElementInEDataTypeView = Iterators.find(differences.iterator(), |
| and(valueIs(((ReferenceChange)addEDataType).getValue()), onFeature("element"))); |
| final Diff addBoundsInEDataTypeView = Iterators.find(differences.iterator(), |
| and(valueUnder(addEDataTypeView), valueIsInstanceof(Bounds.class))); |
| |
| final Diff addEEnum = Iterators.find(differences.iterator(), removed("tc1.EEnum0")); |
| |
| final Diff addEEnumView = Iterators.find(differences.iterator(), |
| and(valueIsView, valueNameMatches("1005", NotationPackage.Literals.VIEW__TYPE), |
| elementIs(((ReferenceChange)addEEnum).getValue()))); |
| final Diff addNodeInEEnumView1 = Iterators.find(differences.iterator(), |
| and(valueIsView, valueNameMatches("4010", NotationPackage.Literals.VIEW__TYPE))); |
| final Diff addNodeInEEnumView2 = Iterators.find(differences.iterator(), |
| and(valueIsView, valueNameMatches("5008", NotationPackage.Literals.VIEW__TYPE))); |
| final Diff addDrawerStyleInNodeInEEnumView2 = Iterators.find(differences.iterator(), |
| and(valueUnder(addNodeInEEnumView2), valueIsInstanceof(DrawerStyle.class))); |
| final Diff addSortingStyleInNodeInEEnumView2 = Iterators.find(differences.iterator(), |
| and(valueUnder(addNodeInEEnumView2), valueIsInstanceof(SortingStyle.class))); |
| final Diff addFilteringStyleInNodeInEEnumView2 = Iterators.find(differences.iterator(), |
| and(valueUnder(addNodeInEEnumView2), valueIsInstanceof(FilteringStyle.class))); |
| final Diff addShapeStyleInEEnumView = Iterators.find(differences.iterator(), |
| and(valueUnder(addEEnumView), valueIsInstanceof(ShapeStyle.class))); |
| final Diff addRefElementInEEnumView = Iterators.find(differences.iterator(), |
| and(valueIs(((ReferenceChange)addEEnum).getValue()), onFeature("element"))); |
| final Diff addBoundsInEEnumView = Iterators.find(differences.iterator(), |
| and(valueUnder(addEEnumView), valueIsInstanceof(Bounds.class))); |
| |
| final Diff addEAnnotation = Iterators.find(differences.iterator(), removedFromReference("tc1", |
| "eAnnotations", "tc1.EAnnotation0", EcorePackage.Literals.EANNOTATION__SOURCE)); |
| |
| final Diff addEAnnotationView = Iterators.find(differences.iterator(), |
| and(valueIsView, valueNameMatches("1003", NotationPackage.Literals.VIEW__TYPE), |
| elementIs(((ReferenceChange)addEAnnotation).getValue()))); |
| final Diff addNodeInEAnnotationView1 = Iterators.find(differences.iterator(), |
| and(valueIsView, valueNameMatches("4007", NotationPackage.Literals.VIEW__TYPE))); |
| final Diff addNodeInEAnnotationView2 = Iterators.find(differences.iterator(), |
| and(valueIsView, valueNameMatches("5007", NotationPackage.Literals.VIEW__TYPE))); |
| final Diff addDrawerStyleInNodeInEAnnotationView2 = Iterators.find(differences.iterator(), |
| and(valueUnder(addNodeInEAnnotationView2), valueIsInstanceof(DrawerStyle.class))); |
| final Diff addSortingStyleInNodeInEAnnotationView2 = Iterators.find(differences.iterator(), |
| and(valueUnder(addNodeInEAnnotationView2), valueIsInstanceof(SortingStyle.class))); |
| final Diff addFilteringStyleInNodeInEAnnotationView2 = Iterators.find(differences.iterator(), |
| and(valueUnder(addNodeInEAnnotationView2), valueIsInstanceof(FilteringStyle.class))); |
| final Diff addShapeStyleInEAnnotationView = Iterators.find(differences.iterator(), |
| and(valueUnder(addEAnnotationView), valueIsInstanceof(ShapeStyle.class))); |
| final Diff addRefElementInEAnnotationView = Iterators.find(differences.iterator(), |
| and(valueIs(((ReferenceChange)addEAnnotation).getValue()), onFeature("element"))); |
| final Diff addBoundsInEAnnotationView = Iterators.find(differences.iterator(), |
| and(valueUnder(addEAnnotationView), valueIsInstanceof(Bounds.class))); |
| |
| assertSame(Integer.valueOf(5), |
| count(differences, and(instanceOf(NodeChange.class), ofKind(DifferenceKind.DELETE)))); |
| |
| final Diff addNodeEPackageExtension = Iterators.find(differences.iterator(), |
| and(instanceOf(NodeChange.class), ofKind(DifferenceKind.DELETE), refinedBy(addEPackageView))); |
| final Diff addNodeEClassExtension = Iterators.find(differences.iterator(), |
| and(instanceOf(NodeChange.class), ofKind(DifferenceKind.DELETE), refinedBy(addEClassView))); |
| final Diff addNodeEDataTypeExtension = Iterators.find(differences.iterator(), and( |
| instanceOf(NodeChange.class), ofKind(DifferenceKind.DELETE), refinedBy(addEDataTypeView))); |
| final Diff addNodeEENumExtension = Iterators.find(differences.iterator(), |
| and(instanceOf(NodeChange.class), ofKind(DifferenceKind.DELETE), refinedBy(addEEnumView))); |
| final Diff addNodeEAnnotationExtension = Iterators.find(differences.iterator(), and( |
| instanceOf(NodeChange.class), ofKind(DifferenceKind.DELETE), refinedBy(addEAnnotationView))); |
| |
| assertSame(Integer.valueOf(10), addNodeEPackageExtension.getRefinedBy().size()); |
| assertTrue(addNodeEPackageExtension.getRefinedBy().contains(addEPackageView)); |
| // for convenience: |
| assertTrue(addNodeEPackageExtension.getRefinedBy().contains(addNodeInEPackageView1)); |
| assertTrue(addNodeEPackageExtension.getRefinedBy().contains(addNodeInEPackageView2)); |
| assertTrue(addNodeEPackageExtension.getRefinedBy().contains(addDrawerStyleInNodeInEPackageView2)); |
| assertTrue(addNodeEPackageExtension.getRefinedBy().contains(addSortingStyleInNodeInEPackageView2)); |
| assertTrue(addNodeEPackageExtension.getRefinedBy().contains(addFilteringStyleInNodeInEPackageView2)); |
| assertTrue(addNodeEPackageExtension.getRefinedBy().contains(addShapeStyleInEPackageView)); |
| assertTrue(addNodeEPackageExtension.getRefinedBy().contains(addMultiDiagramLinkStyleInEPackageView)); |
| assertTrue(addNodeEPackageExtension.getRefinedBy().contains(addBoundsInEPackageView)); |
| assertTrue(addNodeEPackageExtension.getRefinedBy().contains(addRefElementInEPackageView)); |
| |
| assertSame(Integer.valueOf(13), addNodeEClassExtension.getRefinedBy().size()); |
| assertTrue(addNodeEClassExtension.getRefinedBy().contains(addEClassView)); |
| // for convenience: |
| assertTrue(addNodeEClassExtension.getRefinedBy().contains(addNodeInEClassView1)); |
| assertTrue(addNodeEClassExtension.getRefinedBy().contains(addNodeInEClassView2)); |
| assertTrue(addNodeEClassExtension.getRefinedBy().contains(addDrawerStyleInNodeInEClassView2)); |
| assertTrue(addNodeEClassExtension.getRefinedBy().contains(addSortingStyleInNodeInEClassView2)); |
| assertTrue(addNodeEClassExtension.getRefinedBy().contains(addFilteringStyleInNodeInEClassView2)); |
| assertTrue(addNodeEClassExtension.getRefinedBy().contains(addNodeInEClassView3)); |
| assertTrue(addNodeEClassExtension.getRefinedBy().contains(addDrawerStyleInNodeInEClassView3)); |
| assertTrue(addNodeEClassExtension.getRefinedBy().contains(addSortingStyleInNodeInEClassView3)); |
| assertTrue(addNodeEClassExtension.getRefinedBy().contains(addFilteringStyleInNodeInEClassView)); |
| assertTrue(addNodeEClassExtension.getRefinedBy().contains(addShapeStyleInEClassView)); |
| assertTrue(addNodeEClassExtension.getRefinedBy().contains(addRefElementInEClassView)); |
| assertTrue(addNodeEClassExtension.getRefinedBy().contains(addBoundsInEClassView)); |
| |
| assertSame(Integer.valueOf(6), addNodeEDataTypeExtension.getRefinedBy().size()); |
| assertTrue(addNodeEDataTypeExtension.getRefinedBy().contains(addEDataTypeView)); |
| // for convenience: |
| assertTrue(addNodeEDataTypeExtension.getRefinedBy().contains(addNodeInEDataTypeView1)); |
| assertTrue(addNodeEDataTypeExtension.getRefinedBy().contains(addNodeInEDataTypeView2)); |
| assertTrue(addNodeEDataTypeExtension.getRefinedBy().contains(addShapeStyleInEDataTypeView)); |
| assertTrue(addNodeEDataTypeExtension.getRefinedBy().contains(addRefElementInEDataTypeView)); |
| assertTrue(addNodeEDataTypeExtension.getRefinedBy().contains(addBoundsInEDataTypeView)); |
| |
| assertSame(Integer.valueOf(9), addNodeEENumExtension.getRefinedBy().size()); |
| assertTrue(addNodeEENumExtension.getRefinedBy().contains(addEEnumView)); |
| // for convenience: |
| assertTrue(addNodeEENumExtension.getRefinedBy().contains(addNodeInEEnumView1)); |
| assertTrue(addNodeEENumExtension.getRefinedBy().contains(addNodeInEEnumView2)); |
| assertTrue(addNodeEENumExtension.getRefinedBy().contains(addDrawerStyleInNodeInEEnumView2)); |
| assertTrue(addNodeEENumExtension.getRefinedBy().contains(addSortingStyleInNodeInEEnumView2)); |
| assertTrue(addNodeEENumExtension.getRefinedBy().contains(addFilteringStyleInNodeInEEnumView2)); |
| assertTrue(addNodeEENumExtension.getRefinedBy().contains(addShapeStyleInEEnumView)); |
| assertTrue(addNodeEENumExtension.getRefinedBy().contains(addRefElementInEEnumView)); |
| assertTrue(addNodeEENumExtension.getRefinedBy().contains(addBoundsInEEnumView)); |
| |
| assertSame(Integer.valueOf(9), addNodeEAnnotationExtension.getRefinedBy().size()); |
| assertTrue(addNodeEAnnotationExtension.getRefinedBy().contains(addEAnnotationView)); |
| // for convenience: |
| assertTrue(addNodeEAnnotationExtension.getRefinedBy().contains(addNodeInEAnnotationView1)); |
| assertTrue(addNodeEAnnotationExtension.getRefinedBy().contains(addNodeInEAnnotationView2)); |
| assertTrue( |
| addNodeEAnnotationExtension.getRefinedBy().contains(addDrawerStyleInNodeInEAnnotationView2)); |
| assertTrue( |
| addNodeEAnnotationExtension.getRefinedBy().contains(addSortingStyleInNodeInEAnnotationView2)); |
| assertTrue(addNodeEAnnotationExtension.getRefinedBy() |
| .contains(addFilteringStyleInNodeInEAnnotationView2)); |
| assertTrue(addNodeEAnnotationExtension.getRefinedBy().contains(addShapeStyleInEAnnotationView)); |
| assertTrue(addNodeEAnnotationExtension.getRefinedBy().contains(addRefElementInEAnnotationView)); |
| assertTrue(addNodeEAnnotationExtension.getRefinedBy().contains(addBoundsInEAnnotationView)); |
| |
| testIntersections(comparison); |
| } |
| |
| @Test |
| public void testA30UseCase() throws IOException { |
| final Resource left = input.getA3Left(); |
| final Resource right = input.getA3Right(); |
| |
| final Comparison comparison = compare(left.getResourceSet(), right.getResourceSet()); |
| |
| final List<Diff> differences = comparison.getDifferences(); |
| |
| // We should have no less and no more than 27 differences |
| assertSame(Integer.valueOf(27), Integer.valueOf(differences.size())); |
| |
| final Diff addEPackage = Iterators.find(differences.iterator(), added("tc1.EPackage0")); |
| |
| final Diff addEPackageView = Iterators.find(differences.iterator(), |
| and(valueIsView, valueNameMatches("1002", NotationPackage.Literals.VIEW__TYPE), |
| elementIs(((ReferenceChange)addEPackage).getValue()))); |
| final Diff addNodeInEPackageView1 = Iterators.find(differences.iterator(), |
| and(valueIsView, valueNameMatches("4006", NotationPackage.Literals.VIEW__TYPE))); |
| final Diff addNodeInEPackageView2 = Iterators.find(differences.iterator(), |
| and(valueIsView, valueNameMatches("5003", NotationPackage.Literals.VIEW__TYPE))); |
| final Diff addDrawerStyleInNodeInEPackageView2 = Iterators.find(differences.iterator(), |
| and(valueUnder(addNodeInEPackageView2), valueIsInstanceof(DrawerStyle.class))); |
| final Diff addSortingStyleInNodeInEPackageView2 = Iterators.find(differences.iterator(), |
| and(valueUnder(addNodeInEPackageView2), valueIsInstanceof(SortingStyle.class))); |
| final Diff addFilteringStyleInNodeInEPackageView2 = Iterators.find(differences.iterator(), |
| and(valueUnder(addNodeInEPackageView2), valueIsInstanceof(FilteringStyle.class))); |
| final Diff addShapeStyleInEPackageView = Iterators.find(differences.iterator(), |
| and(valueUnder(addEPackageView), valueIsInstanceof(ShapeStyle.class))); |
| final Diff addMultiDiagramLinkStyleInEPackageView = Iterators.find(differences.iterator(), |
| and(valueUnder(addEPackageView), valueIsInstanceof(MultiDiagramLinkStyle.class))); |
| final Diff addBoundsInEPackageView = Iterators.find(differences.iterator(), |
| and(valueUnder(addEPackageView), valueIsInstanceof(Bounds.class))); |
| final Diff addRefElementInEPackageView = Iterators.find(differences.iterator(), |
| and(valueIs(((ReferenceChange)addEPackage).getValue()), onFeature("element"))); |
| |
| final Diff addEClass = Iterators.find(differences.iterator(), added("tc1.EPackage0.EClass0")); |
| |
| final Diff addEClassView = Iterators.find(differences.iterator(), |
| and(valueIsView, valueNameMatches("2003", NotationPackage.Literals.VIEW__TYPE), |
| elementIs(((ReferenceChange)addEClass).getValue()))); |
| final Diff addNodeInEClassView1 = Iterators.find(differences.iterator(), |
| and(valueIsView, valueNameMatches("4002", NotationPackage.Literals.VIEW__TYPE))); |
| final Diff addNodeInEClassView2 = Iterators.find(differences.iterator(), |
| and(valueIsView, valueNameMatches("5004", NotationPackage.Literals.VIEW__TYPE))); |
| final Diff addDrawerStyleInNodeInEClassView2 = Iterators.find(differences.iterator(), |
| and(valueUnder(addNodeInEClassView2), valueIsInstanceof(DrawerStyle.class))); |
| final Diff addSortingStyleInNodeInEClassView2 = Iterators.find(differences.iterator(), |
| and(valueUnder(addNodeInEClassView2), valueIsInstanceof(SortingStyle.class))); |
| final Diff addFilteringStyleInNodeInEClassView2 = Iterators.find(differences.iterator(), |
| and(valueUnder(addNodeInEClassView2), valueIsInstanceof(FilteringStyle.class))); |
| final Diff addNodeInEClassView3 = Iterators.find(differences.iterator(), |
| and(valueIsView, valueNameMatches("5005", NotationPackage.Literals.VIEW__TYPE))); |
| final Diff addDrawerStyleInNodeInEClassView3 = Iterators.find(differences.iterator(), |
| and(valueUnder(addNodeInEClassView3), valueIsInstanceof(DrawerStyle.class))); |
| final Diff addSortingStyleInNodeInEClassView3 = Iterators.find(differences.iterator(), |
| and(valueUnder(addNodeInEClassView3), valueIsInstanceof(SortingStyle.class))); |
| final Diff addFilteringStyleInNodeInEClassView = Iterators.find(differences.iterator(), |
| and(valueUnder(addNodeInEClassView3), valueIsInstanceof(FilteringStyle.class))); |
| final Diff addShapeStyleInEClassView = Iterators.find(differences.iterator(), |
| valueUnder(addEClassView)); |
| final Diff addRefElementInEClassView = Iterators.find(differences.iterator(), |
| and(valueIs(((ReferenceChange)addEClass).getValue()), onFeature("element"))); |
| final Diff addBoundsInEClassView = Iterators.find(differences.iterator(), |
| and(valueUnder(addEClassView), valueIsInstanceof(Bounds.class))); |
| |
| assertSame(Integer.valueOf(2), |
| count(differences, and(instanceOf(NodeChange.class), ofKind(DifferenceKind.ADD)))); |
| |
| final Diff addNodeEPackageExtension = Iterators.find(differences.iterator(), |
| and(instanceOf(NodeChange.class), ofKind(DifferenceKind.ADD), |
| refinedBy(addRefElementInEPackageView))); |
| final Diff addNodeEClassExtension = Iterators.find(differences.iterator(), |
| and(instanceOf(NodeChange.class), ofKind(DifferenceKind.ADD), |
| refinedBy(addRefElementInEClassView))); |
| |
| assertSame(Integer.valueOf(10), addNodeEPackageExtension.getRefinedBy().size()); |
| assertTrue(addNodeEPackageExtension.getRefinedBy().contains(addEPackageView));// for convenience... |
| assertTrue(addNodeEPackageExtension.getRefinedBy().contains(addNodeInEPackageView1)); |
| assertTrue(addNodeEPackageExtension.getRefinedBy().contains(addNodeInEPackageView2)); |
| assertTrue(addNodeEPackageExtension.getRefinedBy().contains(addDrawerStyleInNodeInEPackageView2)); |
| assertTrue(addNodeEPackageExtension.getRefinedBy().contains(addSortingStyleInNodeInEPackageView2)); |
| assertTrue(addNodeEPackageExtension.getRefinedBy().contains(addFilteringStyleInNodeInEPackageView2)); |
| assertTrue(addNodeEPackageExtension.getRefinedBy().contains(addShapeStyleInEPackageView)); |
| assertTrue(addNodeEPackageExtension.getRefinedBy().contains(addMultiDiagramLinkStyleInEPackageView)); |
| assertTrue(addNodeEPackageExtension.getRefinedBy().contains(addBoundsInEPackageView)); |
| assertTrue(addNodeEPackageExtension.getRefinedBy().contains(addRefElementInEPackageView)); |
| |
| assertSame(Integer.valueOf(13), addNodeEClassExtension.getRefinedBy().size()); |
| assertTrue(addNodeEClassExtension.getRefinedBy().contains(addEClassView)); |
| assertTrue(addNodeEClassExtension.getRefinedBy().contains(addNodeInEClassView1)); |
| assertTrue(addNodeEClassExtension.getRefinedBy().contains(addNodeInEClassView2)); |
| assertTrue(addNodeEClassExtension.getRefinedBy().contains(addDrawerStyleInNodeInEClassView2)); |
| assertTrue(addNodeEClassExtension.getRefinedBy().contains(addSortingStyleInNodeInEClassView2)); |
| assertTrue(addNodeEClassExtension.getRefinedBy().contains(addFilteringStyleInNodeInEClassView2)); |
| assertTrue(addNodeEClassExtension.getRefinedBy().contains(addNodeInEClassView3)); |
| assertTrue(addNodeEClassExtension.getRefinedBy().contains(addDrawerStyleInNodeInEClassView3)); |
| assertTrue(addNodeEClassExtension.getRefinedBy().contains(addSortingStyleInNodeInEClassView3)); |
| assertTrue(addNodeEClassExtension.getRefinedBy().contains(addFilteringStyleInNodeInEClassView)); |
| assertTrue(addNodeEClassExtension.getRefinedBy().contains(addShapeStyleInEClassView)); |
| assertTrue(addNodeEClassExtension.getRefinedBy().contains(addRefElementInEClassView)); |
| assertTrue(addNodeEClassExtension.getRefinedBy().contains(addBoundsInEClassView)); |
| |
| assertFalse("No resource attachment changes expected", Iterators |
| .filter(differences.iterator(), instanceOf(ResourceAttachmentChange.class)).hasNext()); |
| |
| testIntersections(comparison); |
| } |
| |
| @Override |
| protected DiagramInputData getInput() { |
| return input; |
| } |
| |
| final Predicate<Diff> valueIsView = new Predicate<Diff>() { |
| public boolean apply(Diff input) { |
| return input instanceof ReferenceChange && ((ReferenceChange)input).getValue() instanceof View |
| && ((ReferenceChange)input).getReference().isContainment(); |
| } |
| }; |
| |
| private static Predicate<? super Diff> valueUnder(final Diff container) { |
| return new Predicate<Diff>() { |
| public boolean apply(Diff input) { |
| if (input instanceof ReferenceChange) { |
| final ReferenceChange diff = (ReferenceChange)input; |
| return container instanceof ReferenceChange |
| && diff.getValue().eContainer() == ((ReferenceChange)container).getValue(); |
| } |
| return false; |
| } |
| }; |
| } |
| |
| private static Predicate<? super Diff> refinedBy(final Diff refining) { |
| return new Predicate<Diff>() { |
| public boolean apply(Diff input) { |
| return input.getRefinedBy().contains(refining); |
| } |
| }; |
| } |
| |
| private static Predicate<? super Diff> valueIsInstanceof(final Class expectedValue) { |
| return new Predicate<Diff>() { |
| public boolean apply(Diff input) { |
| final Object value; |
| if (input instanceof ReferenceChange) { |
| value = ((ReferenceChange)input).getValue(); |
| } else if (input instanceof AttributeChange) { |
| value = ((AttributeChange)input).getValue(); |
| } else { |
| return false; |
| } |
| |
| return expectedValue.isInstance(value); |
| } |
| }; |
| } |
| |
| private static Predicate<? super Diff> elementIs(final EObject expectedValue) { |
| return new Predicate<Diff>() { |
| public boolean apply(Diff input) { |
| final Object value; |
| if (input instanceof ReferenceChange) { |
| value = ((ReferenceChange)input).getValue(); |
| return value instanceof View && ((View)value).getElement() == expectedValue; |
| } |
| return false; |
| } |
| }; |
| } |
| |
| } |