diff options
author | Paul Pazderski | 2019-08-23 09:50:59 +0000 |
---|---|---|
committer | Paul Pazderski | 2019-09-10 18:24:58 +0000 |
commit | 1bc0d896ac35ac1c02c6b2326fac003a93b22469 (patch) | |
tree | 7c840a6b15f2176f5c6865dad86f3a7ea91829ce /org.eclipse.text.tests | |
parent | 28a3067ef86ee5e03a0401f19adf07a318985bd9 (diff) | |
download | eclipse.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.java | 45 |
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()); + } } |