/*******************************************************************************
* Copyright (c) 2016 EclipseSource Services GmbH and others.
* 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:
* Tanja Mayerhofer - initial API and implementation
*******************************************************************************/
package org.eclipse.emf.compare.rcp.ui.tests.structuremergeviewer.groups;
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.DifferenceSource;
import org.eclipse.emf.compare.Match;
/**
* This test scenario creates a comparison like this:
* <ul>
* <li>diff1 (LEFT), refined by
* <ul>
* <li>diff1a (LEFT)</li>
* <li>diff1b (RIGHT)</li>
* </ul>
* </li>
* <li>diff2 (RIGHT), refined by
* <ul>
* <li>diff2a (LEFT)</li>
* <li>diff2b (RIGHT)</li>
* </ul>
* </li>
* </ul>
*/
public class ConflictsGroupWithRefinedDiffTestScenario {
private static final CompareFactory FACTORY = CompareFactory.eINSTANCE;
final Diff diff1;
final Diff diff1a;
final Diff diff1b;
final Diff diff2;
final Diff diff2a;
final Diff diff2b;
final Comparison comparison;
public ConflictsGroupWithRefinedDiffTestScenario() {
// Create diffs left side
diff1 = FACTORY.createDiff();
diff1a = FACTORY.createDiff();
diff1b = FACTORY.createDiff();
diff1.getRefinedBy().add(diff1a);
diff1.getRefinedBy().add(diff1b);
diff1.setSource(DifferenceSource.LEFT);
diff1a.setSource(DifferenceSource.LEFT);
diff1b.setSource(DifferenceSource.LEFT);
// Create diffs right side
diff2 = FACTORY.createDiff();
diff2a = FACTORY.createDiff();
diff2b = FACTORY.createDiff();
diff2.getRefinedBy().add(diff2a);
diff2.getRefinedBy().add(diff2b);
diff2.setSource(DifferenceSource.RIGHT);
diff2a.setSource(DifferenceSource.RIGHT);
diff2b.setSource(DifferenceSource.RIGHT);
// Create comparison
comparison = FACTORY.createComparison();
comparison.setThreeWay(true);
final Match match1 = FACTORY.createMatch();
match1.getDifferences().add(diff1);
match1.getDifferences().add(diff1a);
match1.getDifferences().add(diff1b);
match1.getDifferences().add(diff2);
match1.getDifferences().add(diff2a);
match1.getDifferences().add(diff2b);
comparison.getMatches().add(match1);
}
/**
* Add a conflict between 2 existing differences of this scenario's comparison.
*
* @param conflictingDiff1
* @param conflictingDiff2
* @param kind
* @return The created conflict.
*/
Conflict addConflict(Diff conflictingDiff1, Diff conflictingDiff2, ConflictKind kind) {
final Conflict conflict = FACTORY.createConflict();
conflict.getDifferences().add(conflictingDiff1);
conflict.getDifferences().add(conflictingDiff2);
conflict.setKind(kind);
comparison.getConflicts().add(conflict);
return conflict;
}
}