Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDani Megert2007-03-01 07:29:29 +0000
committerDani Megert2007-03-01 07:29:29 +0000
commit2f05d9cd25a116b95800474d0ed3f7423b90fb4a (patch)
tree8076e28f8b333ac7cb82e91554e812055540162c /org.eclipse.jface.text.tests
parent0e088a062c67b34b423dfd3bcb9d3cc9e449c30f (diff)
downloadeclipse.platform.text-2f05d9cd25a116b95800474d0ed3f7423b90fb4a.tar.gz
eclipse.platform.text-2f05d9cd25a116b95800474d0ed3f7423b90fb4a.tar.xz
eclipse.platform.text-2f05d9cd25a116b95800474d0ed3f7423b90fb4a.zip
Fixed bug 175712: [misc] PatternRule doesn't unread chars correctly if rule fails (template is not matched) but start sequence is recognized
Diffstat (limited to 'org.eclipse.jface.text.tests')
-rw-r--r--org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/rules/WordRuleTest.java93
1 files changed, 82 insertions, 11 deletions
diff --git a/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/rules/WordRuleTest.java b/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/rules/WordRuleTest.java
index c305f04c258..9b950921846 100644
--- a/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/rules/WordRuleTest.java
+++ b/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/rules/WordRuleTest.java
@@ -12,10 +12,15 @@ package org.eclipse.jface.text.tests.rules;
import junit.framework.TestCase;
+import org.eclipse.swt.SWT;
+
import org.eclipse.jface.text.Document;
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.TextAttribute;
import org.eclipse.jface.text.rules.IRule;
import org.eclipse.jface.text.rules.IToken;
import org.eclipse.jface.text.rules.IWordDetector;
+import org.eclipse.jface.text.rules.PatternRule;
import org.eclipse.jface.text.rules.RuleBasedScanner;
import org.eclipse.jface.text.rules.Token;
import org.eclipse.jface.text.rules.WordRule;
@@ -24,7 +29,19 @@ import org.eclipse.jface.text.rules.WordRule;
* @since 3.3
*/
public class WordRuleTest extends TestCase {
+
+
+ private static class SimpleWordDetector implements IWordDetector {
+ public boolean isWordStart(char c) {
+ return !Character.isWhitespace(c);
+ }
+
+ public boolean isWordPart(char c) {
+ return !Character.isWhitespace(c);
+ }
+ }
+
/*
* https://bugs.eclipse.org/bugs/show_bug.cgi?id=163116
*/
@@ -60,17 +77,7 @@ public class WordRuleTest extends TestCase {
* https://bugs.eclipse.org/bugs/show_bug.cgi?id=144355
*/
public void testBug144355() throws Exception {
- IWordDetector detector= new IWordDetector() {
-
- public boolean isWordPart(char c) {
- return true;
- }
-
- public boolean isWordStart(char c) {
- return true;
- }
-
- };
+ IWordDetector detector= new SimpleWordDetector();
String defaultTokenString= "defaultToken";
Token defaultToken= new Token(defaultTokenString);
@@ -127,4 +134,68 @@ public class WordRuleTest extends TestCase {
assertTrue(scanner.nextToken().getData().equals(defaultTokenString));
}
+ // https://bugs.eclipse.org/bugs/show_bug.cgi?id=175712
+ public void testBug175712_1() throws Exception {
+ IRule[] rules= new IRule[2];
+
+ IToken stepToken= new Token(new TextAttribute(null, null, SWT.BOLD));
+ PatternRule stepRule= new PatternRule("(((", ")", stepToken, (char) 0,false);
+ stepRule.setColumnConstraint(-1);
+ rules[1]= stepRule;
+
+ IToken titleToken= new Token(new TextAttribute(null, null, SWT.BOLD));
+ WordRule wordRule= new WordRule(new SimpleWordDetector());
+ wordRule.addWord("((", titleToken);
+ rules[0]= wordRule;
+
+ IDocument document= new Document("((( \n((\n- Cheese\n- Wine");
+ RuleBasedScanner scanner= new RuleBasedScanner();
+ scanner.setRules(rules);
+ scanner.setRange(document, 0, document.getLength());
+
+ IToken defaultToken= new Token(this);
+ scanner.setDefaultReturnToken(defaultToken);
+
+ IToken token= scanner.nextToken();
+ assertSame(defaultToken, token);
+
+ token= scanner.nextToken();
+ assertSame(defaultToken, token);
+
+ token= scanner.nextToken();
+ assertSame(defaultToken, token);
+
+ token= scanner.nextToken();
+ assertSame(titleToken, token);
+
+ }
+
+ // https://bugs.eclipse.org/bugs/show_bug.cgi?id=175712
+ public void testBug175712_2() throws Exception {
+ IRule[] rules= new IRule[2];
+
+ IToken stepToken= new Token(new TextAttribute(null, null, SWT.BOLD));
+ PatternRule stepRule= new PatternRule("(((", ")", stepToken, (char) 0,false);
+ stepRule.setColumnConstraint(-1);
+ rules[1]= stepRule;
+
+ IToken titleToken= new Token(new TextAttribute(null, null, SWT.BOLD));
+ WordRule wordRule= new WordRule(new SimpleWordDetector());
+ wordRule.addWord("((", titleToken);
+ rules[0]= wordRule;
+
+ IDocument document= new Document("((\n((\n- Cheese\n- Wine");
+ RuleBasedScanner scanner= new RuleBasedScanner();
+ scanner.setRules(rules);
+ scanner.setRange(document, 0, document.getLength());
+
+ IToken defaultToken= new Token(this);
+ scanner.setDefaultReturnToken(defaultToken);
+
+ IToken token= scanner.nextToken();
+ assertSame(titleToken, token);
+
+ }
+
+
}

Back to the top