View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *      https://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
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   * Tests {@link StrMatcher}.
26   *
27   * @deprecated This class will be removed in 2.0.
28   */
29  @Deprecated
30  class StrMatcherTest  {
31  
32      private static final char[] BUFFER1 = "0,1\t2 3\n\r\f\u0000'\"".toCharArray();
33  
34      private static final char[] BUFFER2 = "abcdef".toCharArray();
35  
36      static void assertStrMatcherImpl(final String internalSimpleName, final StrMatcher obj) {
37          assertEquals(StrMatcher.class.getName() + "$" + internalSimpleName, obj.getClass().getName());
38      }
39  
40      static void assertStrMatcherPrefixImpl(final String internalSimpleName, final StrSubstitutor obj) {
41          assertStrMatcherImpl(internalSimpleName, obj.getVariablePrefixMatcher());
42      }
43  
44      static void assertStrMatcherSuffixImpl(final String internalSimpleName, final StrSubstitutor obj) {
45          assertStrMatcherImpl(internalSimpleName, obj.getVariableSuffixMatcher());
46      }
47  
48      @Test
49      void testCharMatcher_char() {
50          final StrMatcher matcher = StrMatcher.charMatcher('c');
51          assertEquals(0, matcher.isMatch(BUFFER2, 0));
52          assertEquals(0, matcher.isMatch(BUFFER2, 1));
53          assertEquals(1, matcher.isMatch(BUFFER2, 2));
54          assertEquals(0, matcher.isMatch(BUFFER2, 3));
55          assertEquals(0, matcher.isMatch(BUFFER2, 4));
56          assertEquals(0, matcher.isMatch(BUFFER2, 5));
57      }
58  
59      @Test
60      void testCharSetMatcher_charArray() {
61          final StrMatcher matcher = StrMatcher.charSetMatcher("ace".toCharArray());
62          assertEquals(1, matcher.isMatch(BUFFER2, 0));
63          assertEquals(0, matcher.isMatch(BUFFER2, 1));
64          assertEquals(1, matcher.isMatch(BUFFER2, 2));
65          assertEquals(0, matcher.isMatch(BUFFER2, 3));
66          assertEquals(1, matcher.isMatch(BUFFER2, 4));
67          assertEquals(0, matcher.isMatch(BUFFER2, 5));
68          assertSame(StrMatcher.charSetMatcher(), StrMatcher.noneMatcher());
69          assertSame(StrMatcher.charSetMatcher((char[]) null), StrMatcher.noneMatcher());
70          StrMatcherTest.assertStrMatcherImpl("CharMatcher", StrMatcher.charSetMatcher("a".toCharArray()));
71      }
72  
73      @Test
74      void testCharSetMatcher_String() {
75          final StrMatcher matcher = StrMatcher.charSetMatcher("ace");
76          assertEquals(1, matcher.isMatch(BUFFER2, 0));
77          assertEquals(0, matcher.isMatch(BUFFER2, 1));
78          assertEquals(1, matcher.isMatch(BUFFER2, 2));
79          assertEquals(0, matcher.isMatch(BUFFER2, 3));
80          assertEquals(1, matcher.isMatch(BUFFER2, 4));
81          assertEquals(0, matcher.isMatch(BUFFER2, 5));
82          assertSame(StrMatcher.charSetMatcher(""), StrMatcher.noneMatcher());
83          assertSame(StrMatcher.charSetMatcher((String) null), StrMatcher.noneMatcher());
84          StrMatcherTest.assertStrMatcherImpl("CharMatcher", StrMatcher.charSetMatcher("a"));
85      }
86  
87      @Test
88      void testCommaMatcher() {
89          final StrMatcher matcher = StrMatcher.commaMatcher();
90          assertSame(StrMatcher.commaMatcher(), matcher);
91          assertEquals(0, matcher.isMatch(BUFFER1, 0));
92          assertEquals(1, matcher.isMatch(BUFFER1, 1));
93          assertEquals(0, matcher.isMatch(BUFFER1, 2));
94      }
95  
96      @Test
97      void testDoubleQuoteMatcher() {
98          final StrMatcher matcher = StrMatcher.doubleQuoteMatcher();
99          assertSame(StrMatcher.doubleQuoteMatcher(), matcher);
100         assertEquals(0, matcher.isMatch(BUFFER1, 11));
101         assertEquals(1, matcher.isMatch(BUFFER1, 12));
102     }
103 
104     @Test
105     void testMatcherIndices() {
106         // remember that the API contract is tight for the isMatch() method
107         // all the onus is on the caller, so invalid inputs are not
108         // the concern of StrMatcher, and are not bugs
109         final StrMatcher matcher = StrMatcher.stringMatcher("bc");
110         assertEquals(2, matcher.isMatch(BUFFER2, 1, 1, BUFFER2.length));
111         assertEquals(2, matcher.isMatch(BUFFER2, 1, 0, 3));
112         assertEquals(0, matcher.isMatch(BUFFER2, 1, 0, 2));
113     }
114 
115     @Test
116     void testNoneMatcher() {
117         final StrMatcher matcher = StrMatcher.noneMatcher();
118         assertSame(StrMatcher.noneMatcher(), matcher);
119         assertEquals(0, matcher.isMatch(BUFFER1, 0));
120         assertEquals(0, matcher.isMatch(BUFFER1, 1));
121         assertEquals(0, matcher.isMatch(BUFFER1, 2));
122         assertEquals(0, matcher.isMatch(BUFFER1, 3));
123         assertEquals(0, matcher.isMatch(BUFFER1, 4));
124         assertEquals(0, matcher.isMatch(BUFFER1, 5));
125         assertEquals(0, matcher.isMatch(BUFFER1, 6));
126         assertEquals(0, matcher.isMatch(BUFFER1, 7));
127         assertEquals(0, matcher.isMatch(BUFFER1, 8));
128         assertEquals(0, matcher.isMatch(BUFFER1, 9));
129         assertEquals(0, matcher.isMatch(BUFFER1, 10));
130         assertEquals(0, matcher.isMatch(BUFFER1, 11));
131         assertEquals(0, matcher.isMatch(BUFFER1, 12));
132     }
133 
134     @Test
135     void testQuoteMatcher() {
136         final StrMatcher matcher = StrMatcher.quoteMatcher();
137         assertSame(StrMatcher.quoteMatcher(), matcher);
138         assertEquals(0, matcher.isMatch(BUFFER1, 10));
139         assertEquals(1, matcher.isMatch(BUFFER1, 11));
140         assertEquals(1, matcher.isMatch(BUFFER1, 12));
141     }
142 
143     @Test
144     void testSingleQuoteMatcher() {
145         final StrMatcher matcher = StrMatcher.singleQuoteMatcher();
146         assertSame(StrMatcher.singleQuoteMatcher(), matcher);
147         assertEquals(0, matcher.isMatch(BUFFER1, 10));
148         assertEquals(1, matcher.isMatch(BUFFER1, 11));
149         assertEquals(0, matcher.isMatch(BUFFER1, 12));
150     }
151 
152     @Test
153     void testSpaceMatcher() {
154         final StrMatcher matcher = StrMatcher.spaceMatcher();
155         assertSame(StrMatcher.spaceMatcher(), matcher);
156         assertEquals(0, matcher.isMatch(BUFFER1, 4));
157         assertEquals(1, matcher.isMatch(BUFFER1, 5));
158         assertEquals(0, matcher.isMatch(BUFFER1, 6));
159     }
160 
161     @Test
162     void testSplitMatcher() {
163         final StrMatcher matcher = StrMatcher.splitMatcher();
164         assertSame(StrMatcher.splitMatcher(), matcher);
165         assertEquals(0, matcher.isMatch(BUFFER1, 2));
166         assertEquals(1, matcher.isMatch(BUFFER1, 3));
167         assertEquals(0, matcher.isMatch(BUFFER1, 4));
168         assertEquals(1, matcher.isMatch(BUFFER1, 5));
169         assertEquals(0, matcher.isMatch(BUFFER1, 6));
170         assertEquals(1, matcher.isMatch(BUFFER1, 7));
171         assertEquals(1, matcher.isMatch(BUFFER1, 8));
172         assertEquals(1, matcher.isMatch(BUFFER1, 9));
173         assertEquals(0, matcher.isMatch(BUFFER1, 10));
174     }
175 
176     @Test
177     void testStringMatcher_String() {
178         final StrMatcher matcher = StrMatcher.stringMatcher("bc");
179         assertEquals(0, matcher.isMatch(BUFFER2, 0));
180         assertEquals(2, matcher.isMatch(BUFFER2, 1));
181         assertEquals(0, matcher.isMatch(BUFFER2, 2));
182         assertEquals(0, matcher.isMatch(BUFFER2, 3));
183         assertEquals(0, matcher.isMatch(BUFFER2, 4));
184         assertEquals(0, matcher.isMatch(BUFFER2, 5));
185         assertSame(StrMatcher.stringMatcher(""), StrMatcher.noneMatcher());
186         assertSame(StrMatcher.stringMatcher((String) null), StrMatcher.noneMatcher());
187     }
188 
189     @Test
190     void testTabMatcher() {
191         final StrMatcher matcher = StrMatcher.tabMatcher();
192         assertSame(StrMatcher.tabMatcher(), matcher);
193         assertEquals(0, matcher.isMatch(BUFFER1, 2));
194         assertEquals(1, matcher.isMatch(BUFFER1, 3));
195         assertEquals(0, matcher.isMatch(BUFFER1, 4));
196     }
197 
198     @Test
199     void testTrimMatcher() {
200         final StrMatcher matcher = StrMatcher.trimMatcher();
201         assertSame(StrMatcher.trimMatcher(), matcher);
202         assertEquals(0, matcher.isMatch(BUFFER1, 2));
203         assertEquals(1, matcher.isMatch(BUFFER1, 3));
204         assertEquals(0, matcher.isMatch(BUFFER1, 4));
205         assertEquals(1, matcher.isMatch(BUFFER1, 5));
206         assertEquals(0, matcher.isMatch(BUFFER1, 6));
207         assertEquals(1, matcher.isMatch(BUFFER1, 7));
208         assertEquals(1, matcher.isMatch(BUFFER1, 8));
209         assertEquals(1, matcher.isMatch(BUFFER1, 9));
210         assertEquals(1, matcher.isMatch(BUFFER1, 10));
211     }
212 
213 }