1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.text;
18
19 import static org.junit.jupiter.api.Assertions.assertEquals;
20 import static org.junit.jupiter.api.Assertions.assertSame;
21
22 import org.junit.jupiter.api.Test;
23
24
25
26
27
28
29 class StrMatcherTest {
30
31 private static final char[] BUFFER1 = "0,1\t2 3\n\r\f\u0000'\"".toCharArray();
32
33 private static final char[] BUFFER2 = "abcdef".toCharArray();
34
35 static void assertStrMatcherImpl(final String internalSimpleName, final StrMatcher obj) {
36 assertEquals(StrMatcher.class.getName() + "$" + internalSimpleName, obj.getClass().getName());
37 }
38
39 static void assertStrMatcherPrefixImpl(final String internalSimpleName, final StrSubstitutor obj) {
40 assertStrMatcherImpl(internalSimpleName, obj.getVariablePrefixMatcher());
41 }
42
43 static void assertStrMatcherSuffixImpl(final String internalSimpleName, final StrSubstitutor obj) {
44 assertStrMatcherImpl(internalSimpleName, obj.getVariableSuffixMatcher());
45 }
46
47 @Test
48 void testCharMatcher_char() {
49 final StrMatcher matcher = StrMatcher.charMatcher('c');
50 assertEquals(0, matcher.isMatch(BUFFER2, 0));
51 assertEquals(0, matcher.isMatch(BUFFER2, 1));
52 assertEquals(1, matcher.isMatch(BUFFER2, 2));
53 assertEquals(0, matcher.isMatch(BUFFER2, 3));
54 assertEquals(0, matcher.isMatch(BUFFER2, 4));
55 assertEquals(0, matcher.isMatch(BUFFER2, 5));
56 }
57
58 @Test
59 void testCharSetMatcher_charArray() {
60 final StrMatcher matcher = StrMatcher.charSetMatcher("ace".toCharArray());
61 assertEquals(1, matcher.isMatch(BUFFER2, 0));
62 assertEquals(0, matcher.isMatch(BUFFER2, 1));
63 assertEquals(1, matcher.isMatch(BUFFER2, 2));
64 assertEquals(0, matcher.isMatch(BUFFER2, 3));
65 assertEquals(1, matcher.isMatch(BUFFER2, 4));
66 assertEquals(0, matcher.isMatch(BUFFER2, 5));
67 assertSame(StrMatcher.charSetMatcher(), StrMatcher.noneMatcher());
68 assertSame(StrMatcher.charSetMatcher((char[]) null), StrMatcher.noneMatcher());
69 StrMatcherTest.assertStrMatcherImpl("CharMatcher", StrMatcher.charSetMatcher("a".toCharArray()));
70 }
71
72 @Test
73 void testCharSetMatcher_String() {
74 final StrMatcher matcher = StrMatcher.charSetMatcher("ace");
75 assertEquals(1, matcher.isMatch(BUFFER2, 0));
76 assertEquals(0, matcher.isMatch(BUFFER2, 1));
77 assertEquals(1, matcher.isMatch(BUFFER2, 2));
78 assertEquals(0, matcher.isMatch(BUFFER2, 3));
79 assertEquals(1, matcher.isMatch(BUFFER2, 4));
80 assertEquals(0, matcher.isMatch(BUFFER2, 5));
81 assertSame(StrMatcher.charSetMatcher(""), StrMatcher.noneMatcher());
82 assertSame(StrMatcher.charSetMatcher((String) null), StrMatcher.noneMatcher());
83 StrMatcherTest.assertStrMatcherImpl("CharMatcher", StrMatcher.charSetMatcher("a"));
84 }
85
86 @Test
87 void testCommaMatcher() {
88 final StrMatcher matcher = StrMatcher.commaMatcher();
89 assertSame(StrMatcher.commaMatcher(), matcher);
90 assertEquals(0, matcher.isMatch(BUFFER1, 0));
91 assertEquals(1, matcher.isMatch(BUFFER1, 1));
92 assertEquals(0, matcher.isMatch(BUFFER1, 2));
93 }
94
95 @Test
96 void testDoubleQuoteMatcher() {
97 final StrMatcher matcher = StrMatcher.doubleQuoteMatcher();
98 assertSame(StrMatcher.doubleQuoteMatcher(), matcher);
99 assertEquals(0, matcher.isMatch(BUFFER1, 11));
100 assertEquals(1, matcher.isMatch(BUFFER1, 12));
101 }
102
103 @Test
104 void testMatcherIndices() {
105
106
107
108 final StrMatcher matcher = StrMatcher.stringMatcher("bc");
109 assertEquals(2, matcher.isMatch(BUFFER2, 1, 1, BUFFER2.length));
110 assertEquals(2, matcher.isMatch(BUFFER2, 1, 0, 3));
111 assertEquals(0, matcher.isMatch(BUFFER2, 1, 0, 2));
112 }
113
114 @Test
115 void testNoneMatcher() {
116 final StrMatcher matcher = StrMatcher.noneMatcher();
117 assertSame(StrMatcher.noneMatcher(), matcher);
118 assertEquals(0, matcher.isMatch(BUFFER1, 0));
119 assertEquals(0, matcher.isMatch(BUFFER1, 1));
120 assertEquals(0, matcher.isMatch(BUFFER1, 2));
121 assertEquals(0, matcher.isMatch(BUFFER1, 3));
122 assertEquals(0, matcher.isMatch(BUFFER1, 4));
123 assertEquals(0, matcher.isMatch(BUFFER1, 5));
124 assertEquals(0, matcher.isMatch(BUFFER1, 6));
125 assertEquals(0, matcher.isMatch(BUFFER1, 7));
126 assertEquals(0, matcher.isMatch(BUFFER1, 8));
127 assertEquals(0, matcher.isMatch(BUFFER1, 9));
128 assertEquals(0, matcher.isMatch(BUFFER1, 10));
129 assertEquals(0, matcher.isMatch(BUFFER1, 11));
130 assertEquals(0, matcher.isMatch(BUFFER1, 12));
131 }
132
133 @Test
134 void testQuoteMatcher() {
135 final StrMatcher matcher = StrMatcher.quoteMatcher();
136 assertSame(StrMatcher.quoteMatcher(), matcher);
137 assertEquals(0, matcher.isMatch(BUFFER1, 10));
138 assertEquals(1, matcher.isMatch(BUFFER1, 11));
139 assertEquals(1, matcher.isMatch(BUFFER1, 12));
140 }
141
142 @Test
143 void testSingleQuoteMatcher() {
144 final StrMatcher matcher = StrMatcher.singleQuoteMatcher();
145 assertSame(StrMatcher.singleQuoteMatcher(), matcher);
146 assertEquals(0, matcher.isMatch(BUFFER1, 10));
147 assertEquals(1, matcher.isMatch(BUFFER1, 11));
148 assertEquals(0, matcher.isMatch(BUFFER1, 12));
149 }
150
151 @Test
152 void testSpaceMatcher() {
153 final StrMatcher matcher = StrMatcher.spaceMatcher();
154 assertSame(StrMatcher.spaceMatcher(), matcher);
155 assertEquals(0, matcher.isMatch(BUFFER1, 4));
156 assertEquals(1, matcher.isMatch(BUFFER1, 5));
157 assertEquals(0, matcher.isMatch(BUFFER1, 6));
158 }
159
160 @Test
161 void testSplitMatcher() {
162 final StrMatcher matcher = StrMatcher.splitMatcher();
163 assertSame(StrMatcher.splitMatcher(), matcher);
164 assertEquals(0, matcher.isMatch(BUFFER1, 2));
165 assertEquals(1, matcher.isMatch(BUFFER1, 3));
166 assertEquals(0, matcher.isMatch(BUFFER1, 4));
167 assertEquals(1, matcher.isMatch(BUFFER1, 5));
168 assertEquals(0, matcher.isMatch(BUFFER1, 6));
169 assertEquals(1, matcher.isMatch(BUFFER1, 7));
170 assertEquals(1, matcher.isMatch(BUFFER1, 8));
171 assertEquals(1, matcher.isMatch(BUFFER1, 9));
172 assertEquals(0, matcher.isMatch(BUFFER1, 10));
173 }
174
175 @Test
176 void testStringMatcher_String() {
177 final StrMatcher matcher = StrMatcher.stringMatcher("bc");
178 assertEquals(0, matcher.isMatch(BUFFER2, 0));
179 assertEquals(2, matcher.isMatch(BUFFER2, 1));
180 assertEquals(0, matcher.isMatch(BUFFER2, 2));
181 assertEquals(0, matcher.isMatch(BUFFER2, 3));
182 assertEquals(0, matcher.isMatch(BUFFER2, 4));
183 assertEquals(0, matcher.isMatch(BUFFER2, 5));
184 assertSame(StrMatcher.stringMatcher(""), StrMatcher.noneMatcher());
185 assertSame(StrMatcher.stringMatcher((String) null), StrMatcher.noneMatcher());
186 }
187
188 @Test
189 void testTabMatcher() {
190 final StrMatcher matcher = StrMatcher.tabMatcher();
191 assertSame(StrMatcher.tabMatcher(), matcher);
192 assertEquals(0, matcher.isMatch(BUFFER1, 2));
193 assertEquals(1, matcher.isMatch(BUFFER1, 3));
194 assertEquals(0, matcher.isMatch(BUFFER1, 4));
195 }
196
197 @Test
198 void testTrimMatcher() {
199 final StrMatcher matcher = StrMatcher.trimMatcher();
200 assertSame(StrMatcher.trimMatcher(), matcher);
201 assertEquals(0, matcher.isMatch(BUFFER1, 2));
202 assertEquals(1, matcher.isMatch(BUFFER1, 3));
203 assertEquals(0, matcher.isMatch(BUFFER1, 4));
204 assertEquals(1, matcher.isMatch(BUFFER1, 5));
205 assertEquals(0, matcher.isMatch(BUFFER1, 6));
206 assertEquals(1, matcher.isMatch(BUFFER1, 7));
207 assertEquals(1, matcher.isMatch(BUFFER1, 8));
208 assertEquals(1, matcher.isMatch(BUFFER1, 9));
209 assertEquals(1, matcher.isMatch(BUFFER1, 10));
210 }
211
212 }