diff options
Diffstat (limited to 'tests/org.eclipse.compare.tests/src/org/eclipse/compare/tests/TextMergeViewerTest.java')
-rw-r--r-- | tests/org.eclipse.compare.tests/src/org/eclipse/compare/tests/TextMergeViewerTest.java | 118 |
1 files changed, 112 insertions, 6 deletions
diff --git a/tests/org.eclipse.compare.tests/src/org/eclipse/compare/tests/TextMergeViewerTest.java b/tests/org.eclipse.compare.tests/src/org/eclipse/compare/tests/TextMergeViewerTest.java index 608e44743..171d4ac68 100644 --- a/tests/org.eclipse.compare.tests/src/org/eclipse/compare/tests/TextMergeViewerTest.java +++ b/tests/org.eclipse.compare.tests/src/org/eclipse/compare/tests/TextMergeViewerTest.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2006 IBM Corporation and others. + * Copyright (c) 2006, 2013 IBM Corporation 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 @@ -10,21 +10,36 @@ *******************************************************************************/ package org.eclipse.compare.tests; -import java.io.*; +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.HashMap; +import java.util.Map; import junit.framework.TestCase; -import org.eclipse.compare.*; +import org.eclipse.compare.CompareConfiguration; +import org.eclipse.compare.ICompareFilter; +import org.eclipse.compare.IEditableContent; +import org.eclipse.compare.IStreamContentAccessor; +import org.eclipse.compare.ITypedElement; import org.eclipse.compare.contentmergeviewer.TextMergeViewer; -import org.eclipse.compare.internal.*; +import org.eclipse.compare.internal.ChangeCompareFilterPropertyAction; +import org.eclipse.compare.internal.IMergeViewerTestAdapter; +import org.eclipse.compare.internal.MergeViewerContentProvider; +import org.eclipse.compare.internal.Utilities; import org.eclipse.compare.structuremergeviewer.DiffNode; import org.eclipse.compare.structuremergeviewer.Differencer; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.text.IDocument; +import org.eclipse.jface.text.IRegion; +import org.eclipse.jface.text.Region; import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.widgets.*; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.PlatformUI; public class TextMergeViewerTest extends TestCase { @@ -157,6 +172,11 @@ public class TextMergeViewerTest extends TestCase { public TestMergeViewer(Composite parent) { super(parent, new CompareConfiguration()); } + + public TestMergeViewer(Composite parent, CompareConfiguration cc) { + super(parent, cc); + } + public void copy(boolean leftToRight) { super.copy(leftToRight); } @@ -185,11 +205,16 @@ public class TextMergeViewerTest extends TestCase { } private void runInDialog(Object input, Runnable runnable) throws Exception { + runInDialog(input, runnable, new CompareConfiguration()); + } + + private void runInDialog(Object input, Runnable runnable, + final CompareConfiguration cc) throws Exception { Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(); Dialog dialog = new Dialog(shell) { protected Control createDialogArea(Composite parent) { Composite composite = (Composite) super.createDialogArea(parent); - viewer = new TestMergeViewer(composite); + viewer = new TestMergeViewer(composite, cc); return composite; } }; @@ -354,5 +379,86 @@ public class TextMergeViewerTest extends TestCase { assertEquals(newText, ((EditableTestElement)testNode.getRight()).getContentsAsString()); } + public void testCompareFilter() throws Exception { + DiffNode parentNode = new DiffNode(new ParentTestElement(), + new ParentTestElement()); + + final String leftString = "HI there"; + final String rightString = "hi there"; + final EditableTestElement leftElement = new EditableTestElement( + leftString.getBytes()); + final EditableTestElement rightElement = new EditableTestElement( + rightString.getBytes()); + DiffNode testNode = new DiffNode(parentNode, Differencer.CHANGE, null, + leftElement, rightElement); + final CompareConfiguration cc = new CompareConfiguration(); + runInDialog(testNode, new Runnable() { + public void run() { + Object adapter = viewer + .getAdapter(IMergeViewerTestAdapter.class); + if (adapter instanceof IMergeViewerTestAdapter) { + IMergeViewerTestAdapter ta = (IMergeViewerTestAdapter) adapter; + assertEquals(ta.getChangesCount(), 1); + + Map filters = new HashMap(); + filters.put("filter.id", new ICompareFilter() { + public void setInput(Object input, Object ancestor, + Object left, Object right) { + assertTrue(leftElement == left); + assertTrue(rightElement == right); + } + + public IRegion[] getFilteredRegions( + HashMap lineComparison) { + Object thisLine = lineComparison.get(THIS_LINE); + Object thisContributor = lineComparison + .get(THIS_CONTRIBUTOR); + Object otherLine = lineComparison.get(OTHER_LINE); + Object otherContributor = lineComparison + .get(OTHER_CONTRIBUTOR); + if (thisContributor.equals(new Character('L'))) { + assertEquals(thisLine, leftString); + assertEquals(otherContributor, new Character( + 'R')); + assertEquals(otherLine, rightString); + } else { + assertEquals(thisContributor, + new Character('R')); + assertEquals(thisLine, rightString); + assertEquals(otherContributor, new Character( + 'L')); + assertEquals(otherLine, leftString); + } + + if (thisContributor.equals(new Character('L'))) + return new IRegion[] { new Region(0, 1), + new Region(1, 1) }; + + return new IRegion[] { new Region(0, 2) }; + } + + public boolean isEnabledInitially() { + return false; + } + + public boolean canCacheFilteredRegions() { + return true; + } + + }); + + cc.setProperty( + ChangeCompareFilterPropertyAction.COMPARE_FILTERS, + filters); + assertEquals(ta.getChangesCount(), 0); + + cc.setProperty( + ChangeCompareFilterPropertyAction.COMPARE_FILTERS, + null); + assertEquals(ta.getChangesCount(), 1); + } + } + }, cc); + } } |