This is an automated email from the ASF dual-hosted git repository. ggregory pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-text.git
The following commit(s) were added to refs/heads/master by this push: new 2b1f1a2 Add isMatch(CharSequence, int) 2b1f1a2 is described below commit 2b1f1a2c2de194d127deb1ce0ce1047f22316d55 Author: Gary Gregory <garydgreg...@gmail.com> AuthorDate: Fri Jun 26 15:53:27 2020 -0400 Add isMatch(CharSequence, int) Add isMatch(CharSequence, int, int, int) --- src/changes/changes.xml | 2 + .../text/matcher/AbstractStringMatcher.java | 102 +++++++++++++- .../apache/commons/text/matcher/StringMatcher.java | 81 +++++++++-- .../apache/commons/text/StringTokenizerTest.java | 6 + ...Test.java => StringMatcherOnCharArrayTest.java} | 2 +- ... => StringMatcherOnCharSequenceStringTest.java} | 152 ++++++++++----------- 6 files changed, 253 insertions(+), 92 deletions(-) diff --git a/src/changes/changes.xml b/src/changes/changes.xml index b11df51..434c7f6 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -53,6 +53,8 @@ The <action> type attribute can be add,update,fix,remove. <action type="add" dev="ggregory" due-to="Gary Gregory">Add StringMatcher.size().</action> <action type="add" dev="ggregory" due-to="Gary Gregory">Refactor TextStringBuilder.readFrom(Readable), extracting readFrom(CharBuffer) and readFrom(Reader).</action> <action issue="TEXT-177" type="update" dev="ggregory" due-to="Gary Gregory">Update from Apache Commons Lang 3.9 to 3.10.</action> + <action type="add" dev="ggregory">Add org.apache.commons.text.matcher.StringMatcher.isMatch(CharSequence, int).</action> + <action type="add" dev="ggregory">Add org.apache.commons.text.matcher.StringMatcher.isMatch(CharSequence, int, int, int).</action> <action type="update" dev="ggregory" due-to="Gary Gregory">[test] junit-jupiter 5.5.1 -> 5.5.2.</action> <action type="update" dev="ggregory" due-to="Gary Gregory">[test] org.assertj:assertj-core 3.13.2 -> 3.16.1.</action> <action type="update" dev="ggregory" due-to="Gary Gregory">[build] com.puppycrawl.tools:checkstyle 8.23 -> 8.27.</action> diff --git a/src/main/java/org/apache/commons/text/matcher/AbstractStringMatcher.java b/src/main/java/org/apache/commons/text/matcher/AbstractStringMatcher.java index 043a0d8..a9e62a4 100644 --- a/src/main/java/org/apache/commons/text/matcher/AbstractStringMatcher.java +++ b/src/main/java/org/apache/commons/text/matcher/AbstractStringMatcher.java @@ -63,6 +63,20 @@ abstract class AbstractStringMatcher implements StringMatcher { } /** + * Returns {@code 1} if there is a match, or {@code 0} if there is no match. + * + * @param buffer the text content to match against, do not change + * @param start the starting position for the match, valid for buffer + * @param bufferStart unused + * @param bufferEnd unused + * @return The number of matching characters, zero for no match + */ + @Override + public int isMatch(final CharSequence buffer, final int start, final int bufferStart, final int bufferEnd) { + return ch == buffer.charAt(start) ? 1 : 0; + } + + /** * Returns 1. * * @since 1.9 @@ -107,6 +121,20 @@ abstract class AbstractStringMatcher implements StringMatcher { } /** + * Returns {@code 1} if there is a match, or {@code 0} if there is no match. + * + * @param buffer the text content to match against, do not change + * @param start the starting position for the match, valid for buffer + * @param bufferStart unused + * @param bufferEnd unused + * @return The number of matching characters, zero for no match + */ + @Override + public int isMatch(final CharSequence buffer, final int start, final int bufferStart, final int bufferEnd) { + return Arrays.binarySearch(chars, buffer.charAt(start)) >= 0 ? 1 : 0; + } + + /** * Returns 1. * * @since 1.9 @@ -145,6 +173,20 @@ abstract class AbstractStringMatcher implements StringMatcher { } /** + * Always returns {@code 0}. + * + * @param buffer unused + * @param start unused + * @param bufferStart unused + * @param bufferEnd unused + * @return The number of matching characters, zero for no match + */ + @Override + public int isMatch(final CharSequence buffer, final int start, final int bufferStart, final int bufferEnd) { + return 0; + } + + /** * Returns 0. * * @since 1.9 @@ -198,9 +240,28 @@ abstract class AbstractStringMatcher implements StringMatcher { return len; } + /** + * Returns the number of matching characters, {@code 0} if there is no match. + * + * @param buffer the text content to match against, do not change + * @param start the starting position for the match, valid for buffer + * @param bufferStart unused + * @param bufferEnd the end index of the active buffer, valid for buffer + * @return The number of matching characters, zero for no match + */ @Override - public String toString() { - return super.toString() + ' ' + Arrays.toString(chars); + public int isMatch(final CharSequence buffer, final int start, final int bufferStart, final int bufferEnd) { + final int len = size(); + if (start + len > bufferEnd) { + return 0; + } + int j = start; + for (int i = 0; i < len; i++, j++) { + if (chars[i] != buffer.charAt(j)) { + return 0; + } + } + return len; } /** @@ -213,6 +274,11 @@ abstract class AbstractStringMatcher implements StringMatcher { return chars.length; } + @Override + public String toString() { + return super.toString() + ' ' + Arrays.toString(chars); + } + } /** @@ -247,6 +313,20 @@ abstract class AbstractStringMatcher implements StringMatcher { } /** + * Returns {@code 1} if there is a match, or {@code 0} if there is no match. + * + * @param buffer the text content to match against, do not change + * @param start the starting position for the match, valid for buffer + * @param bufferStart unused + * @param bufferEnd unused + * @return The number of matching characters, zero for no match + */ + @Override + public int isMatch(final CharSequence buffer, final int start, final int bufferStart, final int bufferEnd) { + return buffer.charAt(start) <= SPACE_INT ? 1 : 0; + } + + /** * Returns 1. * * @since 1.9 @@ -258,6 +338,24 @@ abstract class AbstractStringMatcher implements StringMatcher { } /** + * Green implementation of toCharArray. TODO Reuse Apache Commons Lang 3.11 when released. + * + * @param cs the {@code CharSequence} to be processed + * @return the resulting char array + */ + static char[] toCharArray(final CharSequence cs) { + if (cs instanceof String) { + return ((String) cs).toCharArray(); + } + final int sz = cs.length(); + final char[] array = new char[cs.length()]; + for (int i = 0; i < sz; i++) { + array[i] = cs.charAt(i); + } + return array; + } + + /** * Constructor. */ protected AbstractStringMatcher() { diff --git a/src/main/java/org/apache/commons/text/matcher/StringMatcher.java b/src/main/java/org/apache/commons/text/matcher/StringMatcher.java index 9d14ffd..5cecf0f 100644 --- a/src/main/java/org/apache/commons/text/matcher/StringMatcher.java +++ b/src/main/java/org/apache/commons/text/matcher/StringMatcher.java @@ -25,6 +25,56 @@ package org.apache.commons.text.matcher; public interface StringMatcher { /** + * Returns the number of matching characters, zero for no match. + * <p> + * This method is called to check for a match. The parameter {@code pos} represents the current position to be + * checked in the string {@code buffer} (a character array which must not be changed). The API guarantees that + * {@code pos} is a valid index for {@code buffer}. + * </p> + * <p> + * The matching code may check one character or many. It may check characters preceding {@code pos} as well as those + * after. + * </p> + * <p> + * It must return zero for no match, or a positive number if a match was found. The number indicates the number of + * characters that matched. + * </p> + * + * @param buffer the text content to match against, do not change + * @param pos the starting position for the match, valid for buffer + * @return The number of matching characters, zero for no match + * @since 1.9 + */ + default int isMatch(final char[] buffer, final int pos) { + return isMatch(buffer, pos, 0, buffer.length); + } + + /** + * Returns the number of matching characters, zero for no match. + * <p> + * This method is called to check for a match. The parameter {@code pos} represents the current position to be + * checked in the string {@code buffer} (a character array which must not be changed). The API guarantees that + * {@code pos} is a valid index for {@code buffer}. + * </p> + * <p> + * The matching code may check one character or many. It may check characters preceding {@code pos} as well as those + * after. + * </p> + * <p> + * It must return zero for no match, or a positive number if a match was found. The number indicates the number of + * characters that matched. + * </p> + * + * @param buffer the text content to match against, do not change + * @param pos the starting position for the match, valid for buffer + * @return The number of matching characters, zero for no match + * @since 1.9 + */ + default int isMatch(final CharSequence buffer, final int pos) { + return isMatch(buffer, pos, 0, buffer.length()); + } + + /** * Returns the number of matching characters, {@code 0} if there is no match. * <p> * This method is called to check for a match against a source {@code buffer}. The parameter {@code start} @@ -53,30 +103,35 @@ public interface StringMatcher { int isMatch(char[] buffer, int start, int bufferStart, int bufferEnd); /** - * Returns the number of matching characters, zero for no match. + * Returns the number of matching characters, {@code 0} if there is no match. * <p> - * This method is called to check for a match. The parameter {@code pos} represents the current position to be - * checked in the string {@code buffer} (a character array which must not be changed). The API guarantees that - * {@code pos} is a valid index for {@code buffer}. + * This method is called to check for a match against a source {@code buffer}. The parameter {@code start} + * represents the start position to be checked in the array {@code buffer} (a character array which MUST not be + * changed). The implementation SHOULD guarantees that {@code start} is a valid index in {@code buffer}. * </p> * <p> - * The matching code may check one character or many. It may check characters preceding {@code pos} as well as those - * after. + * The character array may be larger than the active area to be matched. Only values in the buffer between the + * specified indices may be accessed, in other words: {@code bufferStart <= start < bufferEnd}. + * </p> + * <p> + * The matching code may check one character or many. It may check characters preceding {@code start} as well as + * those after, so long as no checks exceed the bounds specified. * </p> * <p> * It must return zero for no match, or a positive number if a match was found. The number indicates the number of * characters that matched. * </p> * - * @param buffer the text content to match against, do not change - * @param pos the starting position for the match, valid for buffer - * @return The number of matching characters, zero for no match - * @since 1.9 + * @param buffer the source text to search, do not change. + * @param start the starting position for the match, valid in {@code buffer}. + * @param bufferStart the first active index in the buffer, valid in {@code buffer}. + * @param bufferEnd the end index (exclusive) of the active buffer, valid in {@code buffer}. + * @return The number of matching characters, zero if there is no match. */ - default int isMatch(final char[] buffer, final int pos) { - return isMatch(buffer, pos, 0, buffer.length); + default int isMatch(final CharSequence buffer, final int start, final int bufferStart, final int bufferEnd) { + return isMatch(AbstractStringMatcher.toCharArray(buffer), start, bufferEnd, bufferEnd); } - + /** * Returns the size of the matching string. Defaults to 0. * diff --git a/src/test/java/org/apache/commons/text/StringTokenizerTest.java b/src/test/java/org/apache/commons/text/StringTokenizerTest.java index b4ec07a..819ec89 100644 --- a/src/test/java/org/apache/commons/text/StringTokenizerTest.java +++ b/src/test/java/org/apache/commons/text/StringTokenizerTest.java @@ -673,6 +673,7 @@ public class StringTokenizerTest { public void testConstructor_String_char() { StringTokenizer tok = new StringTokenizer("a b", ' '); assertEquals(1, tok.getDelimiterMatcher().isMatch(" ".toCharArray(), 0, 0, 1)); + assertEquals(1, tok.getDelimiterMatcher().isMatch(" ", 0, 0, 1)); assertEquals("a", tok.next()); assertEquals("b", tok.next()); assertFalse(tok.hasNext()); @@ -689,7 +690,9 @@ public class StringTokenizerTest { public void testConstructor_String_char_char() { StringTokenizer tok = new StringTokenizer("a b", ' ', '"'); assertEquals(1, tok.getDelimiterMatcher().isMatch(" ".toCharArray(), 0, 0, 1)); + assertEquals(1, tok.getDelimiterMatcher().isMatch(" ", 0, 0, 1)); assertEquals(1, tok.getQuoteMatcher().isMatch("\"".toCharArray(), 0, 0, 1)); + assertEquals(1, tok.getQuoteMatcher().isMatch("\"", 0, 0, 1)); assertEquals("a", tok.next()); assertEquals("b", tok.next()); assertFalse(tok.hasNext()); @@ -721,6 +724,7 @@ public class StringTokenizerTest { public void testConstructor_charArray_char() { StringTokenizer tok = new StringTokenizer("a b".toCharArray(), ' '); assertEquals(1, tok.getDelimiterMatcher().isMatch(" ".toCharArray(), 0, 0, 1)); + assertEquals(1, tok.getDelimiterMatcher().isMatch(" ", 0, 0, 1)); assertEquals("a", tok.next()); assertEquals("b", tok.next()); assertFalse(tok.hasNext()); @@ -737,7 +741,9 @@ public class StringTokenizerTest { public void testConstructor_charArray_char_char() { StringTokenizer tok = new StringTokenizer("a b".toCharArray(), ' ', '"'); assertEquals(1, tok.getDelimiterMatcher().isMatch(" ".toCharArray(), 0, 0, 1)); + assertEquals(1, tok.getDelimiterMatcher().isMatch(" ", 0, 0, 1)); assertEquals(1, tok.getQuoteMatcher().isMatch("\"".toCharArray(), 0, 0, 1)); + assertEquals(1, tok.getQuoteMatcher().isMatch("\"", 0, 0, 1)); assertEquals("a", tok.next()); assertEquals("b", tok.next()); assertFalse(tok.hasNext()); diff --git a/src/test/java/org/apache/commons/text/matcher/StringMatcherTest.java b/src/test/java/org/apache/commons/text/matcher/StringMatcherOnCharArrayTest.java similarity index 99% copy from src/test/java/org/apache/commons/text/matcher/StringMatcherTest.java copy to src/test/java/org/apache/commons/text/matcher/StringMatcherOnCharArrayTest.java index c96aa75..0a441cb 100644 --- a/src/test/java/org/apache/commons/text/matcher/StringMatcherTest.java +++ b/src/test/java/org/apache/commons/text/matcher/StringMatcherOnCharArrayTest.java @@ -24,7 +24,7 @@ import org.junit.jupiter.api.Test; /** * Unit tests for {@link StringMatcher}. */ -public class StringMatcherTest { +public class StringMatcherOnCharArrayTest { private static final char[] BUFFER1 = "0,1\t2 3\n\r\f\u0000'\"".toCharArray(); diff --git a/src/test/java/org/apache/commons/text/matcher/StringMatcherTest.java b/src/test/java/org/apache/commons/text/matcher/StringMatcherOnCharSequenceStringTest.java similarity index 87% rename from src/test/java/org/apache/commons/text/matcher/StringMatcherTest.java rename to src/test/java/org/apache/commons/text/matcher/StringMatcherOnCharSequenceStringTest.java index c96aa75..af1f995 100644 --- a/src/test/java/org/apache/commons/text/matcher/StringMatcherTest.java +++ b/src/test/java/org/apache/commons/text/matcher/StringMatcherOnCharSequenceStringTest.java @@ -24,22 +24,22 @@ import org.junit.jupiter.api.Test; /** * Unit tests for {@link StringMatcher}. */ -public class StringMatcherTest { +public class StringMatcherOnCharSequenceStringTest { - private static final char[] BUFFER1 = "0,1\t2 3\n\r\f\u0000'\"".toCharArray(); + private static final String BUFFER1 = "0,1\t2 3\n\r\f\u0000'\""; - private static final char[] BUFFER2 = "abcdef".toCharArray(); + private static final String BUFFER2 = "abcdef"; @Test public void testCharMatcher_char() { final StringMatcher matcher = StringMatcherFactory.INSTANCE.charMatcher('c'); assertEquals(1, matcher.size()); - assertThat(matcher.isMatch(BUFFER2, 0, 0, BUFFER2.length)).isEqualTo(0); - assertThat(matcher.isMatch(BUFFER2, 1, 0, BUFFER2.length)).isEqualTo(0); - assertThat(matcher.isMatch(BUFFER2, 2, 0, BUFFER2.length)).isEqualTo(1); - assertThat(matcher.isMatch(BUFFER2, 3, 0, BUFFER2.length)).isEqualTo(0); - assertThat(matcher.isMatch(BUFFER2, 4, 0, BUFFER2.length)).isEqualTo(0); - assertThat(matcher.isMatch(BUFFER2, 5, 0, BUFFER2.length)).isEqualTo(0); + assertThat(matcher.isMatch(BUFFER2, 0, 0, BUFFER2.length())).isEqualTo(0); + assertThat(matcher.isMatch(BUFFER2, 1, 0, BUFFER2.length())).isEqualTo(0); + assertThat(matcher.isMatch(BUFFER2, 2, 0, BUFFER2.length())).isEqualTo(1); + assertThat(matcher.isMatch(BUFFER2, 3, 0, BUFFER2.length())).isEqualTo(0); + assertThat(matcher.isMatch(BUFFER2, 4, 0, BUFFER2.length())).isEqualTo(0); + assertThat(matcher.isMatch(BUFFER2, 5, 0, BUFFER2.length())).isEqualTo(0); // assertThat(matcher.isMatch(BUFFER2, 0)).isEqualTo(0); assertThat(matcher.isMatch(BUFFER2, 1)).isEqualTo(0); @@ -53,12 +53,12 @@ public class StringMatcherTest { public void testCharSetMatcher_charArray() { final StringMatcher matcher = StringMatcherFactory.INSTANCE.charSetMatcher("ace".toCharArray()); assertEquals(1, matcher.size()); - assertThat(matcher.isMatch(BUFFER2, 0, 0, BUFFER2.length)).isEqualTo(1); - assertThat(matcher.isMatch(BUFFER2, 1, 0, BUFFER2.length)).isEqualTo(0); - assertThat(matcher.isMatch(BUFFER2, 2, 0, BUFFER2.length)).isEqualTo(1); - assertThat(matcher.isMatch(BUFFER2, 3, 0, BUFFER2.length)).isEqualTo(0); - assertThat(matcher.isMatch(BUFFER2, 4, 0, BUFFER2.length)).isEqualTo(1); - assertThat(matcher.isMatch(BUFFER2, 5, 0, BUFFER2.length)).isEqualTo(0); + assertThat(matcher.isMatch(BUFFER2, 0, 0, BUFFER2.length())).isEqualTo(1); + assertThat(matcher.isMatch(BUFFER2, 1, 0, BUFFER2.length())).isEqualTo(0); + assertThat(matcher.isMatch(BUFFER2, 2, 0, BUFFER2.length())).isEqualTo(1); + assertThat(matcher.isMatch(BUFFER2, 3, 0, BUFFER2.length())).isEqualTo(0); + assertThat(matcher.isMatch(BUFFER2, 4, 0, BUFFER2.length())).isEqualTo(1); + assertThat(matcher.isMatch(BUFFER2, 5, 0, BUFFER2.length())).isEqualTo(0); assertThat(StringMatcherFactory.INSTANCE.charSetMatcher()) .isSameAs(StringMatcherFactory.INSTANCE.noneMatcher()); assertThat(StringMatcherFactory.INSTANCE.charSetMatcher((char[]) null)) @@ -71,12 +71,12 @@ public class StringMatcherTest { public void testCharSetMatcher_String() { final StringMatcher matcher = StringMatcherFactory.INSTANCE.charSetMatcher("ace"); assertEquals(1, matcher.size()); - assertThat(matcher.isMatch(BUFFER2, 0, 0, BUFFER2.length)).isEqualTo(1); - assertThat(matcher.isMatch(BUFFER2, 1, 0, BUFFER2.length)).isEqualTo(0); - assertThat(matcher.isMatch(BUFFER2, 2, 0, BUFFER2.length)).isEqualTo(1); - assertThat(matcher.isMatch(BUFFER2, 3, 0, BUFFER2.length)).isEqualTo(0); - assertThat(matcher.isMatch(BUFFER2, 4, 0, BUFFER2.length)).isEqualTo(1); - assertThat(matcher.isMatch(BUFFER2, 5, 0, BUFFER2.length)).isEqualTo(0); + assertThat(matcher.isMatch(BUFFER2, 0, 0, BUFFER2.length())).isEqualTo(1); + assertThat(matcher.isMatch(BUFFER2, 1, 0, BUFFER2.length())).isEqualTo(0); + assertThat(matcher.isMatch(BUFFER2, 2, 0, BUFFER2.length())).isEqualTo(1); + assertThat(matcher.isMatch(BUFFER2, 3, 0, BUFFER2.length())).isEqualTo(0); + assertThat(matcher.isMatch(BUFFER2, 4, 0, BUFFER2.length())).isEqualTo(1); + assertThat(matcher.isMatch(BUFFER2, 5, 0, BUFFER2.length())).isEqualTo(0); assertThat(StringMatcherFactory.INSTANCE.charSetMatcher("")) .isSameAs(StringMatcherFactory.INSTANCE.noneMatcher()); assertThat(StringMatcherFactory.INSTANCE.charSetMatcher((String) null)) @@ -90,9 +90,9 @@ public class StringMatcherTest { final StringMatcher matcher = StringMatcherFactory.INSTANCE.commaMatcher(); assertEquals(1, matcher.size()); assertThat(StringMatcherFactory.INSTANCE.commaMatcher()).isSameAs(matcher); - assertThat(matcher.isMatch(BUFFER1, 0, 0, BUFFER1.length)).isEqualTo(0); - assertThat(matcher.isMatch(BUFFER1, 1, 0, BUFFER1.length)).isEqualTo(1); - assertThat(matcher.isMatch(BUFFER1, 2, 0, BUFFER1.length)).isEqualTo(0); + assertThat(matcher.isMatch(BUFFER1, 0, 0, BUFFER1.length())).isEqualTo(0); + assertThat(matcher.isMatch(BUFFER1, 1, 0, BUFFER1.length())).isEqualTo(1); + assertThat(matcher.isMatch(BUFFER1, 2, 0, BUFFER1.length())).isEqualTo(0); } @Test @@ -100,8 +100,8 @@ public class StringMatcherTest { final StringMatcher matcher = StringMatcherFactory.INSTANCE.doubleQuoteMatcher(); assertEquals(1, matcher.size()); assertThat(StringMatcherFactory.INSTANCE.doubleQuoteMatcher()).isSameAs(matcher); - assertThat(matcher.isMatch(BUFFER1, 11, 0, BUFFER1.length)).isEqualTo(0); - assertThat(matcher.isMatch(BUFFER1, 12, 0, BUFFER1.length)).isEqualTo(1); + assertThat(matcher.isMatch(BUFFER1, 11, 0, BUFFER1.length())).isEqualTo(0); + assertThat(matcher.isMatch(BUFFER1, 12, 0, BUFFER1.length())).isEqualTo(1); } @Test @@ -111,7 +111,7 @@ public class StringMatcherTest { // the concern of StringMatcher, and are not bugs final StringMatcher matcher = StringMatcherFactory.INSTANCE.stringMatcher("bc"); assertEquals(2, matcher.size()); - assertThat(matcher.isMatch(BUFFER2, 1, 1, BUFFER2.length)).isEqualTo(2); + assertThat(matcher.isMatch(BUFFER2, 1, 1, BUFFER2.length())).isEqualTo(2); assertThat(matcher.isMatch(BUFFER2, 1, 0, 3)).isEqualTo(2); assertThat(matcher.isMatch(BUFFER2, 1, 0, 2)).isEqualTo(0); } @@ -121,19 +121,19 @@ public class StringMatcherTest { final StringMatcher matcher = StringMatcherFactory.INSTANCE.noneMatcher(); assertEquals(0, matcher.size()); assertThat(StringMatcherFactory.INSTANCE.noneMatcher()).isSameAs(matcher); - assertThat(matcher.isMatch(BUFFER1, 0, 0, BUFFER1.length)).isEqualTo(0); - assertThat(matcher.isMatch(BUFFER1, 1, 0, BUFFER1.length)).isEqualTo(0); - assertThat(matcher.isMatch(BUFFER1, 2, 0, BUFFER1.length)).isEqualTo(0); - assertThat(matcher.isMatch(BUFFER1, 3, 0, BUFFER1.length)).isEqualTo(0); - assertThat(matcher.isMatch(BUFFER1, 4, 0, BUFFER1.length)).isEqualTo(0); - assertThat(matcher.isMatch(BUFFER1, 5, 0, BUFFER1.length)).isEqualTo(0); - assertThat(matcher.isMatch(BUFFER1, 6, 0, BUFFER1.length)).isEqualTo(0); - assertThat(matcher.isMatch(BUFFER1, 7, 0, BUFFER1.length)).isEqualTo(0); - assertThat(matcher.isMatch(BUFFER1, 8, 0, BUFFER1.length)).isEqualTo(0); - assertThat(matcher.isMatch(BUFFER1, 9, 0, BUFFER1.length)).isEqualTo(0); - assertThat(matcher.isMatch(BUFFER1, 10, 0, BUFFER1.length)).isEqualTo(0); - assertThat(matcher.isMatch(BUFFER1, 11, 0, BUFFER1.length)).isEqualTo(0); - assertThat(matcher.isMatch(BUFFER1, 12, 0, BUFFER1.length)).isEqualTo(0); + assertThat(matcher.isMatch(BUFFER1, 0, 0, BUFFER1.length())).isEqualTo(0); + assertThat(matcher.isMatch(BUFFER1, 1, 0, BUFFER1.length())).isEqualTo(0); + assertThat(matcher.isMatch(BUFFER1, 2, 0, BUFFER1.length())).isEqualTo(0); + assertThat(matcher.isMatch(BUFFER1, 3, 0, BUFFER1.length())).isEqualTo(0); + assertThat(matcher.isMatch(BUFFER1, 4, 0, BUFFER1.length())).isEqualTo(0); + assertThat(matcher.isMatch(BUFFER1, 5, 0, BUFFER1.length())).isEqualTo(0); + assertThat(matcher.isMatch(BUFFER1, 6, 0, BUFFER1.length())).isEqualTo(0); + assertThat(matcher.isMatch(BUFFER1, 7, 0, BUFFER1.length())).isEqualTo(0); + assertThat(matcher.isMatch(BUFFER1, 8, 0, BUFFER1.length())).isEqualTo(0); + assertThat(matcher.isMatch(BUFFER1, 9, 0, BUFFER1.length())).isEqualTo(0); + assertThat(matcher.isMatch(BUFFER1, 10, 0, BUFFER1.length())).isEqualTo(0); + assertThat(matcher.isMatch(BUFFER1, 11, 0, BUFFER1.length())).isEqualTo(0); + assertThat(matcher.isMatch(BUFFER1, 12, 0, BUFFER1.length())).isEqualTo(0); } @Test @@ -141,9 +141,9 @@ public class StringMatcherTest { final StringMatcher matcher = StringMatcherFactory.INSTANCE.quoteMatcher(); assertEquals(1, matcher.size()); assertThat(StringMatcherFactory.INSTANCE.quoteMatcher()).isSameAs(matcher); - assertThat(matcher.isMatch(BUFFER1, 10, 0, BUFFER1.length)).isEqualTo(0); - assertThat(matcher.isMatch(BUFFER1, 11, 0, BUFFER1.length)).isEqualTo(1); - assertThat(matcher.isMatch(BUFFER1, 12, 0, BUFFER1.length)).isEqualTo(1); + assertThat(matcher.isMatch(BUFFER1, 10, 0, BUFFER1.length())).isEqualTo(0); + assertThat(matcher.isMatch(BUFFER1, 11, 0, BUFFER1.length())).isEqualTo(1); + assertThat(matcher.isMatch(BUFFER1, 12, 0, BUFFER1.length())).isEqualTo(1); } @Test @@ -151,9 +151,9 @@ public class StringMatcherTest { final StringMatcher matcher = StringMatcherFactory.INSTANCE.singleQuoteMatcher(); assertEquals(1, matcher.size()); assertThat(StringMatcherFactory.INSTANCE.singleQuoteMatcher()).isSameAs(matcher); - assertThat(matcher.isMatch(BUFFER1, 10, 0, BUFFER1.length)).isEqualTo(0); - assertThat(matcher.isMatch(BUFFER1, 11, 0, BUFFER1.length)).isEqualTo(1); - assertThat(matcher.isMatch(BUFFER1, 12, 0, BUFFER1.length)).isEqualTo(0); + assertThat(matcher.isMatch(BUFFER1, 10, 0, BUFFER1.length())).isEqualTo(0); + assertThat(matcher.isMatch(BUFFER1, 11, 0, BUFFER1.length())).isEqualTo(1); + assertThat(matcher.isMatch(BUFFER1, 12, 0, BUFFER1.length())).isEqualTo(0); } @Test @@ -161,9 +161,9 @@ public class StringMatcherTest { final StringMatcher matcher = StringMatcherFactory.INSTANCE.spaceMatcher(); assertEquals(1, matcher.size()); assertThat(StringMatcherFactory.INSTANCE.spaceMatcher()).isSameAs(matcher); - assertThat(matcher.isMatch(BUFFER1, 4, 0, BUFFER1.length)).isEqualTo(0); - assertThat(matcher.isMatch(BUFFER1, 5, 0, BUFFER1.length)).isEqualTo(1); - assertThat(matcher.isMatch(BUFFER1, 6, 0, BUFFER1.length)).isEqualTo(0); + assertThat(matcher.isMatch(BUFFER1, 4, 0, BUFFER1.length())).isEqualTo(0); + assertThat(matcher.isMatch(BUFFER1, 5, 0, BUFFER1.length())).isEqualTo(1); + assertThat(matcher.isMatch(BUFFER1, 6, 0, BUFFER1.length())).isEqualTo(0); } @Test @@ -171,27 +171,27 @@ public class StringMatcherTest { final StringMatcher matcher = StringMatcherFactory.INSTANCE.splitMatcher(); assertEquals(1, matcher.size()); assertThat(StringMatcherFactory.INSTANCE.splitMatcher()).isSameAs(matcher); - assertThat(matcher.isMatch(BUFFER1, 2, 0, BUFFER1.length)).isEqualTo(0); - assertThat(matcher.isMatch(BUFFER1, 3, 0, BUFFER1.length)).isEqualTo(1); - assertThat(matcher.isMatch(BUFFER1, 4, 0, BUFFER1.length)).isEqualTo(0); - assertThat(matcher.isMatch(BUFFER1, 5, 0, BUFFER1.length)).isEqualTo(1); - assertThat(matcher.isMatch(BUFFER1, 6, 0, BUFFER1.length)).isEqualTo(0); - assertThat(matcher.isMatch(BUFFER1, 7, 0, BUFFER1.length)).isEqualTo(1); - assertThat(matcher.isMatch(BUFFER1, 8, 0, BUFFER1.length)).isEqualTo(1); - assertThat(matcher.isMatch(BUFFER1, 9, 0, BUFFER1.length)).isEqualTo(1); - assertThat(matcher.isMatch(BUFFER1, 10, 0, BUFFER1.length)).isEqualTo(0); + assertThat(matcher.isMatch(BUFFER1, 2, 0, BUFFER1.length())).isEqualTo(0); + assertThat(matcher.isMatch(BUFFER1, 3, 0, BUFFER1.length())).isEqualTo(1); + assertThat(matcher.isMatch(BUFFER1, 4, 0, BUFFER1.length())).isEqualTo(0); + assertThat(matcher.isMatch(BUFFER1, 5, 0, BUFFER1.length())).isEqualTo(1); + assertThat(matcher.isMatch(BUFFER1, 6, 0, BUFFER1.length())).isEqualTo(0); + assertThat(matcher.isMatch(BUFFER1, 7, 0, BUFFER1.length())).isEqualTo(1); + assertThat(matcher.isMatch(BUFFER1, 8, 0, BUFFER1.length())).isEqualTo(1); + assertThat(matcher.isMatch(BUFFER1, 9, 0, BUFFER1.length())).isEqualTo(1); + assertThat(matcher.isMatch(BUFFER1, 10, 0, BUFFER1.length())).isEqualTo(0); } @Test public void testStringMatcher_String() { final StringMatcher matcher = StringMatcherFactory.INSTANCE.stringMatcher("bc"); assertEquals(2, matcher.size()); - assertThat(matcher.isMatch(BUFFER2, 0, 0, BUFFER2.length)).isEqualTo(0); - assertThat(matcher.isMatch(BUFFER2, 1, 0, BUFFER2.length)).isEqualTo(2); - assertThat(matcher.isMatch(BUFFER2, 2, 0, BUFFER2.length)).isEqualTo(0); - assertThat(matcher.isMatch(BUFFER2, 3, 0, BUFFER2.length)).isEqualTo(0); - assertThat(matcher.isMatch(BUFFER2, 4, 0, BUFFER2.length)).isEqualTo(0); - assertThat(matcher.isMatch(BUFFER2, 5, 0, BUFFER2.length)).isEqualTo(0); + assertThat(matcher.isMatch(BUFFER2, 0, 0, BUFFER2.length())).isEqualTo(0); + assertThat(matcher.isMatch(BUFFER2, 1, 0, BUFFER2.length())).isEqualTo(2); + assertThat(matcher.isMatch(BUFFER2, 2, 0, BUFFER2.length())).isEqualTo(0); + assertThat(matcher.isMatch(BUFFER2, 3, 0, BUFFER2.length())).isEqualTo(0); + assertThat(matcher.isMatch(BUFFER2, 4, 0, BUFFER2.length())).isEqualTo(0); + assertThat(matcher.isMatch(BUFFER2, 5, 0, BUFFER2.length())).isEqualTo(0); assertThat(StringMatcherFactory.INSTANCE.stringMatcher("")) .isSameAs(StringMatcherFactory.INSTANCE.noneMatcher()); assertThat(StringMatcherFactory.INSTANCE.stringMatcher((String) null)) @@ -204,9 +204,9 @@ public class StringMatcherTest { final StringMatcher matcher = StringMatcherFactory.INSTANCE.tabMatcher(); assertEquals(1, matcher.size()); assertThat(StringMatcherFactory.INSTANCE.tabMatcher()).isSameAs(matcher); - assertThat(matcher.isMatch(BUFFER1, 2, 0, BUFFER1.length)).isEqualTo(0); - assertThat(matcher.isMatch(BUFFER1, 3, 0, BUFFER1.length)).isEqualTo(1); - assertThat(matcher.isMatch(BUFFER1, 4, 0, BUFFER1.length)).isEqualTo(0); + assertThat(matcher.isMatch(BUFFER1, 2, 0, BUFFER1.length())).isEqualTo(0); + assertThat(matcher.isMatch(BUFFER1, 3, 0, BUFFER1.length())).isEqualTo(1); + assertThat(matcher.isMatch(BUFFER1, 4, 0, BUFFER1.length())).isEqualTo(0); } @Test @@ -214,15 +214,15 @@ public class StringMatcherTest { final StringMatcher matcher = StringMatcherFactory.INSTANCE.trimMatcher(); assertEquals(1, matcher.size()); assertThat(StringMatcherFactory.INSTANCE.trimMatcher()).isSameAs(matcher); - assertThat(matcher.isMatch(BUFFER1, 2, 0, BUFFER1.length)).isEqualTo(0); - assertThat(matcher.isMatch(BUFFER1, 3, 0, BUFFER1.length)).isEqualTo(1); - assertThat(matcher.isMatch(BUFFER1, 4, 0, BUFFER1.length)).isEqualTo(0); - assertThat(matcher.isMatch(BUFFER1, 5, 0, BUFFER1.length)).isEqualTo(1); - assertThat(matcher.isMatch(BUFFER1, 6, 0, BUFFER1.length)).isEqualTo(0); - assertThat(matcher.isMatch(BUFFER1, 7, 0, BUFFER1.length)).isEqualTo(1); - assertThat(matcher.isMatch(BUFFER1, 8, 0, BUFFER1.length)).isEqualTo(1); - assertThat(matcher.isMatch(BUFFER1, 9, 0, BUFFER1.length)).isEqualTo(1); - assertThat(matcher.isMatch(BUFFER1, 10, 0, BUFFER1.length)).isEqualTo(1); + assertThat(matcher.isMatch(BUFFER1, 2, 0, BUFFER1.length())).isEqualTo(0); + assertThat(matcher.isMatch(BUFFER1, 3, 0, BUFFER1.length())).isEqualTo(1); + assertThat(matcher.isMatch(BUFFER1, 4, 0, BUFFER1.length())).isEqualTo(0); + assertThat(matcher.isMatch(BUFFER1, 5, 0, BUFFER1.length())).isEqualTo(1); + assertThat(matcher.isMatch(BUFFER1, 6, 0, BUFFER1.length())).isEqualTo(0); + assertThat(matcher.isMatch(BUFFER1, 7, 0, BUFFER1.length())).isEqualTo(1); + assertThat(matcher.isMatch(BUFFER1, 8, 0, BUFFER1.length())).isEqualTo(1); + assertThat(matcher.isMatch(BUFFER1, 9, 0, BUFFER1.length())).isEqualTo(1); + assertThat(matcher.isMatch(BUFFER1, 10, 0, BUFFER1.length())).isEqualTo(1); } }