/******************************************************************************* * 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.tests.equi; import static org.eclipse.emf.compare.utils.EMFComparePredicates.addedToReference; import static org.eclipse.emf.compare.utils.EMFComparePredicates.changedReference; import static org.eclipse.emf.compare.utils.EMFComparePredicates.removedFromReference; 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.Iterators; import java.io.IOException; import java.util.List; import org.eclipse.emf.common.notify.Notifier; import org.eclipse.emf.compare.Comparison; import org.eclipse.emf.compare.Diff; import org.eclipse.emf.compare.EMFCompare; import org.eclipse.emf.compare.scope.DefaultComparisonScope; import org.eclipse.emf.compare.scope.IComparisonScope; import org.eclipse.emf.compare.tests.equi.data.EquiInputData; import org.eclipse.emf.ecore.resource.Resource; import org.junit.Test; @SuppressWarnings({"nls", "boxing" }) public class EquiComputingTest { enum TestKind { LEFT, RIGHT; } private EquiInputData input = new EquiInputData(); @Test public void testA1UseCase() throws IOException { final Resource left = input.getA1Left(); final Resource right = input.getA1Right(); final Comparison comparison = compare(left, right); testA1(TestKind.LEFT, comparison); } private static void testA1(final TestKind kind, final Comparison comparison) { List<Diff> differences = comparison.getDifferences(); // We should have no less and no more than 6 differences assertEquals(6, differences.size()); Predicate<? super Diff> changeRefA2BDiffDescription = null; Predicate<? super Diff> changeRefB2ADiffDescription = null; Predicate<? super Diff> changeRefC2DDiffDescription = null; Predicate<? super Diff> changeRefD2CDiffDescription = null; Predicate<? super Diff> changeRefE2FDiffDescription = null; Predicate<? super Diff> changeRefF2EDiffDescription = null; if (kind.equals(TestKind.LEFT)) { changeRefA2BDiffDescription = changedReference("Requirements.A", "destination", null, "Requirements.B"); changeRefB2ADiffDescription = changedReference("Requirements.B", "source", null, "Requirements.A"); changeRefC2DDiffDescription = addedToReference("Requirements.C", "destination", "Requirements.D"); changeRefD2CDiffDescription = changedReference("Requirements.D", "source", null, "Requirements.C"); changeRefE2FDiffDescription = addedToReference("Requirements.E", "destination", "Requirements.F"); changeRefF2EDiffDescription = addedToReference("Requirements.F", "source", "Requirements.E"); } else { changeRefA2BDiffDescription = changedReference("Requirements.A", "destination", "Requirements.B", null); changeRefB2ADiffDescription = changedReference("Requirements.B", "source", "Requirements.A", null); changeRefC2DDiffDescription = removedFromReference("Requirements.C", "destination", "Requirements.D"); changeRefD2CDiffDescription = changedReference("Requirements.D", "source", "Requirements.C", null); changeRefE2FDiffDescription = removedFromReference("Requirements.E", "destination", "Requirements.F"); changeRefF2EDiffDescription = removedFromReference("Requirements.F", "source", "Requirements.E"); } final Diff changeRefA2BDiff = Iterators.find(differences.iterator(), changeRefA2BDiffDescription); final Diff changeRefB2ADiff = Iterators.find(differences.iterator(), changeRefB2ADiffDescription); final Diff changeRefC2DDiff = Iterators.find(differences.iterator(), changeRefC2DDiffDescription); final Diff changeRefD2CDiff = Iterators.find(differences.iterator(), changeRefD2CDiffDescription); final Diff changeRefE2FDiff = Iterators.find(differences.iterator(), changeRefE2FDiffDescription); final Diff changeRefF2EDiff = Iterators.find(differences.iterator(), changeRefF2EDiffDescription); assertNotNull(changeRefA2BDiff); assertNotNull(changeRefB2ADiff); assertNotNull(changeRefC2DDiff); assertNotNull(changeRefD2CDiff); assertNotNull(changeRefE2FDiff); assertNotNull(changeRefF2EDiff); // CHECK EQUIVALENCE assertEquals(3, comparison.getEquivalences().size()); assertNotNull(changeRefA2BDiff.getEquivalence()); assertEquals(2, changeRefA2BDiff.getEquivalence().getDifferences().size()); assertTrue(changeRefA2BDiff.getEquivalence().getDifferences().contains(changeRefA2BDiff)); assertTrue(changeRefA2BDiff.getEquivalence().getDifferences().contains(changeRefB2ADiff)); assertNotNull(changeRefC2DDiff.getEquivalence()); assertEquals(2, changeRefC2DDiff.getEquivalence().getDifferences().size()); assertTrue(changeRefC2DDiff.getEquivalence().getDifferences().contains(changeRefC2DDiff)); assertTrue(changeRefC2DDiff.getEquivalence().getDifferences().contains(changeRefD2CDiff)); assertNotNull(changeRefE2FDiff.getEquivalence()); assertEquals(2, changeRefE2FDiff.getEquivalence().getDifferences().size()); assertTrue(changeRefE2FDiff.getEquivalence().getDifferences().contains(changeRefE2FDiff)); assertTrue(changeRefE2FDiff.getEquivalence().getDifferences().contains(changeRefF2EDiff)); } @Test public void testA2UseCase() throws IOException { final Resource left = input.getA2Left(); final Resource right = input.getA2Right(); final Comparison comparison = compare(left, right); testA2(TestKind.LEFT, comparison); } private static void testA2(final TestKind kind, final Comparison comparison) { List<Diff> differences = comparison.getDifferences(); // We should have no less and no more than 8 differences assertEquals(8, differences.size()); Predicate<? super Diff> changeRefC2D1DiffDescription = null; Predicate<? super Diff> changeRefC2D2DiffDescription = null; Predicate<? super Diff> changeRefD12CDiffDescription = null; Predicate<? super Diff> changeRefD22CDiffDescription = null; Predicate<? super Diff> changeRefE2F1DiffDescription = null; Predicate<? super Diff> changeRefE2F2DiffDescription = null; Predicate<? super Diff> changeRefF12EDiffDescription = null; Predicate<? super Diff> changeRefF22EDiffDescription = null; if (kind.equals(TestKind.LEFT)) { changeRefC2D1DiffDescription = addedToReference("Requirements.C", "destination", "Requirements.D1"); changeRefC2D2DiffDescription = addedToReference("Requirements.C", "destination", "Requirements.D2"); changeRefD12CDiffDescription = changedReference("Requirements.D1", "source", null, "Requirements.C"); changeRefD22CDiffDescription = changedReference("Requirements.D2", "source", null, "Requirements.C"); changeRefE2F1DiffDescription = addedToReference("Requirements.E", "destination", "Requirements.F1"); changeRefE2F2DiffDescription = addedToReference("Requirements.E", "destination", "Requirements.F2"); changeRefF12EDiffDescription = addedToReference("Requirements.F1", "source", "Requirements.E"); changeRefF22EDiffDescription = addedToReference("Requirements.F2", "source", "Requirements.E"); } else { changeRefC2D1DiffDescription = removedFromReference("Requirements.C", "destination", "Requirements.D1"); changeRefC2D2DiffDescription = removedFromReference("Requirements.C", "destination", "Requirements.D2"); changeRefD12CDiffDescription = changedReference("Requirements.D1", "source", "Requirements.C", null); changeRefD22CDiffDescription = changedReference("Requirements.D2", "source", "Requirements.C", null); changeRefE2F1DiffDescription = removedFromReference("Requirements.E", "destination", "Requirements.F1"); changeRefE2F2DiffDescription = removedFromReference("Requirements.E", "destination", "Requirements.F2"); changeRefF12EDiffDescription = removedFromReference("Requirements.F1", "source", "Requirements.E"); changeRefF22EDiffDescription = removedFromReference("Requirements.F2", "source", "Requirements.E"); } final Diff changeRefC2D1Diff = Iterators.find(differences.iterator(), changeRefC2D1DiffDescription); final Diff changeRefC2D2Diff = Iterators.find(differences.iterator(), changeRefC2D2DiffDescription); final Diff changeRefD12CDiff = Iterators.find(differences.iterator(), changeRefD12CDiffDescription); final Diff changeRefD22CDiff = Iterators.find(differences.iterator(), changeRefD22CDiffDescription); final Diff changeRefE2F1Diff = Iterators.find(differences.iterator(), changeRefE2F1DiffDescription); final Diff changeRefE2F2Diff = Iterators.find(differences.iterator(), changeRefE2F2DiffDescription); final Diff changeRefF12EDiff = Iterators.find(differences.iterator(), changeRefF12EDiffDescription); final Diff changeRefF22EDiff = Iterators.find(differences.iterator(), changeRefF22EDiffDescription); assertNotNull(changeRefC2D1Diff); assertNotNull(changeRefC2D2Diff); assertNotNull(changeRefD12CDiff); assertNotNull(changeRefD22CDiff); assertNotNull(changeRefE2F1Diff); assertNotNull(changeRefE2F2Diff); assertNotNull(changeRefF12EDiff); assertNotNull(changeRefF22EDiff); // CHECK EQUIVALENCE assertEquals(4, comparison.getEquivalences().size()); assertNotNull(changeRefC2D1Diff.getEquivalence()); assertEquals(2, changeRefC2D1Diff.getEquivalence().getDifferences().size()); assertTrue(changeRefC2D1Diff.getEquivalence().getDifferences().contains(changeRefC2D1Diff)); assertTrue(changeRefC2D1Diff.getEquivalence().getDifferences().contains(changeRefD12CDiff)); assertNotNull(changeRefC2D2Diff.getEquivalence()); assertEquals(2, changeRefC2D2Diff.getEquivalence().getDifferences().size()); assertTrue(changeRefC2D2Diff.getEquivalence().getDifferences().contains(changeRefC2D2Diff)); assertTrue(changeRefC2D2Diff.getEquivalence().getDifferences().contains(changeRefD22CDiff)); assertNotNull(changeRefE2F1Diff.getEquivalence()); assertEquals(2, changeRefE2F1Diff.getEquivalence().getDifferences().size()); assertTrue(changeRefE2F1Diff.getEquivalence().getDifferences().contains(changeRefE2F1Diff)); assertTrue(changeRefE2F1Diff.getEquivalence().getDifferences().contains(changeRefF12EDiff)); assertNotNull(changeRefE2F2Diff.getEquivalence()); assertEquals(2, changeRefE2F2Diff.getEquivalence().getDifferences().size()); assertTrue(changeRefE2F2Diff.getEquivalence().getDifferences().contains(changeRefE2F2Diff)); assertTrue(changeRefE2F2Diff.getEquivalence().getDifferences().contains(changeRefF22EDiff)); } @Test public void testA3UseCase() throws IOException { final Resource left = input.getA3Left(); final Resource right = input.getA3Right(); final Comparison comparison = compare(left, right); testA3(TestKind.LEFT, comparison); } private static void testA3(final TestKind kind, final Comparison comparison) { List<Diff> differences = comparison.getDifferences(); // We should have no less and no more than 8 differences assertEquals(8, differences.size()); Predicate<? super Diff> C1toD1DiffDescription = null; Predicate<? super Diff> C1toD2DiffDescription = null; Predicate<? super Diff> C2toD1DiffDescription = null; Predicate<? super Diff> C2toD2DiffDescription = null; Predicate<? super Diff> D1toC1DiffDescription = null; Predicate<? super Diff> D1toC2DiffDescription = null; Predicate<? super Diff> D2toC2DiffDescription = null; Predicate<? super Diff> D2toC1DiffDescription = null; if (kind.equals(TestKind.LEFT)) { C1toD1DiffDescription = addedToReference("Requirements.C1", "destination", "Requirements.D1"); C1toD2DiffDescription = addedToReference("Requirements.C1", "destination", "Requirements.D2"); C2toD1DiffDescription = addedToReference("Requirements.C2", "destination", "Requirements.D1"); C2toD2DiffDescription = addedToReference("Requirements.C2", "source", "Requirements.D2"); D1toC1DiffDescription = addedToReference("Requirements.D1", "source", "Requirements.C1"); D1toC2DiffDescription = addedToReference("Requirements.D1", "source", "Requirements.C2"); D2toC2DiffDescription = addedToReference("Requirements.D2", "destination", "Requirements.C2"); D2toC1DiffDescription = addedToReference("Requirements.D2", "source", "Requirements.C1"); } else { C1toD1DiffDescription = removedFromReference("Requirements.C1", "destination", "Requirements.D1"); C1toD2DiffDescription = removedFromReference("Requirements.C1", "destination", "Requirements.D2"); C2toD1DiffDescription = removedFromReference("Requirements.C2", "destination", "Requirements.D1"); C2toD2DiffDescription = removedFromReference("Requirements.C2", "source", "Requirements.D2"); D1toC1DiffDescription = removedFromReference("Requirements.D1", "source", "Requirements.C1"); D1toC2DiffDescription = removedFromReference("Requirements.D1", "source", "Requirements.C2"); D2toC2DiffDescription = removedFromReference("Requirements.D2", "destination", "Requirements.C2"); D2toC1DiffDescription = removedFromReference("Requirements.D2", "source", "Requirements.C1"); } final Diff C1toD1Diff = Iterators.find(differences.iterator(), C1toD1DiffDescription); final Diff C1toD2Diff = Iterators.find(differences.iterator(), C1toD2DiffDescription); final Diff C2toD1Diff = Iterators.find(differences.iterator(), C2toD1DiffDescription); final Diff C2toD2Diff = Iterators.find(differences.iterator(), C2toD2DiffDescription); final Diff D1toC1Diff = Iterators.find(differences.iterator(), D1toC1DiffDescription); final Diff D1toC2Diff = Iterators.find(differences.iterator(), D1toC2DiffDescription); final Diff D2toC2Diff = Iterators.find(differences.iterator(), D2toC2DiffDescription); final Diff D2toC1Diff = Iterators.find(differences.iterator(), D2toC1DiffDescription); assertNotNull(C1toD1Diff); assertNotNull(C1toD2Diff); assertNotNull(C2toD1Diff); assertNotNull(C2toD2Diff); assertNotNull(D1toC1Diff); assertNotNull(D1toC2Diff); assertNotNull(D2toC2Diff); assertNotNull(D2toC1Diff); // CHECK EQUIVALENCE assertEquals(4, comparison.getEquivalences().size()); assertNotNull(C1toD1Diff.getEquivalence()); assertEquals(2, C1toD1Diff.getEquivalence().getDifferences().size()); assertTrue(C1toD1Diff.getEquivalence().getDifferences().contains(C1toD1Diff)); assertTrue(C1toD1Diff.getEquivalence().getDifferences().contains(D1toC1Diff)); assertNotNull(C1toD2Diff.getEquivalence()); assertEquals(2, C1toD2Diff.getEquivalence().getDifferences().size()); assertTrue(C1toD2Diff.getEquivalence().getDifferences().contains(C1toD2Diff)); assertTrue(C1toD2Diff.getEquivalence().getDifferences().contains(D2toC1Diff)); assertNotNull(C2toD1Diff.getEquivalence()); assertEquals(2, C2toD1Diff.getEquivalence().getDifferences().size()); assertTrue(C2toD1Diff.getEquivalence().getDifferences().contains(C2toD1Diff)); assertTrue(C2toD1Diff.getEquivalence().getDifferences().contains(D1toC2Diff)); assertNotNull(C2toD2Diff.getEquivalence()); assertEquals(2, C2toD2Diff.getEquivalence().getDifferences().size()); assertTrue(C2toD2Diff.getEquivalence().getDifferences().contains(C2toD2Diff)); assertTrue(C2toD2Diff.getEquivalence().getDifferences().contains(D2toC2Diff)); } @Test public void testA4UseCase() throws IOException { final Resource left = input.getA4Left(); final Resource right = input.getA4Right(); final Comparison comparison = compare(left, right); testA4(TestKind.LEFT, comparison); } private static void testA4(final TestKind kind, final Comparison comparison) { List<Diff> differences = comparison.getDifferences(); // We should have no less and no more than 8 differences assertEquals(4, differences.size()); Predicate<? super Diff> AtoBdestDiffDescription = null; Predicate<? super Diff> AtoBsourceDiffDescription = null; Predicate<? super Diff> BtoAdestDiffDescription = null; Predicate<? super Diff> BtoAsourceDiffDescription = null; if (kind.equals(TestKind.LEFT)) { AtoBdestDiffDescription = addedToReference("Requirements.A", "destination", "Requirements.B"); AtoBsourceDiffDescription = addedToReference("Requirements.A", "source", "Requirements.B"); BtoAdestDiffDescription = addedToReference("Requirements.B", "destination", "Requirements.A"); BtoAsourceDiffDescription = addedToReference("Requirements.B", "source", "Requirements.A"); } else { AtoBdestDiffDescription = removedFromReference("Requirements.A", "destination", "Requirements.B"); AtoBsourceDiffDescription = removedFromReference("Requirements.A", "source", "Requirements.B"); BtoAdestDiffDescription = removedFromReference("Requirements.B", "destination", "Requirements.A"); BtoAsourceDiffDescription = removedFromReference("Requirements.B", "source", "Requirements.A"); } final Diff AtoBdestDiff = Iterators.find(differences.iterator(), AtoBdestDiffDescription); final Diff AtoBsourceDiff = Iterators.find(differences.iterator(), AtoBsourceDiffDescription); final Diff BtoAdestDiff = Iterators.find(differences.iterator(), BtoAdestDiffDescription); final Diff BtoAsourceDiff = Iterators.find(differences.iterator(), BtoAsourceDiffDescription); assertNotNull(AtoBdestDiff); assertNotNull(AtoBsourceDiff); assertNotNull(BtoAdestDiff); assertNotNull(BtoAsourceDiff); // CHECK EQUIVALENCE assertEquals(2, comparison.getEquivalences().size()); assertNotNull(AtoBdestDiff.getEquivalence()); assertEquals(2, AtoBdestDiff.getEquivalence().getDifferences().size()); assertTrue(AtoBdestDiff.getEquivalence().getDifferences().contains(AtoBdestDiff)); assertTrue(AtoBdestDiff.getEquivalence().getDifferences().contains(BtoAsourceDiff)); assertNotNull(AtoBsourceDiff.getEquivalence()); assertEquals(2, AtoBsourceDiff.getEquivalence().getDifferences().size()); assertTrue(AtoBsourceDiff.getEquivalence().getDifferences().contains(AtoBsourceDiff)); assertTrue(AtoBsourceDiff.getEquivalence().getDifferences().contains(BtoAdestDiff)); } @Test public void testA5UseCase() throws IOException { final Resource left = input.getA5Left(); final Resource right = input.getA5Right(); final Comparison comparison = compare(left, right); testA5(TestKind.LEFT, comparison); } private static void testA5(final TestKind kind, final Comparison comparison) { List<Diff> differences = comparison.getDifferences(); // We should have no less and no more than 12 differences assertEquals(12, differences.size()); Predicate<? super Diff> changeRefA2BDiffDescription = null; Predicate<? super Diff> changeRefB2ADiffDescription = null; Predicate<? super Diff> changeRefC2DDiffDescription = null; Predicate<? super Diff> changeRefD2CDiffDescription = null; Predicate<? super Diff> changeRefE2FDiffDescription = null; Predicate<? super Diff> changeRefF2EDiffDescription = null; Predicate<? super Diff> addADiffDescription = null; Predicate<? super Diff> addBDiffDescription = null; Predicate<? super Diff> addCDiffDescription = null; Predicate<? super Diff> addDDiffDescription = null; Predicate<? super Diff> addEDiffDescription = null; Predicate<? super Diff> addFDiffDescription = null; if (kind.equals(TestKind.LEFT)) { changeRefA2BDiffDescription = changedReference("Requirements.A", "destination", null, "Requirements.B"); changeRefB2ADiffDescription = changedReference("Requirements.B", "source", null, "Requirements.A"); changeRefC2DDiffDescription = addedToReference("Requirements.C", "destination", "Requirements.D"); changeRefD2CDiffDescription = changedReference("Requirements.D", "source", null, "Requirements.C"); changeRefE2FDiffDescription = addedToReference("Requirements.E", "destination", "Requirements.F"); changeRefF2EDiffDescription = addedToReference("Requirements.F", "source", "Requirements.E"); addADiffDescription = addedToReference("Requirements", "containmentRef1", "Requirements.A"); addBDiffDescription = addedToReference("Requirements", "containmentRef1", "Requirements.B"); addCDiffDescription = addedToReference("Requirements", "containmentRef1", "Requirements.C"); addDDiffDescription = addedToReference("Requirements", "containmentRef1", "Requirements.D"); addEDiffDescription = addedToReference("Requirements", "containmentRef1", "Requirements.E"); addFDiffDescription = addedToReference("Requirements", "containmentRef1", "Requirements.F"); } else { changeRefA2BDiffDescription = changedReference("Requirements.A", "destination", "Requirements.B", null); changeRefB2ADiffDescription = changedReference("Requirements.B", "source", "Requirements.A", null); changeRefC2DDiffDescription = removedFromReference("Requirements.C", "destination", "Requirements.D"); changeRefD2CDiffDescription = changedReference("Requirements.D", "source", "Requirements.C", null); changeRefE2FDiffDescription = removedFromReference("Requirements.E", "destination", "Requirements.F"); changeRefF2EDiffDescription = removedFromReference("Requirements.F", "source", "Requirements.E"); addADiffDescription = removedFromReference("Requirements", "containmentRef1", "Requirements.A"); addBDiffDescription = removedFromReference("Requirements", "containmentRef1", "Requirements.B"); addCDiffDescription = removedFromReference("Requirements", "containmentRef1", "Requirements.C"); addDDiffDescription = removedFromReference("Requirements", "containmentRef1", "Requirements.D"); addEDiffDescription = removedFromReference("Requirements", "containmentRef1", "Requirements.E"); addFDiffDescription = removedFromReference("Requirements", "containmentRef1", "Requirements.F"); } final Diff changeRefA2BDiff = Iterators.find(differences.iterator(), changeRefA2BDiffDescription); final Diff changeRefB2ADiff = Iterators.find(differences.iterator(), changeRefB2ADiffDescription); final Diff changeRefC2DDiff = Iterators.find(differences.iterator(), changeRefC2DDiffDescription); final Diff changeRefD2CDiff = Iterators.find(differences.iterator(), changeRefD2CDiffDescription); final Diff changeRefE2FDiff = Iterators.find(differences.iterator(), changeRefE2FDiffDescription); final Diff changeRefF2EDiff = Iterators.find(differences.iterator(), changeRefF2EDiffDescription); final Diff addADiff = Iterators.find(differences.iterator(), addADiffDescription); final Diff addBDiff = Iterators.find(differences.iterator(), addBDiffDescription); final Diff addCDiff = Iterators.find(differences.iterator(), addCDiffDescription); final Diff addDDiff = Iterators.find(differences.iterator(), addDDiffDescription); final Diff addEDiff = Iterators.find(differences.iterator(), addEDiffDescription); final Diff addFDiff = Iterators.find(differences.iterator(), addFDiffDescription); assertNotNull(changeRefA2BDiff); assertNotNull(changeRefB2ADiff); assertNotNull(changeRefC2DDiff); assertNotNull(changeRefD2CDiff); assertNotNull(changeRefE2FDiff); assertNotNull(changeRefF2EDiff); assertNotNull(addADiff); assertNotNull(addBDiff); assertNotNull(addCDiff); assertNotNull(addDDiff); assertNotNull(addEDiff); assertNotNull(addFDiff); // CHECK EQUIVALENCE assertEquals(3, comparison.getEquivalences().size()); assertNotNull(changeRefA2BDiff.getEquivalence()); assertEquals(2, changeRefA2BDiff.getEquivalence().getDifferences().size()); assertTrue(changeRefA2BDiff.getEquivalence().getDifferences().contains(changeRefA2BDiff)); assertTrue(changeRefA2BDiff.getEquivalence().getDifferences().contains(changeRefB2ADiff)); assertNotNull(changeRefC2DDiff.getEquivalence()); assertEquals(2, changeRefC2DDiff.getEquivalence().getDifferences().size()); assertTrue(changeRefC2DDiff.getEquivalence().getDifferences().contains(changeRefC2DDiff)); assertTrue(changeRefC2DDiff.getEquivalence().getDifferences().contains(changeRefD2CDiff)); assertNotNull(changeRefE2FDiff.getEquivalence()); assertEquals(2, changeRefE2FDiff.getEquivalence().getDifferences().size()); assertTrue(changeRefE2FDiff.getEquivalence().getDifferences().contains(changeRefE2FDiff)); assertTrue(changeRefE2FDiff.getEquivalence().getDifferences().contains(changeRefF2EDiff)); } @Test public void testB1UseCase() throws IOException { final Resource left = input.getA1Left(); final Resource right = input.getA1Right(); Comparison comparison = compare(right, left); testA1(TestKind.RIGHT, comparison); } @Test public void testB2UseCase() throws IOException { final Resource left = input.getA2Left(); final Resource right = input.getA2Right(); Comparison comparison = compare(right, left); testA2(TestKind.RIGHT, comparison); } @Test public void testB3UseCase() throws IOException { final Resource left = input.getA3Left(); final Resource right = input.getA3Right(); Comparison comparison = compare(right, left); testA3(TestKind.RIGHT, comparison); } @Test public void testB4UseCase() throws IOException { final Resource left = input.getA4Left(); final Resource right = input.getA4Right(); Comparison comparison = compare(right, left); testA4(TestKind.RIGHT, comparison); } @Test public void testB5UseCase() throws IOException { final Resource left = input.getA5Left(); final Resource right = input.getA5Right(); Comparison comparison = compare(right, left); testA5(TestKind.RIGHT, comparison); } @Test public void testC1UseCase() throws IOException { final Resource left = input.getC1Left(); final Resource right = input.getC1Right(); final Comparison comparison = compare(left, right); testC1(TestKind.LEFT, comparison); } private static void testC1(final TestKind kind, final Comparison comparison) { List<Diff> differences = comparison.getDifferences(); // We should have no less and no more than 3 differences assertEquals(3, differences.size()); Predicate<? super Diff> changeRefA2BDiffDescription = null; Predicate<? super Diff> changeRefB2ADiffDescription = null; Predicate<? super Diff> changeRefC2ADiffDescription = null; if (kind.equals(TestKind.LEFT)) { changeRefA2BDiffDescription = changedReference("Requirements.A", "destination", "Requirements.B", "Requirements.C"); changeRefB2ADiffDescription = changedReference("Requirements.B", "source", "Requirements.A", null); changeRefC2ADiffDescription = changedReference("Requirements.C", "source", null, "Requirements.A"); } else { changeRefA2BDiffDescription = changedReference("Requirements.A", "destination", "Requirements.C", "Requirements.B"); changeRefB2ADiffDescription = changedReference("Requirements.B", "source", null, "Requirements.A"); changeRefC2ADiffDescription = changedReference("Requirements.C", "source", "Requirements.A", null); } final Diff changeRefA2BDiff = Iterators.find(differences.iterator(), changeRefA2BDiffDescription); final Diff changeRefB2ADiff = Iterators.find(differences.iterator(), changeRefB2ADiffDescription); final Diff changeRefC2ADiff = Iterators.find(differences.iterator(), changeRefC2ADiffDescription); assertNotNull(changeRefA2BDiff); assertNotNull(changeRefB2ADiff); assertNotNull(changeRefC2ADiff); // CHECK EQUIVALENCE assertEquals(1, comparison.getEquivalences().size()); assertNotNull(changeRefA2BDiff.getEquivalence()); assertEquals(3, changeRefA2BDiff.getEquivalence().getDifferences().size()); assertTrue(changeRefA2BDiff.getEquivalence().getDifferences().contains(changeRefA2BDiff)); assertTrue(changeRefA2BDiff.getEquivalence().getDifferences().contains(changeRefB2ADiff)); assertTrue(changeRefA2BDiff.getEquivalence().getDifferences().contains(changeRefC2ADiff)); } @Test public void testC2UseCase() throws IOException { final Resource left = input.getC2Left(); final Resource right = input.getC2Right(); final Comparison comparison = compare(left, right); testC2(TestKind.LEFT, comparison); } private static void testC2(final TestKind kind, final Comparison comparison) { List<Diff> differences = comparison.getDifferences(); // We should have no less and no more than 4 differences assertEquals(4, differences.size()); Predicate<? super Diff> changeRefA2BDiffDescription = null; Predicate<? super Diff> changeRefB2ADiffDescription = null; Predicate<? super Diff> changeRefC2ADiffDescription = null; Predicate<? super Diff> addCDiffDescription = null; if (kind.equals(TestKind.LEFT)) { changeRefA2BDiffDescription = changedReference("Requirements.A", "destination", "Requirements.B", "Requirements.C"); changeRefB2ADiffDescription = changedReference("Requirements.B", "source", "Requirements.A", null); changeRefC2ADiffDescription = changedReference("Requirements.C", "source", null, "Requirements.A"); addCDiffDescription = addedToReference("Requirements", "containmentRef1", "Requirements.C"); } else { changeRefA2BDiffDescription = changedReference("Requirements.A", "destination", "Requirements.C", "Requirements.B"); changeRefB2ADiffDescription = changedReference("Requirements.B", "source", null, "Requirements.A"); changeRefC2ADiffDescription = changedReference("Requirements.C", "source", "Requirements.A", null); addCDiffDescription = removedFromReference("Requirements", "containmentRef1", "Requirements.C"); } final Diff changeRefA2BDiff = Iterators.find(differences.iterator(), changeRefA2BDiffDescription); final Diff changeRefB2ADiff = Iterators.find(differences.iterator(), changeRefB2ADiffDescription); final Diff changeRefC2ADiff = Iterators.find(differences.iterator(), changeRefC2ADiffDescription); final Diff addCDiff = Iterators.find(differences.iterator(), addCDiffDescription); assertNotNull(changeRefA2BDiff); assertNotNull(changeRefB2ADiff); assertNotNull(changeRefC2ADiff); assertNotNull(addCDiff); // CHECK EQUIVALENCE assertEquals(1, comparison.getEquivalences().size()); assertNotNull(changeRefA2BDiff.getEquivalence()); assertEquals(3, changeRefA2BDiff.getEquivalence().getDifferences().size()); assertTrue(changeRefA2BDiff.getEquivalence().getDifferences().contains(changeRefA2BDiff)); assertTrue(changeRefA2BDiff.getEquivalence().getDifferences().contains(changeRefB2ADiff)); assertTrue(changeRefA2BDiff.getEquivalence().getDifferences().contains(changeRefC2ADiff)); } @Test public void testC3UseCase() throws IOException { final Resource left = input.getC3Left(); final Resource right = input.getC3Right(); final Comparison comparison = compare(left, right); testC3(TestKind.LEFT, comparison); } private static void testC3(final TestKind kind, final Comparison comparison) { List<Diff> differences = comparison.getDifferences(); // We should have no less and no more than 4 differences assertEquals(4, differences.size()); Predicate<? super Diff> changeRefA2CDiffDescription = null; Predicate<? super Diff> deleteBDiffDescription = null; Predicate<? super Diff> changeRefC2ADiffDescription = null; Predicate<? super Diff> changeRefB2ADiffDescription = null; if (kind.equals(TestKind.LEFT)) { changeRefA2CDiffDescription = changedReference("Requirements.A", "destination", "Requirements.B", "Requirements.C"); changeRefC2ADiffDescription = changedReference("Requirements.C", "source", null, "Requirements.A"); deleteBDiffDescription = removedFromReference("Requirements", "containmentRef1", "Requirements.B"); changeRefB2ADiffDescription = changedReference("Requirements.B", "source", "Requirements.A", null); } else { changeRefA2CDiffDescription = changedReference("Requirements.A", "destination", "Requirements.C", "Requirements.B"); changeRefC2ADiffDescription = changedReference("Requirements.C", "source", "Requirements.A", null); deleteBDiffDescription = addedToReference("Requirements", "containmentRef1", "Requirements.B"); changeRefB2ADiffDescription = changedReference("Requirements.B", "source", null, "Requirements.A"); } final Diff changeRefA2CDiff = Iterators.find(differences.iterator(), changeRefA2CDiffDescription); final Diff changeRefC2ADiff = Iterators.find(differences.iterator(), changeRefC2ADiffDescription); final Diff deleteBDiff = Iterators.find(differences.iterator(), deleteBDiffDescription); final Diff changeRefB2ADiff = Iterators.find(differences.iterator(), changeRefB2ADiffDescription); assertNotNull(changeRefA2CDiff); assertNotNull(changeRefC2ADiff); assertNotNull(deleteBDiff); assertNotNull(changeRefB2ADiff); // CHECK EQUIVALENCE assertEquals(1, comparison.getEquivalences().size()); assertNotNull(changeRefA2CDiff.getEquivalence()); assertEquals(3, changeRefA2CDiff.getEquivalence().getDifferences().size()); assertTrue(changeRefA2CDiff.getEquivalence().getDifferences().contains(changeRefA2CDiff)); assertTrue(changeRefA2CDiff.getEquivalence().getDifferences().contains(changeRefC2ADiff)); assertTrue(changeRefA2CDiff.getEquivalence().getDifferences().contains(changeRefB2ADiff)); } @Test public void testC4UseCase() throws IOException { final Resource left = input.getC4Left(); final Resource right = input.getC4Right(); final Comparison comparison = compare(left, right); testC4(TestKind.LEFT, comparison); } private static void testC4(final TestKind kind, final Comparison comparison) { List<Diff> differences = comparison.getDifferences(); // We should have no less and no more than 5 differences assertEquals(5, differences.size()); Predicate<? super Diff> changeRefA2CDiffDescription = null; Predicate<? super Diff> deleteBDiffDescription = null; Predicate<? super Diff> changeRefC2ADiffDescription = null; Predicate<? super Diff> changeRefB2ADiffDescription = null; Predicate<? super Diff> addCDiffDescription = null; if (kind.equals(TestKind.LEFT)) { changeRefA2CDiffDescription = changedReference("Requirements.A", "destination", "Requirements.B", "Requirements.C"); changeRefC2ADiffDescription = changedReference("Requirements.C", "source", null, "Requirements.A"); deleteBDiffDescription = removedFromReference("Requirements", "containmentRef1", "Requirements.B"); changeRefB2ADiffDescription = changedReference("Requirements.B", "source", "Requirements.A", null); addCDiffDescription = addedToReference("Requirements", "containmentRef1", "Requirements.C"); } else { changeRefA2CDiffDescription = changedReference("Requirements.A", "destination", "Requirements.C", "Requirements.B"); changeRefC2ADiffDescription = changedReference("Requirements.C", "source", "Requirements.A", null); deleteBDiffDescription = addedToReference("Requirements", "containmentRef1", "Requirements.B"); changeRefB2ADiffDescription = changedReference("Requirements.B", "source", null, "Requirements.A"); addCDiffDescription = removedFromReference("Requirements", "containmentRef1", "Requirements.C"); } final Diff changeRefA2CDiff = Iterators.find(differences.iterator(), changeRefA2CDiffDescription); final Diff changeRefC2ADiff = Iterators.find(differences.iterator(), changeRefC2ADiffDescription); final Diff deleteBDiff = Iterators.find(differences.iterator(), deleteBDiffDescription); final Diff changeRefB2ADiff = Iterators.find(differences.iterator(), changeRefB2ADiffDescription); final Diff addCDiff = Iterators.find(differences.iterator(), addCDiffDescription); assertNotNull(changeRefA2CDiff); assertNotNull(changeRefC2ADiff); assertNotNull(deleteBDiff); assertNotNull(changeRefB2ADiff); assertNotNull(addCDiff); // CHECK EQUIVALENCE assertEquals(1, comparison.getEquivalences().size()); assertNotNull(changeRefA2CDiff.getEquivalence()); assertEquals(3, changeRefA2CDiff.getEquivalence().getDifferences().size()); assertTrue(changeRefA2CDiff.getEquivalence().getDifferences().contains(changeRefA2CDiff)); assertTrue(changeRefA2CDiff.getEquivalence().getDifferences().contains(changeRefC2ADiff)); assertTrue(changeRefA2CDiff.getEquivalence().getDifferences().contains(changeRefB2ADiff)); } @Test public void testD1UseCase() throws IOException { final Resource left = input.getD1Left(); final Resource right = input.getD1Right(); final Comparison comparison = compare(left, right); testD1(TestKind.LEFT, comparison); } private static void testD1(final TestKind kind, final Comparison comparison) { List<Diff> differences = comparison.getDifferences(); // We should have no less and no more than 16 differences assertEquals(16, differences.size()); Predicate<? super Diff> delBonADiffDescription = null; Predicate<? super Diff> delAonBDiffDescription = null; Predicate<? super Diff> addDonADiffDescription = null; Predicate<? super Diff> addEonADiffDescription = null; Predicate<? super Diff> delFonBDiffDescription = null; Predicate<? super Diff> addFonCDiffDescription = null; Predicate<? super Diff> addAonDDiffDescription = null; Predicate<? super Diff> delFonDDiffDescription = null; Predicate<? super Diff> addAonEDiffDescription = null; Predicate<? super Diff> addFonEDiffDescription = null; Predicate<? super Diff> delDonFDiffDescription = null; Predicate<? super Diff> delBonFDiffDescription = null; Predicate<? super Diff> addEonFDiffDescription = null; Predicate<? super Diff> addConFDiffDescription = null; Predicate<? super Diff> delBDiffDescription = null; Predicate<? super Diff> addEDiffDescription = null; if (kind.equals(TestKind.LEFT)) { delBonADiffDescription = removedFromReference("Requirements.A", "destination", "Requirements.B"); delAonBDiffDescription = removedFromReference("Requirements.B", "source", "Requirements.A"); addDonADiffDescription = addedToReference("Requirements.A", "destination", "Requirements.D"); addEonADiffDescription = addedToReference("Requirements.A", "destination", "Requirements.E"); delFonBDiffDescription = removedFromReference("Requirements.B", "source", "Requirements.F"); addFonCDiffDescription = addedToReference("Requirements.C", "source", "Requirements.F"); addAonDDiffDescription = addedToReference("Requirements.D", "source", "Requirements.A"); delFonDDiffDescription = removedFromReference("Requirements.D", "source", "Requirements.F"); addAonEDiffDescription = addedToReference("Requirements.E", "source", "Requirements.A"); addFonEDiffDescription = addedToReference("Requirements.E", "source", "Requirements.F"); delDonFDiffDescription = removedFromReference("Requirements.F", "destination", "Requirements.D"); delBonFDiffDescription = removedFromReference("Requirements.F", "destination", "Requirements.B"); addEonFDiffDescription = addedToReference("Requirements.F", "destination", "Requirements.E"); addConFDiffDescription = addedToReference("Requirements.F", "destination", "Requirements.C"); delBDiffDescription = removedFromReference("Requirements", "containmentRef1", "Requirements.B"); addEDiffDescription = addedToReference("Requirements", "containmentRef1", "Requirements.E"); } else { delBonADiffDescription = addedToReference("Requirements.A", "destination", "Requirements.B"); delAonBDiffDescription = addedToReference("Requirements.B", "source", "Requirements.A"); addDonADiffDescription = removedFromReference("Requirements.A", "destination", "Requirements.D"); addEonADiffDescription = removedFromReference("Requirements.A", "destination", "Requirements.E"); delFonBDiffDescription = addedToReference("Requirements.B", "source", "Requirements.F"); addFonCDiffDescription = removedFromReference("Requirements.C", "source", "Requirements.F"); addAonDDiffDescription = removedFromReference("Requirements.D", "source", "Requirements.A"); delFonDDiffDescription = addedToReference("Requirements.D", "source", "Requirements.F"); addAonEDiffDescription = removedFromReference("Requirements.E", "source", "Requirements.A"); addFonEDiffDescription = removedFromReference("Requirements.E", "source", "Requirements.F"); delDonFDiffDescription = addedToReference("Requirements.F", "destination", "Requirements.D"); delBonFDiffDescription = addedToReference("Requirements.F", "destination", "Requirements.B"); addEonFDiffDescription = removedFromReference("Requirements.F", "destination", "Requirements.E"); addConFDiffDescription = removedFromReference("Requirements.F", "destination", "Requirements.C"); delBDiffDescription = addedToReference("Requirements", "containmentRef1", "Requirements.B"); addEDiffDescription = removedFromReference("Requirements", "containmentRef1", "Requirements.E"); } final Diff delBonADiff = Iterators.find(differences.iterator(), delBonADiffDescription); final Diff delAonBDiff = Iterators.find(differences.iterator(), delAonBDiffDescription); final Diff addDonADiff = Iterators.find(differences.iterator(), addDonADiffDescription); final Diff addEonADiff = Iterators.find(differences.iterator(), addEonADiffDescription); final Diff delFonBDiff = Iterators.find(differences.iterator(), delFonBDiffDescription); final Diff addFonCDiff = Iterators.find(differences.iterator(), addFonCDiffDescription); final Diff addAonDDiff = Iterators.find(differences.iterator(), addAonDDiffDescription); final Diff delFonDDiff = Iterators.find(differences.iterator(), delFonDDiffDescription); final Diff addAonEDiff = Iterators.find(differences.iterator(), addAonEDiffDescription); final Diff addFonEDiff = Iterators.find(differences.iterator(), addFonEDiffDescription); final Diff delDonFDiff = Iterators.find(differences.iterator(), delDonFDiffDescription); final Diff delBonFDiff = Iterators.find(differences.iterator(), delBonFDiffDescription); final Diff addEonFDiff = Iterators.find(differences.iterator(), addEonFDiffDescription); final Diff addConFDiff = Iterators.find(differences.iterator(), addConFDiffDescription); final Diff delBDiff = Iterators.find(differences.iterator(), delBDiffDescription); final Diff addEDiff = Iterators.find(differences.iterator(), addEDiffDescription); assertNotNull(delBonADiff); assertNotNull(delAonBDiff); assertNotNull(addDonADiff); assertNotNull(addEonADiff); assertNotNull(delFonBDiff); assertNotNull(addFonCDiff); assertNotNull(addAonDDiff); assertNotNull(delFonDDiff); assertNotNull(addAonEDiff); assertNotNull(addFonEDiff); assertNotNull(delDonFDiff); assertNotNull(delBonFDiff); assertNotNull(addEonFDiff); assertNotNull(addConFDiff); assertNotNull(delBDiff); assertNotNull(addEDiff); // CHECK EQUIVALENCE assertEquals(7, comparison.getEquivalences().size()); assertNotNull(delBonADiff.getEquivalence()); assertEquals(2, delBonADiff.getEquivalence().getDifferences().size()); assertTrue(delBonADiff.getEquivalence().getDifferences().contains(delBonADiff)); assertTrue(delBonADiff.getEquivalence().getDifferences().contains(delAonBDiff)); assertNotNull(addDonADiff.getEquivalence()); assertEquals(2, addDonADiff.getEquivalence().getDifferences().size()); assertTrue(addDonADiff.getEquivalence().getDifferences().contains(addDonADiff)); assertTrue(addDonADiff.getEquivalence().getDifferences().contains(addAonDDiff)); assertNotNull(addEonADiff.getEquivalence()); assertEquals(2, addEonADiff.getEquivalence().getDifferences().size()); assertTrue(addEonADiff.getEquivalence().getDifferences().contains(addEonADiff)); assertTrue(addEonADiff.getEquivalence().getDifferences().contains(addAonEDiff)); assertNotNull(delFonBDiff.getEquivalence()); assertEquals(2, delFonBDiff.getEquivalence().getDifferences().size()); assertTrue(delFonBDiff.getEquivalence().getDifferences().contains(delFonBDiff)); assertTrue(delFonBDiff.getEquivalence().getDifferences().contains(delBonFDiff)); assertNotNull(addFonCDiff.getEquivalence()); assertEquals(2, addFonCDiff.getEquivalence().getDifferences().size()); assertTrue(addFonCDiff.getEquivalence().getDifferences().contains(addFonCDiff)); assertTrue(addFonCDiff.getEquivalence().getDifferences().contains(addConFDiff)); assertNotNull(delFonDDiff.getEquivalence()); assertEquals(2, delFonDDiff.getEquivalence().getDifferences().size()); assertTrue(delFonDDiff.getEquivalence().getDifferences().contains(delFonDDiff)); assertTrue(delFonDDiff.getEquivalence().getDifferences().contains(delDonFDiff)); assertNotNull(addFonEDiff.getEquivalence()); assertEquals(2, addFonEDiff.getEquivalence().getDifferences().size()); assertTrue(addFonEDiff.getEquivalence().getDifferences().contains(addFonEDiff)); assertTrue(addFonEDiff.getEquivalence().getDifferences().contains(addEonFDiff)); } @Test public void testE1UseCase() throws IOException { final Resource left = input.getE1Left(); final Resource right = input.getE1Right(); final Resource ancestor = input.getE1Ancestor(); Comparison comparison = compare(left, right, ancestor); testA1(TestKind.LEFT, comparison); } @Test public void testE2UseCase() throws IOException { final Resource left = input.getE2Left(); final Resource right = input.getE2Right(); final Resource ancestor = input.getE2Ancestor(); Comparison comparison = compare(left, right, ancestor); testA2(TestKind.LEFT, comparison); } @Test public void testE3UseCase() throws IOException { final Resource left = input.getE3Left(); final Resource right = input.getE3Right(); final Resource ancestor = input.getE3Ancestor(); Comparison comparison = compare(left, right, ancestor); testA3(TestKind.LEFT, comparison); } @Test public void testE4UseCase() throws IOException { final Resource left = input.getE4Left(); final Resource right = input.getE4Right(); final Resource ancestor = input.getE4Ancestor(); Comparison comparison = compare(left, right, ancestor); testA4(TestKind.LEFT, comparison); } @Test public void testE5UseCase() throws IOException { final Resource left = input.getE5Left(); final Resource right = input.getE5Right(); final Resource ancestor = input.getE5Ancestor(); Comparison comparison = compare(left, right, ancestor); testA5(TestKind.LEFT, comparison); } @Test public void testE6UseCase() throws IOException { final Resource left = input.getE6Left(); final Resource right = input.getE6Right(); final Resource ancestor = input.getE6Ancestor(); Comparison comparison = compare(left, right, ancestor); testC1(TestKind.LEFT, comparison); } @Test public void testE7UseCase() throws IOException { final Resource left = input.getE7Left(); final Resource right = input.getE7Right(); final Resource ancestor = input.getE7Ancestor(); Comparison comparison = compare(left, right, ancestor); testC2(TestKind.LEFT, comparison); } @Test public void testE8UseCase() throws IOException { final Resource left = input.getE8Left(); final Resource right = input.getE8Right(); final Resource ancestor = input.getE8Ancestor(); Comparison comparison = compare(left, right, ancestor); testC3(TestKind.LEFT, comparison); } @Test public void testE9UseCase() throws IOException { final Resource left = input.getE9Left(); final Resource right = input.getE9Right(); final Resource ancestor = input.getE9Ancestor(); Comparison comparison = compare(left, right, ancestor); testC4(TestKind.LEFT, comparison); } @Test public void testE10UseCase() throws IOException { final Resource left = input.getE10Left(); final Resource right = input.getE10Right(); final Resource ancestor = input.getE10Ancestor(); Comparison comparison = compare(left, right, ancestor); testD1(TestKind.LEFT, comparison); } @Test public void testF1UseCase() throws IOException { final Resource left = input.getF1Left(); final Resource right = input.getF1Right(); final Resource ancestor = input.getF1Ancestor(); Comparison comparison = compare(left, right, ancestor); testA1(TestKind.RIGHT, comparison); } @Test public void testF2UseCase() throws IOException { final Resource left = input.getF2Left(); final Resource right = input.getF2Right(); final Resource ancestor = input.getF2Ancestor(); Comparison comparison = compare(left, right, ancestor); testA2(TestKind.RIGHT, comparison); } @Test public void testF3UseCase() throws IOException { final Resource left = input.getF3Left(); final Resource right = input.getF3Right(); final Resource ancestor = input.getF3Ancestor(); Comparison comparison = compare(left, right, ancestor); testA3(TestKind.RIGHT, comparison); } @Test public void testF4UseCase() throws IOException { final Resource left = input.getF4Left(); final Resource right = input.getF4Right(); final Resource ancestor = input.getF4Ancestor(); Comparison comparison = compare(left, right, ancestor); testA4(TestKind.RIGHT, comparison); } @Test public void testF5UseCase() throws IOException { final Resource left = input.getF5Left(); final Resource right = input.getF5Right(); final Resource ancestor = input.getF5Ancestor(); Comparison comparison = compare(left, right, ancestor); testA5(TestKind.RIGHT, comparison); } @Test public void testF6UseCase() throws IOException { final Resource left = input.getF6Left(); final Resource right = input.getF6Right(); final Resource ancestor = input.getF6Ancestor(); Comparison comparison = compare(left, right, ancestor); testC1(TestKind.RIGHT, comparison); } @Test public void testF7UseCase() throws IOException { final Resource left = input.getF7Left(); final Resource right = input.getF7Right(); final Resource ancestor = input.getF7Ancestor(); Comparison comparison = compare(left, right, ancestor); testC2(TestKind.RIGHT, comparison); } @Test public void testF8UseCase() throws IOException { final Resource left = input.getF8Left(); final Resource right = input.getF8Right(); final Resource ancestor = input.getF8Ancestor(); Comparison comparison = compare(left, right, ancestor); testC3(TestKind.RIGHT, comparison); } @Test public void testF9UseCase() throws IOException { final Resource left = input.getF9Left(); final Resource right = input.getF9Right(); final Resource ancestor = input.getF9Ancestor(); Comparison comparison = compare(left, right, ancestor); testC4(TestKind.RIGHT, comparison); } @Test public void testF10UseCase() throws IOException { final Resource left = input.getF10Left(); final Resource right = input.getF10Right(); final Resource ancestor = input.getF10Ancestor(); final Comparison comparison = compare(left, right, ancestor); testD1(TestKind.RIGHT, comparison); } private Comparison compare(Notifier left, Notifier right) { return compare(left, right, null); } private Comparison compare(Notifier left, Notifier right, Notifier ancestor) { final IComparisonScope scope = new DefaultComparisonScope(left, right, ancestor); return EMFCompare.builder().build().compare(scope); } }