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