Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'tests/org.eclipse.compare.tests/src/org/eclipse/compare/tests/DocLineComparatorTest.java')
-rw-r--r--tests/org.eclipse.compare.tests/src/org/eclipse/compare/tests/DocLineComparatorTest.java212
1 files changed, 211 insertions, 1 deletions
diff --git a/tests/org.eclipse.compare.tests/src/org/eclipse/compare/tests/DocLineComparatorTest.java b/tests/org.eclipse.compare.tests/src/org/eclipse/compare/tests/DocLineComparatorTest.java
index cf963c76b..5c8b7c6f7 100644
--- a/tests/org.eclipse.compare.tests/src/org/eclipse/compare/tests/DocLineComparatorTest.java
+++ b/tests/org.eclipse.compare.tests/src/org/eclipse/compare/tests/DocLineComparatorTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2000, 2009 IBM Corporation and others.
+ * Copyright (c) 2000, 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,13 +10,17 @@
*******************************************************************************/
package org.eclipse.compare.tests;
+import java.util.HashMap;
+
import junit.framework.Assert;
import junit.framework.TestCase;
+import org.eclipse.compare.ICompareFilter;
import org.eclipse.compare.internal.DocLineComparator;
import org.eclipse.compare.rangedifferencer.IRangeComparator;
import org.eclipse.jface.text.Document;
import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.IRegion;
import org.eclipse.jface.text.Region;
public class DocLineComparatorTest extends TestCase {
@@ -59,6 +63,212 @@ public class DocLineComparatorTest extends TestCase {
Assert.assertTrue(comp1.rangesEqual(0, comp2, 0));
}
+ public void testOneCompareFilter() {
+ IDocument doc1 = new Document();
+ doc1.set("if (s.strip))"); //$NON-NLS-1$
+
+ IDocument doc2 = new Document();
+ doc2.set("IF (S.stRIp))"); //$NON-NLS-1$
+
+ IDocument doc3 = new Document();
+ doc3.set("IF (S.stRIp)) "); //$NON-NLS-1$
+
+ ICompareFilter filter = new ICompareFilter() {
+
+ public void setInput(Object input, Object ancestor, Object left,
+ Object right) {
+ // EMPTY
+ }
+
+ public IRegion[] getFilteredRegions(HashMap lineComparison) {
+ return new IRegion[] { new Region(0, 2), new Region(4, 1),
+ new Region(8, 2) };
+ }
+
+ public boolean isEnabledInitially() {
+ return false;
+ }
+
+ public boolean canCacheFilteredRegions() {
+ return false;
+ }
+ };
+
+ IRangeComparator comp1 = new DocLineComparator(doc1, null, false,
+ new ICompareFilter[] { filter }, 'L');
+ IRangeComparator comp2 = new DocLineComparator(doc2, null, false,
+ new ICompareFilter[] { filter }, 'R');
+ Assert.assertTrue(comp1.rangesEqual(0, comp2, 0));
+
+ IRangeComparator comp3 = new DocLineComparator(doc1, null, true,
+ new ICompareFilter[] { filter }, 'L');
+ IRangeComparator comp4 = new DocLineComparator(doc3, null, true,
+ new ICompareFilter[] { filter }, 'R');
+ Assert.assertTrue(comp3.rangesEqual(0, comp4, 0));
+
+ IRangeComparator comp5 = new DocLineComparator(doc1, null, false,
+ new ICompareFilter[] { filter }, 'L');
+ IRangeComparator comp6 = new DocLineComparator(doc3, null, false,
+ new ICompareFilter[] { filter }, 'R');
+ Assert.assertFalse(comp5.rangesEqual(0, comp6, 0));
+ }
+
+ public void testMultipleCompareFilters() {
+ IDocument doc1 = new Document();
+ doc1.set("if (s.strip))"); //$NON-NLS-1$
+
+ IDocument doc2 = new Document();
+ doc2.set("IF (S.stRIp))"); //$NON-NLS-1$
+
+ ICompareFilter filter1 = new ICompareFilter() {
+
+ public void setInput(Object input, Object ancestor, Object left,
+ Object right) {
+ // EMPTY
+ }
+
+ public IRegion[] getFilteredRegions(HashMap lineComparison) {
+ return new IRegion[] { new Region(0, 2) };
+ }
+
+ public boolean isEnabledInitially() {
+ return false;
+ }
+
+ public boolean canCacheFilteredRegions() {
+ return false;
+ }
+ };
+
+ ICompareFilter filter2 = new ICompareFilter() {
+
+ public void setInput(Object input, Object ancestor, Object left,
+ Object right) {
+ // EMPTY
+ }
+
+ public IRegion[] getFilteredRegions(HashMap lineComparison) {
+ return new IRegion[] { new Region(4, 1) };
+ }
+
+ public boolean isEnabledInitially() {
+ return false;
+ }
+
+ public boolean canCacheFilteredRegions() {
+ return false;
+ }
+ };
+
+ ICompareFilter filter3 = new ICompareFilter() {
+
+ public void setInput(Object input, Object ancestor, Object left,
+ Object right) {
+ // EMPTY
+ }
+
+ public IRegion[] getFilteredRegions(HashMap lineComparison) {
+ return new IRegion[] { new Region(8, 2) };
+ }
+
+ public boolean isEnabledInitially() {
+ return false;
+ }
+
+ public boolean canCacheFilteredRegions() {
+ return false;
+ }
+ };
+
+ IRangeComparator comp1 = new DocLineComparator(doc1, null, false,
+ new ICompareFilter[] { filter1, filter2, filter3 }, 'L');
+ IRangeComparator comp2 = new DocLineComparator(doc2, null, false,
+ new ICompareFilter[] { filter1, filter2, filter3 }, 'R');
+ Assert.assertTrue(comp1.rangesEqual(0, comp2, 0));
+
+ IRangeComparator comp3 = new DocLineComparator(doc1, null, false,
+ new ICompareFilter[] { filter2, filter3 }, 'L');
+ IRangeComparator comp4 = new DocLineComparator(doc2, null, false,
+ new ICompareFilter[] { filter2, filter3 }, 'R');
+ Assert.assertFalse(comp3.rangesEqual(0, comp4, 0));
+ }
+
+ public void testWhitespace() {
+ IDocument[] docs = new IDocument[6];
+ docs[0] = new Document();
+ docs[1] = new Document();
+ docs[2] = new Document();
+ docs[3] = new Document();
+ docs[4] = new Document();
+ docs[5] = new Document();
+
+ docs[0].set("if (s.strip))\r\n");//$NON-NLS-1$
+ docs[1].set("if (s.strip))\n"); //$NON-NLS-1$
+ docs[2].set("if (s .strip))\n"); //$NON-NLS-1$
+ docs[3].set("if (s.str ip))\r"); //$NON-NLS-1$
+ docs[4].set("if (s.strip))"); //$NON-NLS-1$
+ docs[5].set("if (s.stri p))"); //$NON-NLS-1$
+
+ ICompareFilter[][] filters = new ICompareFilter[3][];
+ filters[0] = null;
+ filters[1] = new ICompareFilter[]{
+ new ICompareFilter() {
+
+ public void setInput(Object input, Object ancestor, Object left,
+ Object right) {
+ // EMPTY
+ }
+
+ public IRegion[] getFilteredRegions(HashMap lineComparison) {
+ return new IRegion[] { new Region(0, 2) };
+ }
+
+ public boolean isEnabledInitially() {
+ return false;
+ }
+
+ public boolean canCacheFilteredRegions() {
+ return true; // cache-able
+ }
+ }
+ };
+
+ filters[2] = new ICompareFilter[]{
+ new ICompareFilter() {
+
+ public void setInput(Object input, Object ancestor, Object left,
+ Object right) {
+ // EMPTY
+ }
+
+ public IRegion[] getFilteredRegions(HashMap lineComparison) {
+ return new IRegion[] { new Region(0, 2) };
+ }
+
+ public boolean isEnabledInitially() {
+ return false;
+ }
+
+ public boolean canCacheFilteredRegions() {
+ return false; // not cache-able
+ }
+ }
+ };
+
+ IRangeComparator l, r;
+ for (int i=0;i<docs.length;i++)
+ for (int j=i+1;j<docs.length;j++)
+ for (int k=0;k<filters.length;k++) {
+ l = new DocLineComparator(docs[i], null, false, filters[k], 'L');
+ r = new DocLineComparator(docs[j], null, false, filters[k], 'R');
+ Assert.assertFalse(l.rangesEqual(0, r, 0));
+
+ l = new DocLineComparator(docs[i], null, true, filters[k], 'L');
+ r = new DocLineComparator(docs[j], null, true, filters[k], 'R');
+ Assert.assertTrue(l.rangesEqual(0, r, 0));
+ }
+ }
+
public void testEmpty() {
IDocument doc1= new Document();
doc1.set(""); //$NON-NLS-1$

Back to the top