package org.eclipse.emf.compare.tests.conflict; import static java.util.Arrays.asList; import static org.eclipse.emf.compare.ConflictKind.REAL; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import org.eclipse.emf.common.util.BasicMonitor; import org.eclipse.emf.compare.CompareFactory; import org.eclipse.emf.compare.Comparison; import org.eclipse.emf.compare.Conflict; import org.eclipse.emf.compare.ConflictKind; import org.eclipse.emf.compare.Diff; import org.eclipse.emf.compare.Equivalence; import org.eclipse.emf.compare.Match; import org.eclipse.emf.compare.internal.conflict.AbstractConflictSearch; import org.eclipse.emf.compare.internal.conflict.ComparisonIndex; import org.junit.Before; import org.junit.Test; public class ConflictSearchTest { private Diff diff; private Match match; private Comparison comparison; private ComparisonIndex index; private Diff other; private Diff equivToDiff; private Diff equivToOther; private Equivalence equivDiff; private Equivalence equivOther; /** * @see <a href="http://eclip.se/510704">Bug 510704</a> */ @Test public void testEquivalentDiffsAreInSameConflict() { // Given TestConflictSearch search = new TestConflictSearch(diff, index); // When search.conflict(other, REAL); // then assertEquals(1, comparison.getConflicts().size()); Conflict conflict = comparison.getConflicts().get(0); assertEquals(4, conflict.getDifferences().size()); assertTrue(conflict.getDifferences().containsAll(asList(diff, equivToDiff, other, equivToOther))); } @Before public void setUp() throws Exception { comparison = CompareFactory.eINSTANCE.createComparison(); match = CompareFactory.eINSTANCE.createMatch(); comparison.getMatches().add(match); diff = CompareFactory.eINSTANCE.createDiff(); diff.setMatch(match); other = CompareFactory.eINSTANCE.createDiff(); other.setMatch(match); equivToDiff = CompareFactory.eINSTANCE.createDiff(); equivToDiff.setMatch(match); equivToOther = CompareFactory.eINSTANCE.createDiff(); equivToOther.setMatch(match); equivDiff = CompareFactory.eINSTANCE.createEquivalence(); equivOther = CompareFactory.eINSTANCE.createEquivalence(); equivDiff.getDifferences().addAll(asList(diff, equivToDiff)); equivOther.getDifferences().addAll(asList(other, equivToOther)); index = ComparisonIndex.index(comparison, new BasicMonitor()); } public static final class TestConflictSearch extends AbstractConflictSearch<Diff> { public TestConflictSearch(Diff diff, ComparisonIndex index) { super(diff, index, new BasicMonitor()); } @Override public void detectConflicts() { // Nothing to do } @Override public void conflict(Diff other, ConflictKind kind) { super.conflict(other, kind); } } }