diff options
author | Dani Megert | 2007-03-01 07:29:29 +0000 |
---|---|---|
committer | Dani Megert | 2007-03-01 07:29:29 +0000 |
commit | 2f05d9cd25a116b95800474d0ed3f7423b90fb4a (patch) | |
tree | 8076e28f8b333ac7cb82e91554e812055540162c /org.eclipse.jface.text.tests | |
parent | 0e088a062c67b34b423dfd3bcb9d3cc9e449c30f (diff) | |
download | eclipse.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.java | 93 |
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); + + } + + } |