Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorlgoubet2012-09-27 12:55:46 +0000
committerlgoubet2012-09-27 15:36:38 +0000
commit6a0ab9f52c0ca10b72e153891d003390967e14c5 (patch)
tree1f176d4ce952e5c5b41f821de34ac1e8e7fdc6d8 /plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/fragmentation
parent3102f2af1e70228595e3cd1a7086b27744bd2870 (diff)
downloadorg.eclipse.emf.compare-6a0ab9f52c0ca10b72e153891d003390967e14c5.tar.gz
org.eclipse.emf.compare-6a0ab9f52c0ca10b72e153891d003390967e14c5.tar.xz
org.eclipse.emf.compare-6a0ab9f52c0ca10b72e153891d003390967e14c5.zip
First draft of the resource attachment change merge implementation. This
only handles right to left additions for now.
Diffstat (limited to 'plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/fragmentation')
-rw-r--r--plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/fragmentation/FragmentationTest.java122
1 files changed, 122 insertions, 0 deletions
diff --git a/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/fragmentation/FragmentationTest.java b/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/fragmentation/FragmentationTest.java
index 5ac5c87c5..fec025a0f 100644
--- a/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/fragmentation/FragmentationTest.java
+++ b/plugins/org.eclipse.emf.compare.tests/src/org/eclipse/emf/compare/tests/fragmentation/FragmentationTest.java
@@ -74,6 +74,128 @@ public class FragmentationTest {
assertNull(diff.getMatch().getLeft());
assertSame(diff.getSource(), DifferenceSource.LEFT);
assertSame(diff.getKind(), DifferenceKind.DELETE);
+ }
+
+ // This only tests the merge. Will fail if testDeletedRootResourceSet does.
+ @Test
+ public void testMergeDeletedRootResourceSetLtR() throws IOException {
+ final Resource left = input.getDeletedRootLeft();
+ final Resource origin = input.getDeletedRootOrigin();
+ final Resource right = input.getDeletedRootRight();
+
+ final ResourceSet leftSet = left.getResourceSet();
+ final ResourceSet originSet = origin.getResourceSet();
+ final ResourceSet rightSet = right.getResourceSet();
+
+ EcoreUtil.resolveAll(leftSet);
+ EcoreUtil.resolveAll(originSet);
+ EcoreUtil.resolveAll(rightSet);
+
+ final IComparisonScope scope = EMFCompare.createDefaultScope(leftSet, rightSet, originSet);
+ Comparison comparison = EMFCompare.newComparator(scope).compare();
+
+ final List<Diff> differences = comparison.getDifferences();
+ final Diff diff = differences.get(0);
+
+ diff.copyLeftToRight();
+ assertSame(Integer.valueOf(1), Integer.valueOf(left.getContents().size()));
+ assertSame(Integer.valueOf(1), Integer.valueOf(origin.getContents().size()));
+ assertSame(Integer.valueOf(1), Integer.valueOf(right.getContents().size()));
+
+ comparison = EMFCompare.newComparator(scope).compare();
+ assertSame(Integer.valueOf(0), Integer.valueOf(comparison.getDifferences().size()));
+ }
+
+ // This only tests the merge. Will fail if testDeletedRootResourceSet does.
+ @Test
+ public void testMergeDeletedRootResourceSetRtL() throws IOException {
+ final Resource left = input.getDeletedRootLeft();
+ final Resource origin = input.getDeletedRootOrigin();
+ final Resource right = input.getDeletedRootRight();
+
+ final ResourceSet leftSet = left.getResourceSet();
+ final ResourceSet originSet = origin.getResourceSet();
+ final ResourceSet rightSet = right.getResourceSet();
+
+ EcoreUtil.resolveAll(leftSet);
+ EcoreUtil.resolveAll(originSet);
+ EcoreUtil.resolveAll(rightSet);
+
+ final IComparisonScope scope = EMFCompare.createDefaultScope(leftSet, rightSet, originSet);
+ Comparison comparison = EMFCompare.newComparator(scope).compare();
+
+ final List<Diff> differences = comparison.getDifferences();
+ final Diff diff = differences.get(0);
+
+ diff.copyRightToLeft();
+ assertSame(Integer.valueOf(2), Integer.valueOf(left.getContents().size()));
+ assertSame(Integer.valueOf(2), Integer.valueOf(origin.getContents().size()));
+ assertSame(Integer.valueOf(2), Integer.valueOf(right.getContents().size()));
+
+ comparison = EMFCompare.newComparator(scope).compare();
+ assertSame(Integer.valueOf(0), Integer.valueOf(comparison.getDifferences().size()));
+ }
+
+ @Test
+ public void testDeletedRootResource() throws IOException {
+ final Resource left = input.getDeletedRootLeft();
+ final Resource origin = input.getDeletedRootOrigin();
+ final Resource right = input.getDeletedRootRight();
+
+ final IComparisonScope scope = EMFCompare.createDefaultScope(left, right, origin);
+ Comparison comparison = EMFCompare.newComparator(scope).compare();
+
+ final List<Diff> differences = comparison.getDifferences();
+ assertSame(Integer.valueOf(1), Integer.valueOf(differences.size()));
+
+ final Diff diff = differences.get(0);
+ assertTrue(diff instanceof ResourceAttachmentChange);
+ assertEquals(diff.getMatch().getRight(), getNodeNamed(right, "deletedRoot"));
+ assertEquals(diff.getMatch().getOrigin(), getNodeNamed(origin, "deletedRoot"));
+ assertNull(diff.getMatch().getLeft());
+ assertSame(diff.getSource(), DifferenceSource.LEFT);
+ assertSame(diff.getKind(), DifferenceKind.DELETE);
+ }
+
+ // This only tests the merge. Will fail if testDeletedRootResource does.
+ @Test
+ public void testMergeDeletedRootResourceLtR() throws IOException {
+ final Resource left = input.getDeletedRootLeft();
+ final Resource origin = input.getDeletedRootOrigin();
+ final Resource right = input.getDeletedRootRight();
+
+ final IComparisonScope scope = EMFCompare.createDefaultScope(left, right, origin);
+ Comparison comparison = EMFCompare.newComparator(scope).compare();
+
+ final List<Diff> differences = comparison.getDifferences();
+ final Diff diff = differences.get(0);
+
+ diff.copyLeftToRight();
+ assertSame(Integer.valueOf(1), Integer.valueOf(left.getContents().size()));
+ assertSame(Integer.valueOf(1), Integer.valueOf(origin.getContents().size()));
+ assertSame(Integer.valueOf(1), Integer.valueOf(right.getContents().size()));
+
+ comparison = EMFCompare.newComparator(scope).compare();
+ assertSame(Integer.valueOf(0), Integer.valueOf(comparison.getDifferences().size()));
+ }
+
+ // This only tests the merge. Will fail if testDeletedRootResource does.
+ @Test
+ public void testMergeDeletedRootResourceRtL() throws IOException {
+ final Resource left = input.getDeletedRootLeft();
+ final Resource origin = input.getDeletedRootOrigin();
+ final Resource right = input.getDeletedRootRight();
+
+ final IComparisonScope scope = EMFCompare.createDefaultScope(left, right, origin);
+ Comparison comparison = EMFCompare.newComparator(scope).compare();
+
+ final List<Diff> differences = comparison.getDifferences();
+ final Diff diff = differences.get(0);
+
+ diff.copyRightToLeft();
+ assertSame(Integer.valueOf(2), Integer.valueOf(left.getContents().size()));
+ assertSame(Integer.valueOf(2), Integer.valueOf(origin.getContents().size()));
+ assertSame(Integer.valueOf(2), Integer.valueOf(right.getContents().size()));
comparison = EMFCompare.newComparator(scope).compare();
assertSame(Integer.valueOf(0), Integer.valueOf(comparison.getDifferences().size()));

Back to the top