Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDani Megert2006-11-02 08:48:21 +0000
committerDani Megert2006-11-02 08:48:21 +0000
commit89f6da50061ea6104d57e9ae9fa49552a2d5d774 (patch)
treeeb1b4bc19e55aa7c9a948908b845683e308def98 /org.eclipse.jface.text.tests/src/org
parent60a7bbcebccaadfd11fb66b90e742c5a821f460e (diff)
downloadeclipse.platform.text-89f6da50061ea6104d57e9ae9fa49552a2d5d774.tar.gz
eclipse.platform.text-89f6da50061ea6104d57e9ae9fa49552a2d5d774.tar.xz
eclipse.platform.text-89f6da50061ea6104d57e9ae9fa49552a2d5d774.zip
Fixed bug 163116: [implementation] Potential for infinite loop in WordRule
Diffstat (limited to 'org.eclipse.jface.text.tests/src/org')
-rw-r--r--org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/rules/RulesTestSuite.java9
-rw-r--r--org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/rules/WordRuleTest.java58
2 files changed, 63 insertions, 4 deletions
diff --git a/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/rules/RulesTestSuite.java b/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/rules/RulesTestSuite.java
index 959baee12e6..9ea7558c544 100644
--- a/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/rules/RulesTestSuite.java
+++ b/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/rules/RulesTestSuite.java
@@ -14,7 +14,6 @@ package org.eclipse.jface.text.tests.rules;
import junit.framework.Test;
import junit.framework.TestSuite;
-
/**
*
* @since 3.0
@@ -22,12 +21,14 @@ import junit.framework.TestSuite;
public class RulesTestSuite {
public static Test suite() {
- TestSuite suite= new TestSuite("Test Suite org.eclipse.jface.text.tests.rules");
- //$JUnit-BEGIN$
+ TestSuite suite= new TestSuite(
+ "Test Suite org.eclipse.jface.text.tests.rules");
+ // $JUnit-BEGIN$
suite.addTestSuite(FastPartitionerTest.class);
suite.addTestSuite(DefaultPartitionerTest.class);
suite.addTestSuite(DefaultPartitionerZeroLengthTest.class);
- //$JUnit-END$
+ suite.addTestSuite(WordRuleTest.class);
+ // $JUnit-END$
return suite;
}
}
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
new file mode 100644
index 00000000000..94fcbec72a9
--- /dev/null
+++ b/org.eclipse.jface.text.tests/src/org/eclipse/jface/text/tests/rules/WordRuleTest.java
@@ -0,0 +1,58 @@
+/*******************************************************************************
+ * Copyright (c) 2005, 2006 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
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.jface.text.tests.rules;
+
+import junit.framework.TestCase;
+
+import org.eclipse.jface.text.Document;
+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.RuleBasedScanner;
+import org.eclipse.jface.text.rules.Token;
+import org.eclipse.jface.text.rules.WordRule;
+
+/**
+ * @since 3.3
+ */
+public class WordRuleTest extends TestCase {
+
+ /*
+ * https://bugs.eclipse.org/bugs/show_bug.cgi?id=163116
+ */
+ public void testBug163116() throws Exception {
+ IWordDetector detector= new IWordDetector() {
+
+ public boolean isWordPart(char c) {
+ return true;
+ }
+
+ public boolean isWordStart(char c) {
+ return true;
+ }
+
+ };
+
+ WordRule rule= new WordRule(detector, new Token(this));
+
+ RuleBasedScanner scanner= new RuleBasedScanner();
+ scanner.setRules(new IRule[] { rule });
+ scanner.setRange(new Document(), 0, 0);
+
+ IToken token= null;
+ int i= 0;
+ while (token != Token.EOF && i++ < 1000)
+ token= scanner.nextToken();
+
+ assertTrue(i < 1000);
+
+ }
+}

Back to the top