diff options
author | Deepak Azad | 2012-04-27 08:17:27 +0000 |
---|---|---|
committer | Dani Megert | 2012-04-27 08:17:27 +0000 |
commit | 1b02d37376c3050930a5c0e7cb577494e267828d (patch) | |
tree | 116b3cc57e2421b3dd00362cc508bbd312982787 /org.eclipse.jface.text.tests | |
parent | 9a2cb80b2c308fec5e2faa29c9e33e9e37745f07 (diff) | |
download | eclipse.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')
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 |