[512562] Diff/merge can't handle multiple repos
[EMFCompare2.git] / plugins / org.eclipse.emf.compare.ide.ui.tests / src / org / eclipse / emf / compare / ide / ui / tests / contentmergeviewer / notloadedfragment / NotLoadedFragmentItemTest.java
blob2299430908334711a52ead7577c9fa60879782e4
1 /*******************************************************************************
2 * Copyright (c) 2015, 2017 Obeo and others.
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/epl-v10.html
7 *
8 * Contributors:
9 * Obeo - initial API and implementation
10 * Stefan Dirix - bug 475401
11 * Martin Fleck - bug 512562
12 *******************************************************************************/
13 package org.eclipse.emf.compare.ide.ui.tests.contentmergeviewer.notloadedfragment;
15 import static org.junit.Assert.assertEquals;
16 import static org.junit.Assert.assertNull;
17 import static org.junit.Assert.assertTrue;
19 import com.google.common.base.Predicate;
20 import com.google.common.collect.Iterators;
21 import com.google.common.collect.Lists;
22 import com.google.common.eventbus.EventBus;
24 import java.io.File;
25 import java.io.IOException;
26 import java.net.URL;
27 import java.util.Collection;
28 import java.util.List;
30 import org.eclipse.compare.ITypedElement;
31 import org.eclipse.core.resources.IFile;
32 import org.eclipse.core.resources.IProject;
33 import org.eclipse.core.resources.IProjectDescription;
34 import org.eclipse.core.resources.IStorage;
35 import org.eclipse.core.resources.ResourcesPlugin;
36 import org.eclipse.core.runtime.CoreException;
37 import org.eclipse.core.runtime.FileLocator;
38 import org.eclipse.core.runtime.NullProgressMonitor;
39 import org.eclipse.core.runtime.Path;
40 import org.eclipse.core.runtime.Platform;
41 import org.eclipse.emf.common.notify.AdapterFactory;
42 import org.eclipse.emf.compare.Comparison;
43 import org.eclipse.emf.compare.Diff;
44 import org.eclipse.emf.compare.EMFCompare;
45 import org.eclipse.emf.compare.Match;
46 import org.eclipse.emf.compare.ide.ui.internal.EMFCompareIDEUIPlugin;
47 import org.eclipse.emf.compare.ide.ui.internal.logical.ComparisonScopeBuilder;
48 import org.eclipse.emf.compare.ide.ui.internal.logical.StorageTypedElement;
49 import org.eclipse.emf.compare.ide.ui.internal.logical.StreamAccessorStorage;
50 import org.eclipse.emf.compare.ide.ui.internal.logical.resolver.ThreadedModelResolver;
51 import org.eclipse.emf.compare.ide.ui.internal.util.PlatformElementUtil;
52 import org.eclipse.emf.compare.ide.ui.logical.IModelResolver;
53 import org.eclipse.emf.compare.provider.spec.CompareItemProviderAdapterFactorySpec;
54 import org.eclipse.emf.compare.rcp.ui.internal.mergeviewer.item.impl.MergeViewerItem;
55 import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.filters.StructureMergeViewerFilter;
56 import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.groups.provider.TreeItemProviderAdapterFactorySpec;
57 import org.eclipse.emf.compare.rcp.ui.internal.util.MergeViewerUtil;
58 import org.eclipse.emf.compare.rcp.ui.mergeviewer.IMergeViewer.MergeViewerSide;
59 import org.eclipse.emf.compare.rcp.ui.mergeviewer.item.IMergeViewerItem;
60 import org.eclipse.emf.compare.scope.IComparisonScope;
61 import org.eclipse.emf.compare.utils.EMFComparePredicates;
62 import org.eclipse.emf.ecore.EObject;
63 import org.eclipse.emf.ecore.provider.EcoreItemProviderAdapterFactory;
64 import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator;
65 import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
66 import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory;
67 import org.junit.Before;
68 import org.junit.Test;
69 import org.osgi.framework.Bundle;
71 @SuppressWarnings({"restriction", "nls" })
72 public class NotLoadedFragmentItemTest {
74 private static final String ELLIPSIS = "[ ... ]";
76 private static AdapterFactoryItemDelegator itemDelegator;
78 private static String SEP = File.separator;
80 private EventBus eventBus;
82 @Before
83 public void setup() {
84 final Collection<AdapterFactory> factories = Lists.newArrayList();
85 factories.add(new CompareItemProviderAdapterFactorySpec());
86 eventBus = new EventBus();
87 factories.add(new TreeItemProviderAdapterFactorySpec(new StructureMergeViewerFilter(eventBus)));
88 factories.add(new EcoreItemProviderAdapterFactory());
89 factories.add(new ReflectiveItemProviderAdapterFactory());
91 final AdapterFactory composedAdapterFactory = new ComposedAdapterFactory(factories);
92 itemDelegator = new AdapterFactoryItemDelegator(composedAdapterFactory);
95 private Comparison initComparison(String projectName) throws IOException, CoreException {
96 Bundle bundle = Platform.getBundle("org.eclipse.emf.compare.ide.ui.tests");
97 URL entry = bundle.getEntry("src" + SEP + "org" + SEP + "eclipse" + SEP + "emf" + SEP + "compare"
98 + SEP + "ide" + SEP + "ui" + SEP + "tests" + SEP + "structuremergeviewer" + SEP
99 + "notloadedfragment" + SEP + "data" + SEP + projectName + SEP + ".project");
100 URL fileURL = FileLocator.toFileURL(entry);
101 IProjectDescription description = ResourcesPlugin.getWorkspace()
102 .loadProjectDescription(new Path(fileURL.getPath()));
103 IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(description.getName());
104 if (!project.exists()) {
105 project.create(description, new NullProgressMonitor());
106 project.open(new NullProgressMonitor());
109 final IFile leftFile = project.getFile(new Path("left" + SEP + "R1.ecore"));
110 final IFile rightFile = project.getFile(new Path("right" + SEP + "R1.ecore"));
111 final ITypedElement left = new StorageTypedElement(leftFile, leftFile.getFullPath().toOSString());
112 final ITypedElement right = new StorageTypedElement(rightFile, rightFile.getFullPath().toOSString());
114 IStorage leftStorage = PlatformElementUtil.findFile(left);
115 if (leftStorage == null) {
116 leftStorage = StreamAccessorStorage.fromTypedElement(left);
118 final IModelResolver resolver = EMFCompareIDEUIPlugin.getDefault().getModelResolverRegistry()
119 .getBestResolverFor(leftStorage);
121 assertTrue(resolver instanceof ThreadedModelResolver);
123 final ComparisonScopeBuilder scopeBuilder = new ComparisonScopeBuilder(resolver,
124 EMFCompareIDEUIPlugin.getDefault().getModelMinimizerRegistry().getCompoundMinimizer(), null);
125 final IComparisonScope scope = scopeBuilder.build(left, right, null, new NullProgressMonitor());
126 final Comparison comparison = EMFCompare.builder().build().compare(scope);
128 return comparison;
131 @Test
132 public void testCase0() throws IOException, CoreException {
133 final Comparison comparison = initComparison("case0");
134 final List<Diff> differences = comparison.getDifferences();
135 final Predicate<? super Diff> predicate_E = EMFComparePredicates.addedToReference("B", "eSubpackages",
136 "B.E");
137 final Diff diff_E = Iterators.find(differences.iterator(), predicate_E);
138 final EObject value_E = (EObject)MergeViewerUtil.getDiffValue(diff_E);
139 final Match match_E = comparison.getMatch(value_E);
141 // Test Left Side
142 IMergeViewerItem.Container item_E = new MergeViewerItem.Container(comparison, diff_E, match_E,
143 MergeViewerSide.LEFT, itemDelegator.getAdapterFactory());
144 assertEquals("E", itemDelegator.getText(item_E.getSideValue(MergeViewerSide.LEFT)));
145 IMergeViewerItem.Container item_B = item_E.getParent();
146 assertEquals("B", itemDelegator.getText(item_B.getSideValue(MergeViewerSide.LEFT)));
147 IMergeViewerItem.Container item_Ellipsis = item_B.getParent();
148 assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
149 assertNull(item_Ellipsis.getParent());
151 IMergeViewerItem[] item_Ellipsis_Children = item_Ellipsis.getChildren(null, null);
152 assertEquals(1, item_Ellipsis_Children.length);
153 item_B = (IMergeViewerItem.Container)item_Ellipsis_Children[0];
154 assertEquals("B", itemDelegator.getText(item_B.getSideValue(MergeViewerSide.LEFT)));
156 // Test Right Side
157 item_E = new MergeViewerItem.Container(comparison, diff_E, match_E, MergeViewerSide.RIGHT,
158 itemDelegator.getAdapterFactory());
159 assertEquals("", itemDelegator.getText(item_E.getSideValue(MergeViewerSide.RIGHT)));
160 item_B = item_E.getParent();
161 assertEquals("B", itemDelegator.getText(item_B.getSideValue(MergeViewerSide.RIGHT)));
162 item_Ellipsis = item_B.getParent();
163 assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
164 assertNull(item_Ellipsis.getParent());
166 item_Ellipsis_Children = item_Ellipsis.getChildren(null, null);
167 assertEquals(1, item_Ellipsis_Children.length);
168 item_B = (IMergeViewerItem.Container)item_Ellipsis_Children[0];
169 assertEquals("B", itemDelegator.getText(item_B.getSideValue(MergeViewerSide.RIGHT)));
172 @Test
173 public void testCase1() throws IOException, CoreException {
174 final Comparison comparison = initComparison("case1");
175 final List<Diff> differences = comparison.getDifferences();
176 final Predicate<? super Diff> predicate_F = EMFComparePredicates.addedToReference("D", "eSubpackages",
177 "D.F");
178 final Diff diff_F = Iterators.find(differences.iterator(), predicate_F);
179 final EObject value_F = (EObject)MergeViewerUtil.getDiffValue(diff_F);
180 final Match match_F = comparison.getMatch(value_F);
182 // Test Left Side
183 IMergeViewerItem.Container item_F = new MergeViewerItem.Container(comparison, diff_F, match_F,
184 MergeViewerSide.LEFT, itemDelegator.getAdapterFactory());
185 assertEquals("F", itemDelegator.getText(item_F.getSideValue(MergeViewerSide.LEFT)));
186 IMergeViewerItem.Container item_D = item_F.getParent();
187 assertEquals("D", itemDelegator.getText(item_D.getSideValue(MergeViewerSide.LEFT)));
188 IMergeViewerItem.Container item_Ellipsis = item_D.getParent();
189 assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
190 IMergeViewerItem.Container item_A = item_Ellipsis.getParent();
191 assertEquals("A", itemDelegator.getText(item_A.getSideValue(MergeViewerSide.LEFT)));
192 assertNull(item_A.getParent());
194 IMergeViewerItem[] item_A_Children = item_A.getChildren(null, null);
195 assertEquals(2, item_A_Children.length);
196 IMergeViewerItem.Container item_C = (IMergeViewerItem.Container)item_A_Children[0];
197 assertEquals("", itemDelegator.getText(item_C.getSideValue(MergeViewerSide.LEFT)));
198 item_Ellipsis = (IMergeViewerItem.Container)item_A_Children[1];
199 assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
200 IMergeViewerItem[] item_Ellipsis_Children = item_Ellipsis.getChildren(null, null);
201 assertEquals(1, item_Ellipsis_Children.length);
202 item_D = (IMergeViewerItem.Container)item_Ellipsis_Children[0];
203 assertEquals("D", itemDelegator.getText(item_D.getSideValue(MergeViewerSide.LEFT)));
205 // Test Right Side
206 item_F = new MergeViewerItem.Container(comparison, diff_F, match_F, MergeViewerSide.RIGHT,
207 itemDelegator.getAdapterFactory());
208 assertEquals("", itemDelegator.getText(item_F.getSideValue(MergeViewerSide.RIGHT)));
209 item_D = item_F.getParent();
210 assertEquals("D", itemDelegator.getText(item_D.getSideValue(MergeViewerSide.RIGHT)));
211 item_Ellipsis = item_D.getParent();
212 assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
213 item_A = item_Ellipsis.getParent();
214 assertEquals("A", itemDelegator.getText(item_A.getSideValue(MergeViewerSide.RIGHT)));
215 assertNull(item_A.getParent());
217 item_A_Children = item_A.getChildren(null, null);
218 assertEquals(2, item_A_Children.length);
219 item_C = (IMergeViewerItem.Container)item_A_Children[0];
220 assertEquals("C", itemDelegator.getText(item_C.getSideValue(MergeViewerSide.RIGHT)));
221 item_Ellipsis = (IMergeViewerItem.Container)item_A_Children[1];
222 assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
223 item_Ellipsis_Children = item_Ellipsis.getChildren(null, null);
224 assertEquals(1, item_Ellipsis_Children.length);
225 item_D = (IMergeViewerItem.Container)item_Ellipsis_Children[0];
226 assertEquals("D", itemDelegator.getText(item_D.getSideValue(MergeViewerSide.RIGHT)));
229 @Test
230 public void testCase2() throws IOException, CoreException {
231 final Comparison comparison = initComparison("case2");
232 final List<Diff> differences = comparison.getDifferences();
233 final Predicate<? super Diff> predicate_E = EMFComparePredicates.addedToReference("B.D",
234 "eSubpackages", "B.D.E");
235 final Diff diff_E = Iterators.find(differences.iterator(), predicate_E);
236 final EObject value_E = (EObject)MergeViewerUtil.getDiffValue(diff_E);
237 final Match match_E = comparison.getMatch(value_E);
239 // Test Left Side
240 IMergeViewerItem.Container item_E = new MergeViewerItem.Container(comparison, diff_E, match_E,
241 MergeViewerSide.LEFT, itemDelegator.getAdapterFactory());
242 assertEquals("E", itemDelegator.getText(item_E.getSideValue(MergeViewerSide.LEFT)));
243 IMergeViewerItem.Container item_D = item_E.getParent();
244 assertEquals("D", itemDelegator.getText(item_D.getSideValue(MergeViewerSide.LEFT)));
245 IMergeViewerItem.Container item_B = item_D.getParent();
246 assertEquals("B", itemDelegator.getText(item_B.getSideValue(MergeViewerSide.LEFT)));
247 IMergeViewerItem.Container item_Ellipsis = item_B.getParent();
248 assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
249 assertNull(item_Ellipsis.getParent());
251 IMergeViewerItem[] item_Ellipsis_Children = item_Ellipsis.getChildren(null, null);
252 assertEquals(1, item_Ellipsis_Children.length);
253 item_B = (IMergeViewerItem.Container)item_Ellipsis_Children[0];
254 assertEquals("B", itemDelegator.getText(item_B.getSideValue(MergeViewerSide.LEFT)));
256 // Test Right Side
257 item_E = new MergeViewerItem.Container(comparison, diff_E, match_E, MergeViewerSide.RIGHT,
258 itemDelegator.getAdapterFactory());
259 assertEquals("", itemDelegator.getText(item_E.getSideValue(MergeViewerSide.RIGHT)));
260 item_D = item_E.getParent();
261 assertEquals("D", itemDelegator.getText(item_D.getSideValue(MergeViewerSide.RIGHT)));
262 item_B = item_D.getParent();
263 assertEquals("B", itemDelegator.getText(item_B.getSideValue(MergeViewerSide.RIGHT)));
264 item_Ellipsis = item_B.getParent();
265 assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
266 assertNull(item_Ellipsis.getParent());
268 item_Ellipsis_Children = item_Ellipsis.getChildren(null, null);
269 assertEquals(1, item_Ellipsis_Children.length);
270 item_B = (IMergeViewerItem.Container)item_Ellipsis_Children[0];
271 assertEquals("B", itemDelegator.getText(item_B.getSideValue(MergeViewerSide.RIGHT)));
274 @Test
275 public void testCase3() throws IOException, CoreException {
276 final Comparison comparison = initComparison("case3");
277 final List<Diff> differences = comparison.getDifferences();
278 final Predicate<? super Diff> predicate_F = EMFComparePredicates.addedToReference("E", "eSubpackages",
279 "E.F");
280 final Diff diff_F = Iterators.find(differences.iterator(), predicate_F);
281 final EObject value_F = (EObject)MergeViewerUtil.getDiffValue(diff_F);
282 final Match match_F = comparison.getMatch(value_F);
284 // Test Left Side
285 IMergeViewerItem.Container item_F = new MergeViewerItem.Container(comparison, diff_F, match_F,
286 MergeViewerSide.LEFT, itemDelegator.getAdapterFactory());
287 assertEquals("F", itemDelegator.getText(item_F.getSideValue(MergeViewerSide.LEFT)));
288 IMergeViewerItem.Container item_E = item_F.getParent();
289 assertEquals("E", itemDelegator.getText(item_E.getSideValue(MergeViewerSide.LEFT)));
290 IMergeViewerItem.Container item_Ellipsis = item_E.getParent();
291 assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
292 IMergeViewerItem.Container item_B = item_Ellipsis.getParent();
293 assertEquals("B", itemDelegator.getText(item_B.getSideValue(MergeViewerSide.LEFT)));
294 item_Ellipsis = item_B.getParent();
295 assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
296 assertNull(item_Ellipsis.getParent());
298 IMergeViewerItem[] item_Ellipsis_Children = item_Ellipsis.getChildren(null, null);
299 assertEquals(1, item_Ellipsis_Children.length);
300 item_B = (IMergeViewerItem.Container)item_Ellipsis_Children[0];
301 assertEquals("B", itemDelegator.getText(item_B.getSideValue(MergeViewerSide.LEFT)));
302 IMergeViewerItem[] item_B_Children = item_B.getChildren(null, null);
303 assertEquals(2, item_B_Children.length);
304 IMergeViewerItem.Container item_C = (IMergeViewerItem.Container)item_B_Children[0];
305 assertEquals("", itemDelegator.getText(item_C.getSideValue(MergeViewerSide.LEFT)));
306 item_Ellipsis = (IMergeViewerItem.Container)item_B_Children[1];
307 assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
308 item_Ellipsis_Children = item_Ellipsis.getChildren(null, null);
309 assertEquals(1, item_Ellipsis_Children.length);
310 item_E = (IMergeViewerItem.Container)item_Ellipsis_Children[0];
311 assertEquals("E", itemDelegator.getText(item_E.getSideValue(MergeViewerSide.LEFT)));
313 // Test Right Side
314 item_F = new MergeViewerItem.Container(comparison, diff_F, match_F, MergeViewerSide.RIGHT,
315 itemDelegator.getAdapterFactory());
316 assertEquals("", itemDelegator.getText(item_F.getSideValue(MergeViewerSide.RIGHT)));
317 item_E = item_F.getParent();
318 assertEquals("E", itemDelegator.getText(item_E.getSideValue(MergeViewerSide.RIGHT)));
319 item_Ellipsis = item_E.getParent();
320 assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
321 item_B = item_Ellipsis.getParent();
322 assertEquals("B", itemDelegator.getText(item_B.getSideValue(MergeViewerSide.RIGHT)));
323 item_Ellipsis = item_B.getParent();
324 assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
325 assertNull(item_Ellipsis.getParent());
327 item_Ellipsis_Children = item_Ellipsis.getChildren(null, null);
328 assertEquals(1, item_Ellipsis_Children.length);
329 item_B = (IMergeViewerItem.Container)item_Ellipsis_Children[0];
330 assertEquals("B", itemDelegator.getText(item_B.getSideValue(MergeViewerSide.RIGHT)));
331 item_B_Children = item_B.getChildren(null, null);
332 assertEquals(2, item_B_Children.length);
333 item_C = (IMergeViewerItem.Container)item_B_Children[0];
334 assertEquals("C", itemDelegator.getText(item_C.getSideValue(MergeViewerSide.RIGHT)));
335 item_Ellipsis = (IMergeViewerItem.Container)item_B_Children[1];
336 assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
337 item_Ellipsis_Children = item_Ellipsis.getChildren(null, null);
338 assertEquals(1, item_Ellipsis_Children.length);
339 item_E = (IMergeViewerItem.Container)item_Ellipsis_Children[0];
340 assertEquals("E", itemDelegator.getText(item_E.getSideValue(MergeViewerSide.RIGHT)));
343 @Test
344 public void testCase4() throws IOException, CoreException {
345 final Comparison comparison = initComparison("case4");
346 final List<Diff> differences = comparison.getDifferences();
347 final Predicate<? super Diff> predicate_D = EMFComparePredicates.removedFromReference("B",
348 "eSubpackages", "B.D");
349 final Diff diff_D = Iterators.find(differences.iterator(), predicate_D);
350 final EObject value_D = (EObject)MergeViewerUtil.getDiffValue(diff_D);
351 final Match match_D = comparison.getMatch(value_D);
353 // Test Left Side
354 IMergeViewerItem.Container item_D = new MergeViewerItem.Container(comparison, diff_D, match_D,
355 MergeViewerSide.LEFT, itemDelegator.getAdapterFactory());
356 assertEquals("", itemDelegator.getText(item_D.getSideValue(MergeViewerSide.LEFT)));
357 IMergeViewerItem.Container item_B = item_D.getParent();
358 assertEquals("B", itemDelegator.getText(item_B.getSideValue(MergeViewerSide.LEFT)));
359 IMergeViewerItem.Container item_Ellipsis = item_B.getParent();
360 assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
361 item_Ellipsis = item_Ellipsis.getParent();
362 assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
363 assertNull(item_Ellipsis.getParent());
365 IMergeViewerItem[] item_Ellipsis_Children = item_Ellipsis.getChildren(null, null);
366 assertEquals(2, item_Ellipsis_Children.length);
367 item_Ellipsis = (IMergeViewerItem.Container)item_Ellipsis_Children[0];
368 assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
369 IMergeViewerItem[] item_R2_Children = item_Ellipsis.getChildren(null, null);
370 assertEquals(1, item_R2_Children.length);
371 item_B = (IMergeViewerItem.Container)item_R2_Children[0];
372 assertEquals("B", itemDelegator.getText(item_B.getSideValue(MergeViewerSide.LEFT)));
373 item_Ellipsis = (IMergeViewerItem.Container)item_Ellipsis_Children[1];
374 assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
375 IMergeViewerItem[] item_R3_Children = item_Ellipsis.getChildren(null, null);
376 assertEquals(1, item_R3_Children.length);
377 IMergeViewerItem.Container item_C = (IMergeViewerItem.Container)item_R3_Children[0];
378 assertEquals("C", itemDelegator.getText(item_C.getSideValue(MergeViewerSide.LEFT)));
380 // Test Right Side
381 item_D = new MergeViewerItem.Container(comparison, diff_D, match_D, MergeViewerSide.RIGHT,
382 itemDelegator.getAdapterFactory());
383 assertEquals("D", itemDelegator.getText(item_D.getSideValue(MergeViewerSide.RIGHT)));
384 item_B = item_D.getParent();
385 assertEquals("B", itemDelegator.getText(item_B.getSideValue(MergeViewerSide.RIGHT)));
386 item_Ellipsis = item_B.getParent();
387 assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
388 item_Ellipsis = item_Ellipsis.getParent();
389 assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
390 assertNull(item_Ellipsis.getParent());
392 item_Ellipsis_Children = item_Ellipsis.getChildren(null, null);
393 assertEquals(2, item_Ellipsis_Children.length);
394 item_Ellipsis = (IMergeViewerItem.Container)item_Ellipsis_Children[0];
395 assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
396 item_R2_Children = item_Ellipsis.getChildren(null, null);
397 assertEquals(1, item_R2_Children.length);
398 item_B = (IMergeViewerItem.Container)item_R2_Children[0];
399 assertEquals("B", itemDelegator.getText(item_B.getSideValue(MergeViewerSide.RIGHT)));
400 item_Ellipsis = (IMergeViewerItem.Container)item_Ellipsis_Children[1];
401 assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
402 item_R3_Children = item_Ellipsis.getChildren(null, null);
403 assertEquals(1, item_R3_Children.length);
404 item_C = (IMergeViewerItem.Container)item_R3_Children[0];
405 assertEquals("C", itemDelegator.getText(item_C.getSideValue(MergeViewerSide.RIGHT)));
408 @Test
409 public void testCase5() throws IOException, CoreException {
410 final Comparison comparison = initComparison("case5");
411 final List<Diff> differences = comparison.getDifferences();
412 final Predicate<? super Diff> predicate_H = EMFComparePredicates.removedFromReference("F",
413 "eSubpackages", "F.H");
414 final Diff diff_H = Iterators.find(differences.iterator(), predicate_H);
415 final EObject value_H = (EObject)MergeViewerUtil.getDiffValue(diff_H);
416 final Match match_H = comparison.getMatch(value_H);
418 // Test Left Side
419 IMergeViewerItem.Container item_H = new MergeViewerItem.Container(comparison, diff_H, match_H,
420 MergeViewerSide.LEFT, itemDelegator.getAdapterFactory());
421 assertEquals("", itemDelegator.getText(item_H.getSideValue(MergeViewerSide.LEFT)));
422 IMergeViewerItem.Container item_F = item_H.getParent();
423 assertEquals("F", itemDelegator.getText(item_F.getSideValue(MergeViewerSide.LEFT)));
424 IMergeViewerItem.Container item_Ellipsis = item_F.getParent();
425 assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
426 item_Ellipsis = item_Ellipsis.getParent();
427 assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
428 assertNull(item_Ellipsis.getParent());
430 IMergeViewerItem[] item_Ellipsis_Children = item_Ellipsis.getChildren(null, null);
431 assertEquals(2, item_Ellipsis_Children.length);
432 item_Ellipsis = (IMergeViewerItem.Container)item_Ellipsis_Children[0];
433 assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
434 IMergeViewerItem[] item_R6_Children = item_Ellipsis.getChildren(null, null);
435 assertEquals(1, item_R6_Children.length);
436 item_F = (IMergeViewerItem.Container)item_R6_Children[0];
437 assertEquals("F", itemDelegator.getText(item_F.getSideValue(MergeViewerSide.LEFT)));
438 item_Ellipsis = (IMergeViewerItem.Container)item_Ellipsis_Children[1];
439 assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
440 IMergeViewerItem[] item_R7_Children = item_Ellipsis.getChildren(null, null);
441 assertEquals(1, item_R7_Children.length);
442 IMergeViewerItem.Container item_G = (IMergeViewerItem.Container)item_R7_Children[0];
443 assertEquals("G", itemDelegator.getText(item_G.getSideValue(MergeViewerSide.LEFT)));
445 // Test Right Side
446 item_H = new MergeViewerItem.Container(comparison, diff_H, match_H, MergeViewerSide.RIGHT,
447 itemDelegator.getAdapterFactory());
448 assertEquals("H", itemDelegator.getText(item_H.getSideValue(MergeViewerSide.RIGHT)));
449 item_F = item_H.getParent();
450 assertEquals("F", itemDelegator.getText(item_F.getSideValue(MergeViewerSide.RIGHT)));
451 item_Ellipsis = item_F.getParent();
452 assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
453 item_Ellipsis = item_Ellipsis.getParent();
454 assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
455 assertNull(item_Ellipsis.getParent());
457 item_Ellipsis_Children = item_Ellipsis.getChildren(null, null);
458 assertEquals(2, item_Ellipsis_Children.length);
459 item_Ellipsis = (IMergeViewerItem.Container)item_Ellipsis_Children[0];
460 assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
461 item_R6_Children = item_Ellipsis.getChildren(null, null);
462 assertEquals(1, item_R6_Children.length);
463 item_F = (IMergeViewerItem.Container)item_R6_Children[0];
464 assertEquals("F", itemDelegator.getText(item_F.getSideValue(MergeViewerSide.RIGHT)));
465 item_Ellipsis = (IMergeViewerItem.Container)item_Ellipsis_Children[1];
466 assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
467 item_R7_Children = item_Ellipsis.getChildren(null, null);
468 assertEquals(1, item_R7_Children.length);
469 item_G = (IMergeViewerItem.Container)item_R7_Children[0];
470 assertEquals("G", itemDelegator.getText(item_G.getSideValue(MergeViewerSide.RIGHT)));
473 @Test
474 public void testCase6() throws IOException, CoreException {
475 final Comparison comparison = initComparison("case6");
476 final List<Diff> differences = comparison.getDifferences();
477 final Predicate<? super Diff> predicate_I = EMFComparePredicates.removedFromReference("G",
478 "eSubpackages", "G.I");
479 final Diff diff_I = Iterators.find(differences.iterator(), predicate_I);
480 final EObject value_I = (EObject)MergeViewerUtil.getDiffValue(diff_I);
481 final Match match_I = comparison.getMatch(value_I);
483 // Test Left Side
484 IMergeViewerItem.Container item_I = new MergeViewerItem.Container(comparison, diff_I, match_I,
485 MergeViewerSide.LEFT, itemDelegator.getAdapterFactory());
486 assertEquals("", itemDelegator.getText(item_I.getSideValue(MergeViewerSide.LEFT)));
487 IMergeViewerItem.Container item_G = item_I.getParent();
488 assertEquals("G", itemDelegator.getText(item_G.getSideValue(MergeViewerSide.LEFT)));
489 IMergeViewerItem.Container item_Ellipsis = item_G.getParent();
490 assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
491 IMergeViewerItem.Container item_B = item_Ellipsis.getParent();
492 assertEquals("B", itemDelegator.getText(item_B.getSideValue(MergeViewerSide.LEFT)));
493 item_Ellipsis = item_B.getParent();
494 assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
495 item_Ellipsis = item_Ellipsis.getParent();
496 assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
497 assertNull(item_Ellipsis.getParent());
499 IMergeViewerItem[] item_Ellipsis_Children = item_Ellipsis.getChildren(null, null);
500 assertEquals(2, item_Ellipsis_Children.length);
501 item_Ellipsis = (IMergeViewerItem.Container)item_Ellipsis_Children[0];
502 assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
503 IMergeViewerItem[] item_R2_Children = item_Ellipsis.getChildren(null, null);
504 assertEquals(1, item_R2_Children.length);
505 item_B = (IMergeViewerItem.Container)item_R2_Children[0];
506 assertEquals("B", itemDelegator.getText(item_B.getSideValue(MergeViewerSide.LEFT)));
507 IMergeViewerItem[] item_B_Children = item_B.getChildren(null, null);
508 assertEquals(3, item_B_Children.length);
509 IMergeViewerItem.Container item_E = (IMergeViewerItem.Container)item_B_Children[0];
510 assertEquals("E", itemDelegator.getText(item_E.getSideValue(MergeViewerSide.LEFT)));
511 item_Ellipsis = (IMergeViewerItem.Container)item_B_Children[1];
512 assertEquals(ELLIPSIS + " (R5.ecore)",
513 itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
514 IMergeViewerItem[] item_R5_Children = item_Ellipsis.getChildren(null, null);
515 assertEquals(1, item_R5_Children.length);
516 item_G = (IMergeViewerItem.Container)item_R5_Children[0];
517 assertEquals("G", itemDelegator.getText(item_G.getSideValue(MergeViewerSide.LEFT)));
518 item_Ellipsis = (IMergeViewerItem.Container)item_B_Children[2];
519 assertEquals(ELLIPSIS + " (R6.ecore)",
520 itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
521 IMergeViewerItem[] item_R6_Children = item_Ellipsis.getChildren(null, null);
522 assertEquals(1, item_R6_Children.length);
523 IMergeViewerItem.Container item_H = (IMergeViewerItem.Container)item_R6_Children[0];
524 assertEquals("H", itemDelegator.getText(item_H.getSideValue(MergeViewerSide.LEFT)));
525 item_Ellipsis = (IMergeViewerItem.Container)item_Ellipsis_Children[1];
526 assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
527 IMergeViewerItem[] item_R3_Children = item_Ellipsis.getChildren(null, null);
528 assertEquals(1, item_R3_Children.length);
529 IMergeViewerItem.Container item_C = (IMergeViewerItem.Container)item_R3_Children[0];
530 assertEquals("C", itemDelegator.getText(item_C.getSideValue(MergeViewerSide.LEFT)));
532 // Test Right Side
533 item_I = new MergeViewerItem.Container(comparison, diff_I, match_I, MergeViewerSide.RIGHT,
534 itemDelegator.getAdapterFactory());
535 assertEquals("I", itemDelegator.getText(item_I.getSideValue(MergeViewerSide.RIGHT)));
536 item_G = item_I.getParent();
537 assertEquals("G", itemDelegator.getText(item_G.getSideValue(MergeViewerSide.RIGHT)));
538 item_Ellipsis = item_G.getParent();
539 assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
540 item_B = item_Ellipsis.getParent();
541 assertEquals("B", itemDelegator.getText(item_B.getSideValue(MergeViewerSide.RIGHT)));
542 item_Ellipsis = item_B.getParent();
543 assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
544 item_Ellipsis = item_Ellipsis.getParent();
545 assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
546 assertNull(item_Ellipsis.getParent());
548 item_Ellipsis_Children = item_Ellipsis.getChildren(null, null);
549 assertEquals(2, item_Ellipsis_Children.length);
550 item_Ellipsis = (IMergeViewerItem.Container)item_Ellipsis_Children[0];
551 assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
552 item_R2_Children = item_Ellipsis.getChildren(null, null);
553 assertEquals(1, item_R2_Children.length);
554 item_B = (IMergeViewerItem.Container)item_R2_Children[0];
555 assertEquals("B", itemDelegator.getText(item_B.getSideValue(MergeViewerSide.RIGHT)));
556 item_B_Children = item_B.getChildren(null, null);
557 assertEquals(3, item_B_Children.length);
558 item_E = (IMergeViewerItem.Container)item_B_Children[0];
559 assertEquals("", itemDelegator.getText(item_E.getSideValue(MergeViewerSide.RIGHT)));
560 item_Ellipsis = (IMergeViewerItem.Container)item_B_Children[1];
561 assertEquals(ELLIPSIS + " (R5.ecore)",
562 itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
563 item_R5_Children = item_Ellipsis.getChildren(null, null);
564 assertEquals(1, item_R5_Children.length);
565 item_G = (IMergeViewerItem.Container)item_R5_Children[0];
566 assertEquals("G", itemDelegator.getText(item_G.getSideValue(MergeViewerSide.RIGHT)));
567 item_Ellipsis = (IMergeViewerItem.Container)item_B_Children[2];
568 assertEquals(ELLIPSIS + " (R6.ecore)",
569 itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
570 item_R6_Children = item_Ellipsis.getChildren(null, null);
571 assertEquals(1, item_R6_Children.length);
572 item_H = (IMergeViewerItem.Container)item_R6_Children[0];
573 assertEquals("H", itemDelegator.getText(item_H.getSideValue(MergeViewerSide.RIGHT)));
574 item_Ellipsis = (IMergeViewerItem.Container)item_Ellipsis_Children[1];
575 assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
576 item_R3_Children = item_Ellipsis.getChildren(null, null);
577 assertEquals(1, item_R3_Children.length);
578 item_C = (IMergeViewerItem.Container)item_R3_Children[0];
579 assertEquals("C", itemDelegator.getText(item_C.getSideValue(MergeViewerSide.RIGHT)));
582 @Test
583 public void testCase7() throws IOException, CoreException {
584 final Comparison comparison = initComparison("case7");
585 final List<Diff> differences = comparison.getDifferences();
586 final Predicate<? super Diff> predicate_I = EMFComparePredicates.removedFromReference("G",
587 "eSubpackages", "G.I");
588 final Diff diff_I = Iterators.find(differences.iterator(), predicate_I);
589 final EObject value_I = (EObject)MergeViewerUtil.getDiffValue(diff_I);
590 final Match match_I = comparison.getMatch(value_I);
592 // Test Left Side
593 IMergeViewerItem.Container item_I = new MergeViewerItem.Container(comparison, diff_I, match_I,
594 MergeViewerSide.LEFT, itemDelegator.getAdapterFactory());
595 assertEquals("", itemDelegator.getText(item_I.getSideValue(MergeViewerSide.LEFT)));
596 IMergeViewerItem.Container item_G = item_I.getParent();
597 assertEquals("G", itemDelegator.getText(item_G.getSideValue(MergeViewerSide.LEFT)));
598 IMergeViewerItem.Container item_Ellipsis = item_G.getParent();
599 assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
600 item_Ellipsis = item_Ellipsis.getParent();
601 assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
602 assertNull(item_Ellipsis.getParent());
604 IMergeViewerItem[] item_Ellipsis_Children = item_Ellipsis.getChildren(null, null);
605 assertEquals(3, item_Ellipsis_Children.length);
606 item_Ellipsis = (IMergeViewerItem.Container)item_Ellipsis_Children[0];
607 assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
608 IMergeViewerItem[] item_R3_Children = item_Ellipsis.getChildren(null, null);
609 assertEquals(1, item_R3_Children.length);
610 IMergeViewerItem.Container item_C = (IMergeViewerItem.Container)item_R3_Children[0];
611 assertEquals("C", itemDelegator.getText(item_C.getSideValue(MergeViewerSide.LEFT)));
612 item_Ellipsis = (IMergeViewerItem.Container)item_Ellipsis_Children[1];
613 assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
614 IMergeViewerItem[] item_R5_Children = item_Ellipsis.getChildren(null, null);
615 assertEquals(1, item_R5_Children.length);
616 item_G = (IMergeViewerItem.Container)item_R5_Children[0];
617 assertEquals("G", itemDelegator.getText(item_G.getSideValue(MergeViewerSide.LEFT)));
618 item_Ellipsis = (IMergeViewerItem.Container)item_Ellipsis_Children[2];
619 assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
620 IMergeViewerItem[] item_R6_Children = item_Ellipsis.getChildren(null, null);
621 assertEquals(1, item_R6_Children.length);
622 IMergeViewerItem.Container item_H = (IMergeViewerItem.Container)item_R6_Children[0];
623 assertEquals("H", itemDelegator.getText(item_H.getSideValue(MergeViewerSide.LEFT)));
625 // Test Right Side
626 item_I = new MergeViewerItem.Container(comparison, diff_I, match_I, MergeViewerSide.LEFT,
627 itemDelegator.getAdapterFactory());
628 assertEquals("I", itemDelegator.getText(item_I.getSideValue(MergeViewerSide.RIGHT)));
629 item_G = item_I.getParent();
630 assertEquals("G", itemDelegator.getText(item_G.getSideValue(MergeViewerSide.RIGHT)));
631 item_Ellipsis = item_G.getParent();
632 assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
633 item_Ellipsis = item_Ellipsis.getParent();
634 assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
635 assertNull(item_Ellipsis.getParent());
637 item_Ellipsis_Children = item_Ellipsis.getChildren(null, null);
638 assertEquals(3, item_Ellipsis_Children.length);
639 item_Ellipsis = (IMergeViewerItem.Container)item_Ellipsis_Children[0];
640 assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
641 item_R3_Children = item_Ellipsis.getChildren(null, null);
642 assertEquals(1, item_R3_Children.length);
643 item_C = (IMergeViewerItem.Container)item_R3_Children[0];
644 assertEquals("C", itemDelegator.getText(item_C.getSideValue(MergeViewerSide.RIGHT)));
645 item_Ellipsis = (IMergeViewerItem.Container)item_Ellipsis_Children[1];
646 assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
647 item_R5_Children = item_Ellipsis.getChildren(null, null);
648 assertEquals(1, item_R5_Children.length);
649 item_G = (IMergeViewerItem.Container)item_R5_Children[0];
650 assertEquals("G", itemDelegator.getText(item_G.getSideValue(MergeViewerSide.RIGHT)));
651 item_Ellipsis = (IMergeViewerItem.Container)item_Ellipsis_Children[2];
652 assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
653 item_R6_Children = item_Ellipsis.getChildren(null, null);
654 assertEquals(1, item_R6_Children.length);
655 item_H = (IMergeViewerItem.Container)item_R6_Children[0];
656 assertEquals("H", itemDelegator.getText(item_H.getSideValue(MergeViewerSide.RIGHT)));