/*******************************************************************************
* Copyright (c) 2015, 2017 Obeo 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:
* Obeo - initial API and implementation
* Stefan Dirix - bug 475401
* Martin Fleck - bug 512562
*******************************************************************************/
package org.eclipse.emf.compare.ide.ui.tests.contentmergeviewer.notloadedfragment;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import com.google.common.base.Predicate;
import com.google.common.collect.Iterators;
import com.google.common.collect.Lists;
import com.google.common.eventbus.EventBus;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.Collection;
import java.util.List;
import org.eclipse.compare.ITypedElement;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IProjectDescription;
import org.eclipse.core.resources.IStorage;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Platform;
import org.eclipse.emf.common.notify.AdapterFactory;
import org.eclipse.emf.compare.Comparison;
import org.eclipse.emf.compare.Diff;
import org.eclipse.emf.compare.EMFCompare;
import org.eclipse.emf.compare.Match;
import org.eclipse.emf.compare.ide.ui.internal.EMFCompareIDEUIPlugin;
import org.eclipse.emf.compare.ide.ui.internal.logical.ComparisonScopeBuilder;
import org.eclipse.emf.compare.ide.ui.internal.logical.StorageTypedElement;
import org.eclipse.emf.compare.ide.ui.internal.logical.StreamAccessorStorage;
import org.eclipse.emf.compare.ide.ui.internal.logical.resolver.ThreadedModelResolver;
import org.eclipse.emf.compare.ide.ui.internal.util.PlatformElementUtil;
import org.eclipse.emf.compare.ide.ui.logical.IModelResolver;
import org.eclipse.emf.compare.provider.spec.CompareItemProviderAdapterFactorySpec;
import org.eclipse.emf.compare.rcp.ui.internal.mergeviewer.item.impl.MergeViewerItem;
import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.filters.StructureMergeViewerFilter;
import org.eclipse.emf.compare.rcp.ui.internal.structuremergeviewer.groups.provider.TreeItemProviderAdapterFactorySpec;
import org.eclipse.emf.compare.rcp.ui.internal.util.MergeViewerUtil;
import org.eclipse.emf.compare.rcp.ui.mergeviewer.IMergeViewer.MergeViewerSide;
import org.eclipse.emf.compare.rcp.ui.mergeviewer.item.IMergeViewerItem;
import org.eclipse.emf.compare.scope.IComparisonScope;
import org.eclipse.emf.compare.utils.EMFComparePredicates;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.provider.EcoreItemProviderAdapterFactory;
import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator;
import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory;
import org.junit.Before;
import org.junit.Test;
import org.osgi.framework.Bundle;
@SuppressWarnings({"restriction", "nls" })
public class NotLoadedFragmentItemTest {
private static final String ELLIPSIS = "[ ... ]";
private static AdapterFactoryItemDelegator itemDelegator;
private static String SEP = File.separator;
private EventBus eventBus;
@Before
public void setup() {
final Collection<AdapterFactory> factories = Lists.newArrayList();
factories.add(new CompareItemProviderAdapterFactorySpec());
eventBus = new EventBus();
factories.add(new TreeItemProviderAdapterFactorySpec(new StructureMergeViewerFilter(eventBus)));
factories.add(new EcoreItemProviderAdapterFactory());
factories.add(new ReflectiveItemProviderAdapterFactory());
final AdapterFactory composedAdapterFactory = new ComposedAdapterFactory(factories);
itemDelegator = new AdapterFactoryItemDelegator(composedAdapterFactory);
}
private Comparison initComparison(String projectName) throws IOException, CoreException {
Bundle bundle = Platform.getBundle("org.eclipse.emf.compare.ide.ui.tests");
URL entry = bundle.getEntry("src" + SEP + "org" + SEP + "eclipse" + SEP + "emf" + SEP + "compare"
+ SEP + "ide" + SEP + "ui" + SEP + "tests" + SEP + "structuremergeviewer" + SEP
+ "notloadedfragment" + SEP + "data" + SEP + projectName + SEP + ".project");
URL fileURL = FileLocator.toFileURL(entry);
IProjectDescription description = ResourcesPlugin.getWorkspace()
.loadProjectDescription(new Path(fileURL.getPath()));
IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(description.getName());
if (!project.exists()) {
project.create(description, new NullProgressMonitor());
project.open(new NullProgressMonitor());
}
final IFile leftFile = project.getFile(new Path("left" + SEP + "R1.ecore"));
final IFile rightFile = project.getFile(new Path("right" + SEP + "R1.ecore"));
final ITypedElement left = new StorageTypedElement(leftFile, leftFile.getFullPath().toOSString());
final ITypedElement right = new StorageTypedElement(rightFile, rightFile.getFullPath().toOSString());
IStorage leftStorage = PlatformElementUtil.findFile(left);
if (leftStorage == null) {
leftStorage = StreamAccessorStorage.fromTypedElement(left);
}
final IModelResolver resolver = EMFCompareIDEUIPlugin.getDefault().getModelResolverRegistry()
.getBestResolverFor(leftStorage);
assertTrue(resolver instanceof ThreadedModelResolver);
final ComparisonScopeBuilder scopeBuilder = new ComparisonScopeBuilder(resolver,
EMFCompareIDEUIPlugin.getDefault().getModelMinimizerRegistry().getCompoundMinimizer(), null);
final IComparisonScope scope = scopeBuilder.build(left, right, null, new NullProgressMonitor());
final Comparison comparison = EMFCompare.builder().build().compare(scope);
return comparison;
}
@Test
public void testCase0() throws IOException, CoreException {
final Comparison comparison = initComparison("case0");
final List<Diff> differences = comparison.getDifferences();
final Predicate<? super Diff> predicate_E = EMFComparePredicates.addedToReference("B", "eSubpackages",
"B.E");
final Diff diff_E = Iterators.find(differences.iterator(), predicate_E);
final EObject value_E = (EObject)MergeViewerUtil.getDiffValue(diff_E);
final Match match_E = comparison.getMatch(value_E);
// Test Left Side
IMergeViewerItem.Container item_E = new MergeViewerItem.Container(comparison, diff_E, match_E,
MergeViewerSide.LEFT, itemDelegator.getAdapterFactory());
assertEquals("E", itemDelegator.getText(item_E.getSideValue(MergeViewerSide.LEFT)));
IMergeViewerItem.Container item_B = item_E.getParent();
assertEquals("B", itemDelegator.getText(item_B.getSideValue(MergeViewerSide.LEFT)));
IMergeViewerItem.Container item_Ellipsis = item_B.getParent();
assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
assertNull(item_Ellipsis.getParent());
IMergeViewerItem[] item_Ellipsis_Children = item_Ellipsis.getChildren(null, null);
assertEquals(1, item_Ellipsis_Children.length);
item_B = (IMergeViewerItem.Container)item_Ellipsis_Children[0];
assertEquals("B", itemDelegator.getText(item_B.getSideValue(MergeViewerSide.LEFT)));
// Test Right Side
item_E = new MergeViewerItem.Container(comparison, diff_E, match_E, MergeViewerSide.RIGHT,
itemDelegator.getAdapterFactory());
assertEquals("", itemDelegator.getText(item_E.getSideValue(MergeViewerSide.RIGHT)));
item_B = item_E.getParent();
assertEquals("B", itemDelegator.getText(item_B.getSideValue(MergeViewerSide.RIGHT)));
item_Ellipsis = item_B.getParent();
assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
assertNull(item_Ellipsis.getParent());
item_Ellipsis_Children = item_Ellipsis.getChildren(null, null);
assertEquals(1, item_Ellipsis_Children.length);
item_B = (IMergeViewerItem.Container)item_Ellipsis_Children[0];
assertEquals("B", itemDelegator.getText(item_B.getSideValue(MergeViewerSide.RIGHT)));
}
@Test
public void testCase1() throws IOException, CoreException {
final Comparison comparison = initComparison("case1");
final List<Diff> differences = comparison.getDifferences();
final Predicate<? super Diff> predicate_F = EMFComparePredicates.addedToReference("D", "eSubpackages",
"D.F");
final Diff diff_F = Iterators.find(differences.iterator(), predicate_F);
final EObject value_F = (EObject)MergeViewerUtil.getDiffValue(diff_F);
final Match match_F = comparison.getMatch(value_F);
// Test Left Side
IMergeViewerItem.Container item_F = new MergeViewerItem.Container(comparison, diff_F, match_F,
MergeViewerSide.LEFT, itemDelegator.getAdapterFactory());
assertEquals("F", itemDelegator.getText(item_F.getSideValue(MergeViewerSide.LEFT)));
IMergeViewerItem.Container item_D = item_F.getParent();
assertEquals("D", itemDelegator.getText(item_D.getSideValue(MergeViewerSide.LEFT)));
IMergeViewerItem.Container item_Ellipsis = item_D.getParent();
assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
IMergeViewerItem.Container item_A = item_Ellipsis.getParent();
assertEquals("A", itemDelegator.getText(item_A.getSideValue(MergeViewerSide.LEFT)));
assertNull(item_A.getParent());
IMergeViewerItem[] item_A_Children = item_A.getChildren(null, null);
assertEquals(2, item_A_Children.length);
IMergeViewerItem.Container item_C = (IMergeViewerItem.Container)item_A_Children[0];
assertEquals("", itemDelegator.getText(item_C.getSideValue(MergeViewerSide.LEFT)));
item_Ellipsis = (IMergeViewerItem.Container)item_A_Children[1];
assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
IMergeViewerItem[] item_Ellipsis_Children = item_Ellipsis.getChildren(null, null);
assertEquals(1, item_Ellipsis_Children.length);
item_D = (IMergeViewerItem.Container)item_Ellipsis_Children[0];
assertEquals("D", itemDelegator.getText(item_D.getSideValue(MergeViewerSide.LEFT)));
// Test Right Side
item_F = new MergeViewerItem.Container(comparison, diff_F, match_F, MergeViewerSide.RIGHT,
itemDelegator.getAdapterFactory());
assertEquals("", itemDelegator.getText(item_F.getSideValue(MergeViewerSide.RIGHT)));
item_D = item_F.getParent();
assertEquals("D", itemDelegator.getText(item_D.getSideValue(MergeViewerSide.RIGHT)));
item_Ellipsis = item_D.getParent();
assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
item_A = item_Ellipsis.getParent();
assertEquals("A", itemDelegator.getText(item_A.getSideValue(MergeViewerSide.RIGHT)));
assertNull(item_A.getParent());
item_A_Children = item_A.getChildren(null, null);
assertEquals(2, item_A_Children.length);
item_C = (IMergeViewerItem.Container)item_A_Children[0];
assertEquals("C", itemDelegator.getText(item_C.getSideValue(MergeViewerSide.RIGHT)));
item_Ellipsis = (IMergeViewerItem.Container)item_A_Children[1];
assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
item_Ellipsis_Children = item_Ellipsis.getChildren(null, null);
assertEquals(1, item_Ellipsis_Children.length);
item_D = (IMergeViewerItem.Container)item_Ellipsis_Children[0];
assertEquals("D", itemDelegator.getText(item_D.getSideValue(MergeViewerSide.RIGHT)));
}
@Test
public void testCase2() throws IOException, CoreException {
final Comparison comparison = initComparison("case2");
final List<Diff> differences = comparison.getDifferences();
final Predicate<? super Diff> predicate_E = EMFComparePredicates.addedToReference("B.D",
"eSubpackages", "B.D.E");
final Diff diff_E = Iterators.find(differences.iterator(), predicate_E);
final EObject value_E = (EObject)MergeViewerUtil.getDiffValue(diff_E);
final Match match_E = comparison.getMatch(value_E);
// Test Left Side
IMergeViewerItem.Container item_E = new MergeViewerItem.Container(comparison, diff_E, match_E,
MergeViewerSide.LEFT, itemDelegator.getAdapterFactory());
assertEquals("E", itemDelegator.getText(item_E.getSideValue(MergeViewerSide.LEFT)));
IMergeViewerItem.Container item_D = item_E.getParent();
assertEquals("D", itemDelegator.getText(item_D.getSideValue(MergeViewerSide.LEFT)));
IMergeViewerItem.Container item_B = item_D.getParent();
assertEquals("B", itemDelegator.getText(item_B.getSideValue(MergeViewerSide.LEFT)));
IMergeViewerItem.Container item_Ellipsis = item_B.getParent();
assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
assertNull(item_Ellipsis.getParent());
IMergeViewerItem[] item_Ellipsis_Children = item_Ellipsis.getChildren(null, null);
assertEquals(1, item_Ellipsis_Children.length);
item_B = (IMergeViewerItem.Container)item_Ellipsis_Children[0];
assertEquals("B", itemDelegator.getText(item_B.getSideValue(MergeViewerSide.LEFT)));
// Test Right Side
item_E = new MergeViewerItem.Container(comparison, diff_E, match_E, MergeViewerSide.RIGHT,
itemDelegator.getAdapterFactory());
assertEquals("", itemDelegator.getText(item_E.getSideValue(MergeViewerSide.RIGHT)));
item_D = item_E.getParent();
assertEquals("D", itemDelegator.getText(item_D.getSideValue(MergeViewerSide.RIGHT)));
item_B = item_D.getParent();
assertEquals("B", itemDelegator.getText(item_B.getSideValue(MergeViewerSide.RIGHT)));
item_Ellipsis = item_B.getParent();
assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
assertNull(item_Ellipsis.getParent());
item_Ellipsis_Children = item_Ellipsis.getChildren(null, null);
assertEquals(1, item_Ellipsis_Children.length);
item_B = (IMergeViewerItem.Container)item_Ellipsis_Children[0];
assertEquals("B", itemDelegator.getText(item_B.getSideValue(MergeViewerSide.RIGHT)));
}
@Test
public void testCase3() throws IOException, CoreException {
final Comparison comparison = initComparison("case3");
final List<Diff> differences = comparison.getDifferences();
final Predicate<? super Diff> predicate_F = EMFComparePredicates.addedToReference("E", "eSubpackages",
"E.F");
final Diff diff_F = Iterators.find(differences.iterator(), predicate_F);
final EObject value_F = (EObject)MergeViewerUtil.getDiffValue(diff_F);
final Match match_F = comparison.getMatch(value_F);
// Test Left Side
IMergeViewerItem.Container item_F = new MergeViewerItem.Container(comparison, diff_F, match_F,
MergeViewerSide.LEFT, itemDelegator.getAdapterFactory());
assertEquals("F", itemDelegator.getText(item_F.getSideValue(MergeViewerSide.LEFT)));
IMergeViewerItem.Container item_E = item_F.getParent();
assertEquals("E", itemDelegator.getText(item_E.getSideValue(MergeViewerSide.LEFT)));
IMergeViewerItem.Container item_Ellipsis = item_E.getParent();
assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
IMergeViewerItem.Container item_B = item_Ellipsis.getParent();
assertEquals("B", itemDelegator.getText(item_B.getSideValue(MergeViewerSide.LEFT)));
item_Ellipsis = item_B.getParent();
assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
assertNull(item_Ellipsis.getParent());
IMergeViewerItem[] item_Ellipsis_Children = item_Ellipsis.getChildren(null, null);
assertEquals(1, item_Ellipsis_Children.length);
item_B = (IMergeViewerItem.Container)item_Ellipsis_Children[0];
assertEquals("B", itemDelegator.getText(item_B.getSideValue(MergeViewerSide.LEFT)));
IMergeViewerItem[] item_B_Children = item_B.getChildren(null, null);
assertEquals(2, item_B_Children.length);
IMergeViewerItem.Container item_C = (IMergeViewerItem.Container)item_B_Children[0];
assertEquals("", itemDelegator.getText(item_C.getSideValue(MergeViewerSide.LEFT)));
item_Ellipsis = (IMergeViewerItem.Container)item_B_Children[1];
assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
item_Ellipsis_Children = item_Ellipsis.getChildren(null, null);
assertEquals(1, item_Ellipsis_Children.length);
item_E = (IMergeViewerItem.Container)item_Ellipsis_Children[0];
assertEquals("E", itemDelegator.getText(item_E.getSideValue(MergeViewerSide.LEFT)));
// Test Right Side
item_F = new MergeViewerItem.Container(comparison, diff_F, match_F, MergeViewerSide.RIGHT,
itemDelegator.getAdapterFactory());
assertEquals("", itemDelegator.getText(item_F.getSideValue(MergeViewerSide.RIGHT)));
item_E = item_F.getParent();
assertEquals("E", itemDelegator.getText(item_E.getSideValue(MergeViewerSide.RIGHT)));
item_Ellipsis = item_E.getParent();
assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
item_B = item_Ellipsis.getParent();
assertEquals("B", itemDelegator.getText(item_B.getSideValue(MergeViewerSide.RIGHT)));
item_Ellipsis = item_B.getParent();
assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
assertNull(item_Ellipsis.getParent());
item_Ellipsis_Children = item_Ellipsis.getChildren(null, null);
assertEquals(1, item_Ellipsis_Children.length);
item_B = (IMergeViewerItem.Container)item_Ellipsis_Children[0];
assertEquals("B", itemDelegator.getText(item_B.getSideValue(MergeViewerSide.RIGHT)));
item_B_Children = item_B.getChildren(null, null);
assertEquals(2, item_B_Children.length);
item_C = (IMergeViewerItem.Container)item_B_Children[0];
assertEquals("C", itemDelegator.getText(item_C.getSideValue(MergeViewerSide.RIGHT)));
item_Ellipsis = (IMergeViewerItem.Container)item_B_Children[1];
assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
item_Ellipsis_Children = item_Ellipsis.getChildren(null, null);
assertEquals(1, item_Ellipsis_Children.length);
item_E = (IMergeViewerItem.Container)item_Ellipsis_Children[0];
assertEquals("E", itemDelegator.getText(item_E.getSideValue(MergeViewerSide.RIGHT)));
}
@Test
public void testCase4() throws IOException, CoreException {
final Comparison comparison = initComparison("case4");
final List<Diff> differences = comparison.getDifferences();
final Predicate<? super Diff> predicate_D = EMFComparePredicates.removedFromReference("B",
"eSubpackages", "B.D");
final Diff diff_D = Iterators.find(differences.iterator(), predicate_D);
final EObject value_D = (EObject)MergeViewerUtil.getDiffValue(diff_D);
final Match match_D = comparison.getMatch(value_D);
// Test Left Side
IMergeViewerItem.Container item_D = new MergeViewerItem.Container(comparison, diff_D, match_D,
MergeViewerSide.LEFT, itemDelegator.getAdapterFactory());
assertEquals("", itemDelegator.getText(item_D.getSideValue(MergeViewerSide.LEFT)));
IMergeViewerItem.Container item_B = item_D.getParent();
assertEquals("B", itemDelegator.getText(item_B.getSideValue(MergeViewerSide.LEFT)));
IMergeViewerItem.Container item_Ellipsis = item_B.getParent();
assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
item_Ellipsis = item_Ellipsis.getParent();
assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
assertNull(item_Ellipsis.getParent());
IMergeViewerItem[] item_Ellipsis_Children = item_Ellipsis.getChildren(null, null);
assertEquals(2, item_Ellipsis_Children.length);
item_Ellipsis = (IMergeViewerItem.Container)item_Ellipsis_Children[0];
assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
IMergeViewerItem[] item_R2_Children = item_Ellipsis.getChildren(null, null);
assertEquals(1, item_R2_Children.length);
item_B = (IMergeViewerItem.Container)item_R2_Children[0];
assertEquals("B", itemDelegator.getText(item_B.getSideValue(MergeViewerSide.LEFT)));
item_Ellipsis = (IMergeViewerItem.Container)item_Ellipsis_Children[1];
assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
IMergeViewerItem[] item_R3_Children = item_Ellipsis.getChildren(null, null);
assertEquals(1, item_R3_Children.length);
IMergeViewerItem.Container item_C = (IMergeViewerItem.Container)item_R3_Children[0];
assertEquals("C", itemDelegator.getText(item_C.getSideValue(MergeViewerSide.LEFT)));
// Test Right Side
item_D = new MergeViewerItem.Container(comparison, diff_D, match_D, MergeViewerSide.RIGHT,
itemDelegator.getAdapterFactory());
assertEquals("D", itemDelegator.getText(item_D.getSideValue(MergeViewerSide.RIGHT)));
item_B = item_D.getParent();
assertEquals("B", itemDelegator.getText(item_B.getSideValue(MergeViewerSide.RIGHT)));
item_Ellipsis = item_B.getParent();
assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
item_Ellipsis = item_Ellipsis.getParent();
assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
assertNull(item_Ellipsis.getParent());
item_Ellipsis_Children = item_Ellipsis.getChildren(null, null);
assertEquals(2, item_Ellipsis_Children.length);
item_Ellipsis = (IMergeViewerItem.Container)item_Ellipsis_Children[0];
assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
item_R2_Children = item_Ellipsis.getChildren(null, null);
assertEquals(1, item_R2_Children.length);
item_B = (IMergeViewerItem.Container)item_R2_Children[0];
assertEquals("B", itemDelegator.getText(item_B.getSideValue(MergeViewerSide.RIGHT)));
item_Ellipsis = (IMergeViewerItem.Container)item_Ellipsis_Children[1];
assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
item_R3_Children = item_Ellipsis.getChildren(null, null);
assertEquals(1, item_R3_Children.length);
item_C = (IMergeViewerItem.Container)item_R3_Children[0];
assertEquals("C", itemDelegator.getText(item_C.getSideValue(MergeViewerSide.RIGHT)));
}
@Test
public void testCase5() throws IOException, CoreException {
final Comparison comparison = initComparison("case5");
final List<Diff> differences = comparison.getDifferences();
final Predicate<? super Diff> predicate_H = EMFComparePredicates.removedFromReference("F",
"eSubpackages", "F.H");
final Diff diff_H = Iterators.find(differences.iterator(), predicate_H);
final EObject value_H = (EObject)MergeViewerUtil.getDiffValue(diff_H);
final Match match_H = comparison.getMatch(value_H);
// Test Left Side
IMergeViewerItem.Container item_H = new MergeViewerItem.Container(comparison, diff_H, match_H,
MergeViewerSide.LEFT, itemDelegator.getAdapterFactory());
assertEquals("", itemDelegator.getText(item_H.getSideValue(MergeViewerSide.LEFT)));
IMergeViewerItem.Container item_F = item_H.getParent();
assertEquals("F", itemDelegator.getText(item_F.getSideValue(MergeViewerSide.LEFT)));
IMergeViewerItem.Container item_Ellipsis = item_F.getParent();
assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
item_Ellipsis = item_Ellipsis.getParent();
assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
assertNull(item_Ellipsis.getParent());
IMergeViewerItem[] item_Ellipsis_Children = item_Ellipsis.getChildren(null, null);
assertEquals(2, item_Ellipsis_Children.length);
item_Ellipsis = (IMergeViewerItem.Container)item_Ellipsis_Children[0];
assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
IMergeViewerItem[] item_R6_Children = item_Ellipsis.getChildren(null, null);
assertEquals(1, item_R6_Children.length);
item_F = (IMergeViewerItem.Container)item_R6_Children[0];
assertEquals("F", itemDelegator.getText(item_F.getSideValue(MergeViewerSide.LEFT)));
item_Ellipsis = (IMergeViewerItem.Container)item_Ellipsis_Children[1];
assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
IMergeViewerItem[] item_R7_Children = item_Ellipsis.getChildren(null, null);
assertEquals(1, item_R7_Children.length);
IMergeViewerItem.Container item_G = (IMergeViewerItem.Container)item_R7_Children[0];
assertEquals("G", itemDelegator.getText(item_G.getSideValue(MergeViewerSide.LEFT)));
// Test Right Side
item_H = new MergeViewerItem.Container(comparison, diff_H, match_H, MergeViewerSide.RIGHT,
itemDelegator.getAdapterFactory());
assertEquals("H", itemDelegator.getText(item_H.getSideValue(MergeViewerSide.RIGHT)));
item_F = item_H.getParent();
assertEquals("F", itemDelegator.getText(item_F.getSideValue(MergeViewerSide.RIGHT)));
item_Ellipsis = item_F.getParent();
assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
item_Ellipsis = item_Ellipsis.getParent();
assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
assertNull(item_Ellipsis.getParent());
item_Ellipsis_Children = item_Ellipsis.getChildren(null, null);
assertEquals(2, item_Ellipsis_Children.length);
item_Ellipsis = (IMergeViewerItem.Container)item_Ellipsis_Children[0];
assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
item_R6_Children = item_Ellipsis.getChildren(null, null);
assertEquals(1, item_R6_Children.length);
item_F = (IMergeViewerItem.Container)item_R6_Children[0];
assertEquals("F", itemDelegator.getText(item_F.getSideValue(MergeViewerSide.RIGHT)));
item_Ellipsis = (IMergeViewerItem.Container)item_Ellipsis_Children[1];
assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
item_R7_Children = item_Ellipsis.getChildren(null, null);
assertEquals(1, item_R7_Children.length);
item_G = (IMergeViewerItem.Container)item_R7_Children[0];
assertEquals("G", itemDelegator.getText(item_G.getSideValue(MergeViewerSide.RIGHT)));
}
@Test
public void testCase6() throws IOException, CoreException {
final Comparison comparison = initComparison("case6");
final List<Diff> differences = comparison.getDifferences();
final Predicate<? super Diff> predicate_I = EMFComparePredicates.removedFromReference("G",
"eSubpackages", "G.I");
final Diff diff_I = Iterators.find(differences.iterator(), predicate_I);
final EObject value_I = (EObject)MergeViewerUtil.getDiffValue(diff_I);
final Match match_I = comparison.getMatch(value_I);
// Test Left Side
IMergeViewerItem.Container item_I = new MergeViewerItem.Container(comparison, diff_I, match_I,
MergeViewerSide.LEFT, itemDelegator.getAdapterFactory());
assertEquals("", itemDelegator.getText(item_I.getSideValue(MergeViewerSide.LEFT)));
IMergeViewerItem.Container item_G = item_I.getParent();
assertEquals("G", itemDelegator.getText(item_G.getSideValue(MergeViewerSide.LEFT)));
IMergeViewerItem.Container item_Ellipsis = item_G.getParent();
assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
IMergeViewerItem.Container item_B = item_Ellipsis.getParent();
assertEquals("B", itemDelegator.getText(item_B.getSideValue(MergeViewerSide.LEFT)));
item_Ellipsis = item_B.getParent();
assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
item_Ellipsis = item_Ellipsis.getParent();
assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
assertNull(item_Ellipsis.getParent());
IMergeViewerItem[] item_Ellipsis_Children = item_Ellipsis.getChildren(null, null);
assertEquals(2, item_Ellipsis_Children.length);
item_Ellipsis = (IMergeViewerItem.Container)item_Ellipsis_Children[0];
assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
IMergeViewerItem[] item_R2_Children = item_Ellipsis.getChildren(null, null);
assertEquals(1, item_R2_Children.length);
item_B = (IMergeViewerItem.Container)item_R2_Children[0];
assertEquals("B", itemDelegator.getText(item_B.getSideValue(MergeViewerSide.LEFT)));
IMergeViewerItem[] item_B_Children = item_B.getChildren(null, null);
assertEquals(3, item_B_Children.length);
IMergeViewerItem.Container item_E = (IMergeViewerItem.Container)item_B_Children[0];
assertEquals("E", itemDelegator.getText(item_E.getSideValue(MergeViewerSide.LEFT)));
item_Ellipsis = (IMergeViewerItem.Container)item_B_Children[1];
assertEquals(ELLIPSIS + " (R5.ecore)",
itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
IMergeViewerItem[] item_R5_Children = item_Ellipsis.getChildren(null, null);
assertEquals(1, item_R5_Children.length);
item_G = (IMergeViewerItem.Container)item_R5_Children[0];
assertEquals("G", itemDelegator.getText(item_G.getSideValue(MergeViewerSide.LEFT)));
item_Ellipsis = (IMergeViewerItem.Container)item_B_Children[2];
assertEquals(ELLIPSIS + " (R6.ecore)",
itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
IMergeViewerItem[] item_R6_Children = item_Ellipsis.getChildren(null, null);
assertEquals(1, item_R6_Children.length);
IMergeViewerItem.Container item_H = (IMergeViewerItem.Container)item_R6_Children[0];
assertEquals("H", itemDelegator.getText(item_H.getSideValue(MergeViewerSide.LEFT)));
item_Ellipsis = (IMergeViewerItem.Container)item_Ellipsis_Children[1];
assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
IMergeViewerItem[] item_R3_Children = item_Ellipsis.getChildren(null, null);
assertEquals(1, item_R3_Children.length);
IMergeViewerItem.Container item_C = (IMergeViewerItem.Container)item_R3_Children[0];
assertEquals("C", itemDelegator.getText(item_C.getSideValue(MergeViewerSide.LEFT)));
// Test Right Side
item_I = new MergeViewerItem.Container(comparison, diff_I, match_I, MergeViewerSide.RIGHT,
itemDelegator.getAdapterFactory());
assertEquals("I", itemDelegator.getText(item_I.getSideValue(MergeViewerSide.RIGHT)));
item_G = item_I.getParent();
assertEquals("G", itemDelegator.getText(item_G.getSideValue(MergeViewerSide.RIGHT)));
item_Ellipsis = item_G.getParent();
assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
item_B = item_Ellipsis.getParent();
assertEquals("B", itemDelegator.getText(item_B.getSideValue(MergeViewerSide.RIGHT)));
item_Ellipsis = item_B.getParent();
assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
item_Ellipsis = item_Ellipsis.getParent();
assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
assertNull(item_Ellipsis.getParent());
item_Ellipsis_Children = item_Ellipsis.getChildren(null, null);
assertEquals(2, item_Ellipsis_Children.length);
item_Ellipsis = (IMergeViewerItem.Container)item_Ellipsis_Children[0];
assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
item_R2_Children = item_Ellipsis.getChildren(null, null);
assertEquals(1, item_R2_Children.length);
item_B = (IMergeViewerItem.Container)item_R2_Children[0];
assertEquals("B", itemDelegator.getText(item_B.getSideValue(MergeViewerSide.RIGHT)));
item_B_Children = item_B.getChildren(null, null);
assertEquals(3, item_B_Children.length);
item_E = (IMergeViewerItem.Container)item_B_Children[0];
assertEquals("", itemDelegator.getText(item_E.getSideValue(MergeViewerSide.RIGHT)));
item_Ellipsis = (IMergeViewerItem.Container)item_B_Children[1];
assertEquals(ELLIPSIS + " (R5.ecore)",
itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
item_R5_Children = item_Ellipsis.getChildren(null, null);
assertEquals(1, item_R5_Children.length);
item_G = (IMergeViewerItem.Container)item_R5_Children[0];
assertEquals("G", itemDelegator.getText(item_G.getSideValue(MergeViewerSide.RIGHT)));
item_Ellipsis = (IMergeViewerItem.Container)item_B_Children[2];
assertEquals(ELLIPSIS + " (R6.ecore)",
itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
item_R6_Children = item_Ellipsis.getChildren(null, null);
assertEquals(1, item_R6_Children.length);
item_H = (IMergeViewerItem.Container)item_R6_Children[0];
assertEquals("H", itemDelegator.getText(item_H.getSideValue(MergeViewerSide.RIGHT)));
item_Ellipsis = (IMergeViewerItem.Container)item_Ellipsis_Children[1];
assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
item_R3_Children = item_Ellipsis.getChildren(null, null);
assertEquals(1, item_R3_Children.length);
item_C = (IMergeViewerItem.Container)item_R3_Children[0];
assertEquals("C", itemDelegator.getText(item_C.getSideValue(MergeViewerSide.RIGHT)));
}
@Test
public void testCase7() throws IOException, CoreException {
final Comparison comparison = initComparison("case7");
final List<Diff> differences = comparison.getDifferences();
final Predicate<? super Diff> predicate_I = EMFComparePredicates.removedFromReference("G",
"eSubpackages", "G.I");
final Diff diff_I = Iterators.find(differences.iterator(), predicate_I);
final EObject value_I = (EObject)MergeViewerUtil.getDiffValue(diff_I);
final Match match_I = comparison.getMatch(value_I);
// Test Left Side
IMergeViewerItem.Container item_I = new MergeViewerItem.Container(comparison, diff_I, match_I,
MergeViewerSide.LEFT, itemDelegator.getAdapterFactory());
assertEquals("", itemDelegator.getText(item_I.getSideValue(MergeViewerSide.LEFT)));
IMergeViewerItem.Container item_G = item_I.getParent();
assertEquals("G", itemDelegator.getText(item_G.getSideValue(MergeViewerSide.LEFT)));
IMergeViewerItem.Container item_Ellipsis = item_G.getParent();
assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
item_Ellipsis = item_Ellipsis.getParent();
assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
assertNull(item_Ellipsis.getParent());
IMergeViewerItem[] item_Ellipsis_Children = item_Ellipsis.getChildren(null, null);
assertEquals(3, item_Ellipsis_Children.length);
item_Ellipsis = (IMergeViewerItem.Container)item_Ellipsis_Children[0];
assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
IMergeViewerItem[] item_R3_Children = item_Ellipsis.getChildren(null, null);
assertEquals(1, item_R3_Children.length);
IMergeViewerItem.Container item_C = (IMergeViewerItem.Container)item_R3_Children[0];
assertEquals("C", itemDelegator.getText(item_C.getSideValue(MergeViewerSide.LEFT)));
item_Ellipsis = (IMergeViewerItem.Container)item_Ellipsis_Children[1];
assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
IMergeViewerItem[] item_R5_Children = item_Ellipsis.getChildren(null, null);
assertEquals(1, item_R5_Children.length);
item_G = (IMergeViewerItem.Container)item_R5_Children[0];
assertEquals("G", itemDelegator.getText(item_G.getSideValue(MergeViewerSide.LEFT)));
item_Ellipsis = (IMergeViewerItem.Container)item_Ellipsis_Children[2];
assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.LEFT)));
IMergeViewerItem[] item_R6_Children = item_Ellipsis.getChildren(null, null);
assertEquals(1, item_R6_Children.length);
IMergeViewerItem.Container item_H = (IMergeViewerItem.Container)item_R6_Children[0];
assertEquals("H", itemDelegator.getText(item_H.getSideValue(MergeViewerSide.LEFT)));
// Test Right Side
item_I = new MergeViewerItem.Container(comparison, diff_I, match_I, MergeViewerSide.LEFT,
itemDelegator.getAdapterFactory());
assertEquals("I", itemDelegator.getText(item_I.getSideValue(MergeViewerSide.RIGHT)));
item_G = item_I.getParent();
assertEquals("G", itemDelegator.getText(item_G.getSideValue(MergeViewerSide.RIGHT)));
item_Ellipsis = item_G.getParent();
assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
item_Ellipsis = item_Ellipsis.getParent();
assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
assertNull(item_Ellipsis.getParent());
item_Ellipsis_Children = item_Ellipsis.getChildren(null, null);
assertEquals(3, item_Ellipsis_Children.length);
item_Ellipsis = (IMergeViewerItem.Container)item_Ellipsis_Children[0];
assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
item_R3_Children = item_Ellipsis.getChildren(null, null);
assertEquals(1, item_R3_Children.length);
item_C = (IMergeViewerItem.Container)item_R3_Children[0];
assertEquals("C", itemDelegator.getText(item_C.getSideValue(MergeViewerSide.RIGHT)));
item_Ellipsis = (IMergeViewerItem.Container)item_Ellipsis_Children[1];
assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
item_R5_Children = item_Ellipsis.getChildren(null, null);
assertEquals(1, item_R5_Children.length);
item_G = (IMergeViewerItem.Container)item_R5_Children[0];
assertEquals("G", itemDelegator.getText(item_G.getSideValue(MergeViewerSide.RIGHT)));
item_Ellipsis = (IMergeViewerItem.Container)item_Ellipsis_Children[2];
assertEquals(ELLIPSIS, itemDelegator.getText(item_Ellipsis.getSideValue(MergeViewerSide.RIGHT)));
item_R6_Children = item_Ellipsis.getChildren(null, null);
assertEquals(1, item_R6_Children.length);
item_H = (IMergeViewerItem.Container)item_R6_Children[0];
assertEquals("H", itemDelegator.getText(item_H.getSideValue(MergeViewerSide.RIGHT)));
}
}