package org.eclipse.emf.compare.tests.checkers; import static org.junit.Assert.assertEquals; import com.google.common.collect.Sets; import java.util.Set; import org.eclipse.emf.compare.Diff; import org.eclipse.emf.compare.internal.merge.MergeDependenciesUtil; import org.eclipse.emf.compare.merge.IMerger; @SuppressWarnings("restriction") public class MergeDependenciesChecker { private IMerger.Registry registry; private Diff diff; private int nbMerges = 0; private int nbRejections = 0; private boolean rightToLeft = true; private MergeDependenciesChecker() { // Do nothing } private MergeDependenciesChecker(IMerger.Registry mergerRegistry, Diff testedDiff) { this.registry = mergerRegistry; this.diff = testedDiff; } public static MergeDependenciesChecker getDependenciesChecker(IMerger.Registry mergerRegistry, Diff testedDiff) { return new MergeDependenciesChecker(mergerRegistry, testedDiff); } public MergeDependenciesChecker implies(int nbResultingMerges) { this.nbMerges = nbResultingMerges; return this; } public MergeDependenciesChecker rejects(int nbResultingRejections) { this.nbRejections = nbResultingRejections; return this; } public MergeDependenciesChecker rightToLeft() { this.rightToLeft = true; return this; } public MergeDependenciesChecker leftToRight() { this.rightToLeft = false; return this; } public void check() { Set<Diff> allResultingMerges = MergeDependenciesUtil.getAllResultingMerges(diff, registry, this.rightToLeft); Set<Diff> allResultingRejections = MergeDependenciesUtil.getAllResultingRejections(diff, registry, this.rightToLeft); assertEquals(this.nbMerges, Sets.difference(allResultingMerges, allResultingRejections).size()); assertEquals(this.nbRejections, allResultingRejections.size()); } }