Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Pazderski2019-08-23 09:50:59 +0000
committerPaul Pazderski2019-09-10 18:24:58 +0000
commit1bc0d896ac35ac1c02c6b2326fac003a93b22469 (patch)
tree7c840a6b15f2176f5c6865dad86f3a7ea91829ce /org.eclipse.text.tests
parent28a3067ef86ee5e03a0401f19adf07a318985bd9 (diff)
downloadeclipse.platform.text-1bc0d896ac35ac1c02c6b2326fac003a93b22469.tar.gz
eclipse.platform.text-1bc0d896ac35ac1c02c6b2326fac003a93b22469.tar.xz
eclipse.platform.text-1bc0d896ac35ac1c02c6b2326fac003a93b22469.zip
Bug 550473 - Add faster nextDelimiter utility method
TextUtilities.indexOf is quite often used to search for the default delimiters. While the new MultiStringMatcher is already fast this method can still be up to ten times faster for this special case. Change-Id: Iebd4fcc0efb0d9d1e3031954c8e640bb3a789fa1 Signed-off-by: Paul Pazderski <paul-eclipse@ppazderski.de>
Diffstat (limited to 'org.eclipse.text.tests')
-rw-r--r--org.eclipse.text.tests/src/org/eclipse/text/tests/TextUtilitiesTest.java45
1 files changed, 45 insertions, 0 deletions
diff --git a/org.eclipse.text.tests/src/org/eclipse/text/tests/TextUtilitiesTest.java b/org.eclipse.text.tests/src/org/eclipse/text/tests/TextUtilitiesTest.java
index 76bae96a439..cdec2582a2e 100644
--- a/org.eclipse.text.tests/src/org/eclipse/text/tests/TextUtilitiesTest.java
+++ b/org.eclipse.text.tests/src/org/eclipse/text/tests/TextUtilitiesTest.java
@@ -20,6 +20,7 @@ import static org.junit.Assert.fail;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import org.junit.Assert;
import org.junit.Test;
@@ -324,4 +325,48 @@ public class TextUtilitiesTest {
// expected
}
}
+
+ @Test
+ public void testNextDelimiter() {
+ Map.Entry<Integer, String> result;
+ result = TextUtilities.nextDelimiter("abc\ndef", 0);
+ assertEquals(3, result.getKey().intValue());
+ assertEquals("\n", result.getValue());
+
+ result = TextUtilities.nextDelimiter("abc\ndef", 5);
+ assertEquals(-1, result.getKey().intValue());
+ assertEquals(null, result.getValue());
+
+ result = TextUtilities.nextDelimiter("abc\rdef\n123", 0);
+ assertEquals(3, result.getKey().intValue());
+ assertEquals("\r", result.getValue());
+
+ result = TextUtilities.nextDelimiter("abc+\r\ndef\n123", 0);
+ assertEquals(4, result.getKey().intValue());
+ assertEquals("\r\n", result.getValue());
+
+ result = TextUtilities.nextDelimiter("abc~>\r\r\ndef\n123", 0);
+ assertEquals(5, result.getKey().intValue());
+ assertEquals("\r", result.getValue());
+
+ result = TextUtilities.nextDelimiter("\nabc~>\r\r\ndef\n123", 0);
+ assertEquals(0, result.getKey().intValue());
+ assertEquals("\n", result.getValue());
+
+ result = TextUtilities.nextDelimiter("abc~>123\r\n", 0);
+ assertEquals(8, result.getKey().intValue());
+ assertEquals("\r\n", result.getValue());
+
+ result = TextUtilities.nextDelimiter("abc~>\r\r\ndef\n123", 9);
+ assertEquals(11, result.getKey().intValue());
+ assertEquals("\n", result.getValue());
+
+ result = TextUtilities.nextDelimiter("", 0);
+ assertEquals(-1, result.getKey().intValue());
+ assertEquals(null, result.getValue());
+
+ result = TextUtilities.nextDelimiter("abc123", 0);
+ assertEquals(-1, result.getKey().intValue());
+ assertEquals(null, result.getValue());
+ }
}

Back to the top