Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDeepak Azad2012-04-27 08:17:27 +0000
committerDani Megert2012-04-27 08:17:27 +0000
commit1b02d37376c3050930a5c0e7cb577494e267828d (patch)
tree116b3cc57e2421b3dd00362cc508bbd312982787 /org.eclipse.jface.text.tests
parent9a2cb80b2c308fec5e2faa29c9e33e9e37745f07 (diff)
downloadeclipse.platform.text-1b02d37376c3050930a5c0e7cb577494e267828d.tar.gz
eclipse.platform.text-1b02d37376c3050930a5c0e7cb577494e267828d.tar.xz
eclipse.platform.text-1b02d37376c3050930a5c0e7cb577494e267828d.zip
Fixed bug 372516: [syntax highlighting] bracket highlighting should alsov20120427-0817
work if caret is after the last bracket
Diffstat (limited to 'org.eclipse.jface.text.tests')
-rw-r--r--org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/AbstractPairMatcherTest.java67
-rw-r--r--org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/DefaultPairMatcherTest.java4
-rw-r--r--org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/DefaultPairMatcherTest2.java25
3 files changed, 61 insertions, 35 deletions
diff --git a/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/AbstractPairMatcherTest.java b/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/AbstractPairMatcherTest.java
index 00166bc67cc..e3f84cd6ffa 100644
--- a/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/AbstractPairMatcherTest.java
+++ b/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/AbstractPairMatcherTest.java
@@ -38,10 +38,10 @@ import org.eclipse.jface.text.source.ICharacterPairMatcherExtension;
*/
public abstract class AbstractPairMatcherTest extends TestCase {
- private final boolean fCaretInsideMatchedPair;
+ private final boolean fCaretEitherSideOfBracket;
- public AbstractPairMatcherTest(boolean caretInsideMatchedPair) {
- fCaretInsideMatchedPair= caretInsideMatchedPair;
+ public AbstractPairMatcherTest(boolean caretEitherSideOfBracket) {
+ fCaretEitherSideOfBracket= caretEitherSideOfBracket;
}
/**
@@ -51,7 +51,7 @@ public abstract class AbstractPairMatcherTest extends TestCase {
* @return the character pair matcher
*/
protected ICharacterPairMatcher createMatcher(final String chars) {
- return new DefaultCharacterPairMatcher(chars.toCharArray(), getDocumentPartitioning(), fCaretInsideMatchedPair);
+ return new DefaultCharacterPairMatcher(chars.toCharArray(), getDocumentPartitioning(), fCaretEitherSideOfBracket);
}
/**
@@ -156,7 +156,6 @@ public abstract class AbstractPairMatcherTest extends TestCase {
public void testIncompleteMatch() throws BadLocationException {
final ICharacterPairMatcher matcher= createMatcher("()[]{}");
performMatch(matcher, "(% ");
- performMatch(matcher, "%( )");
performMatch(matcher, "( % )");
performMatch(matcher, "%");
matcher.dispose();
@@ -325,15 +324,11 @@ public abstract class AbstractPairMatcherTest extends TestCase {
assertNull(region);
} else {
assertNotNull(region);
- final boolean isForward= test.isEnclosingTestCase() ? false : test.fPos1 > test.fMatch2;
- assertEquals(isForward, matcher.getAnchor() == ICharacterPairMatcher.RIGHT);
-
- final int offset= (isForward || test.isEnclosingTestCase()) ? test.getOffset() : test.getOffset() - 1;
- final int length= ((isForward && (!fCaretInsideMatchedPair || test.isSelectionTestCase())) || test.isEnclosingTestCase())
- ? test.getLength()
- : test.getLength() + 1;
- assertEquals(length, region.getLength());
- assertEquals(offset, region.getOffset());
+ final boolean isBackward= test.isEnclosingTestCase() ? false : test.fPos1 > test.fMatch2;
+ assertEquals(isBackward, matcher.getAnchor() == ICharacterPairMatcher.RIGHT);
+
+ assertEquals(test.getLength(), region.getLength());
+ assertEquals(test.getOffset(), region.getOffset());
}
}
@@ -360,16 +355,6 @@ public abstract class AbstractPairMatcherTest extends TestCase {
int match2= str.lastIndexOf("#");
boolean enclosingTest= match1 != match2;
-
- if (!selectionTest && fCaretInsideMatchedPair) {
- if (pos1 - 1 >= 0) {
- char ch= str.charAt(pos1 - 1);
- if ("()[]{}<>".indexOf(ch) % 2 == 1) {
- pos1-= 1;
- }
- }
- }
-
// account for the length of marker characters
if (selectionTest) {
if (!enclosingTest) {
@@ -402,13 +387,35 @@ public abstract class AbstractPairMatcherTest extends TestCase {
final String stripped= str.replaceAll("%", "").replaceAll("#", "");
- if (enclosingTest)
+ if (enclosingTest) {
return new TestCase(stripped, pos1, pos2, match1, match2);
- else {
- if (selectionTest)
- return new TestCase(stripped, pos1, pos2, pos2, match1);
- else
- return new TestCase(stripped, pos1, pos2, pos1, match1);
+ } else {
+ if (selectionTest) {
+ return new TestCase(stripped, pos1, pos2, pos1 < match1 ? pos1 : pos2, match1);
+ } else {
+ if (match1 == -1)
+ return new TestCase(stripped, pos1, pos2, pos1, match1);
+
+ match2= match1;
+ match1= pos1;
+ if (!selectionTest && !enclosingTest) {
+ String chars= "()[]{}<>";
+ if (fCaretEitherSideOfBracket && pos1 < stripped.length()) {
+ char ch= stripped.charAt(pos1);
+ char prevCh= pos1 - 1 >= 0 ? stripped.charAt(pos1 - 1) : Character.MIN_VALUE;
+ if (chars.indexOf(ch) % 2 == 1 && chars.indexOf(prevCh) % 2 != 0) {
+ match1++;
+ }
+ }
+ if (pos1 - 1 >= 0) {
+ char ch= stripped.charAt(pos1 - 1);
+ if (chars.indexOf(ch) % 2 == 0) {
+ match1--;
+ }
+ }
+ }
+ return new TestCase(stripped, pos1, pos2, match1, match2);
+ }
}
}
diff --git a/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/DefaultPairMatcherTest.java b/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/DefaultPairMatcherTest.java
index 70f4f4cac5f..bac928e01b1 100644
--- a/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/DefaultPairMatcherTest.java
+++ b/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/DefaultPairMatcherTest.java
@@ -34,8 +34,7 @@ public class DefaultPairMatcherTest extends AbstractPairMatcherTest {
/** Tests that the test case reader works */
- public void testTestCaseReader() {
- super.testTestCaseReader();
+ public void testTestCaseReader1() {
performReaderTest("#( )%", 3, 0, "( )");
performReaderTest("( )%", 3, -1, "( )");
}
@@ -61,6 +60,7 @@ public class DefaultPairMatcherTest extends AbstractPairMatcherTest {
public void testIncompleteMatch1() throws BadLocationException {
final ICharacterPairMatcher matcher= createMatcher("()[]{}");
performMatch(matcher, "( %)");
+ performMatch(matcher, "%( )");
matcher.dispose();
}
diff --git a/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/DefaultPairMatcherTest2.java b/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/DefaultPairMatcherTest2.java
index bfc71b57708..56f3d985ce4 100644
--- a/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/DefaultPairMatcherTest2.java
+++ b/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/DefaultPairMatcherTest2.java
@@ -13,6 +13,9 @@ package org.eclipse.jface.text.tests;
import junit.framework.Test;
import junit.framework.TestSuite;
+import org.eclipse.jface.text.BadLocationException;
+import org.eclipse.jface.text.source.ICharacterPairMatcher;
+
/**
* Tests for the default pair matcher.
@@ -31,8 +34,24 @@ public class DefaultPairMatcherTest2 extends AbstractPairMatcherTest {
}
/** Tests that the test case reader works */
- public void testTestCaseReader() {
- performReaderTest("#( )%", 2, 0, "( )");
- performReaderTest("( )%", 2, -1, "( )");
+ public void testTestCaseReader1() {
+ performReaderTest("#( )%", 3, 0, "( )");
+ performReaderTest("( )%", 3, -1, "( )");
+ }
+
+ /**
+ * Very simple checks.
+ *
+ * @throws BadLocationException
+ */
+ public void testSimpleMatchSameMatcher1() throws BadLocationException {
+ final ICharacterPairMatcher matcher= createMatcher("()[]{}");
+ performMatch(matcher, "#( %)");
+ performMatch(matcher, "#[ %]");
+ performMatch(matcher, "#{ %}");
+ performMatch(matcher, "%( )#");
+ performMatch(matcher, "%[ ]#");
+ performMatch(matcher, "%{ }#");
+ matcher.dispose();
}
} \ No newline at end of file

Back to the top