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  package org.apache.commons.lang3;
18  
19  import static org.junit.jupiter.api.Assertions.assertArrayEquals;
20  import static org.junit.jupiter.api.Assertions.assertEquals;
21  import static org.junit.jupiter.api.Assertions.assertNull;
22  
23  import org.junit.jupiter.api.Disabled;
24  import org.junit.jupiter.api.Test;
25  
26  /**
27   * Unit tests {@link org.apache.commons.lang3.StringUtils} - Trim/Strip methods
28   */
29  public class StringUtilsTrimStripTest extends AbstractLangTest {
30      private static final String FOO = "foo";
31  
32      @Test
33      public void testStrip_String() {
34          assertNull(StringUtils.strip(null));
35          assertEquals("", StringUtils.strip(""));
36          assertEquals("", StringUtils.strip("        "));
37          assertEquals("abc", StringUtils.strip("  abc  "));
38          assertEquals(StringUtilsTest.NON_WHITESPACE,
39              StringUtils.strip(StringUtilsTest.WHITESPACE + StringUtilsTest.NON_WHITESPACE + StringUtilsTest.WHITESPACE));
40      }
41  
42      @Test
43      public void testStrip_StringString() {
44          // null strip
45          assertNull(StringUtils.strip(null, null));
46          assertEquals("", StringUtils.strip("", null));
47          assertEquals("", StringUtils.strip("        ", null));
48          assertEquals("abc", StringUtils.strip("  abc  ", null));
49          assertEquals(StringUtilsTest.NON_WHITESPACE,
50              StringUtils.strip(StringUtilsTest.WHITESPACE + StringUtilsTest.NON_WHITESPACE + StringUtilsTest.WHITESPACE, null));
51  
52          // "" strip
53          assertNull(StringUtils.strip(null, ""));
54          assertEquals("", StringUtils.strip("", ""));
55          assertEquals("        ", StringUtils.strip("        ", ""));
56          assertEquals("  abc  ", StringUtils.strip("  abc  ", ""));
57          assertEquals(StringUtilsTest.WHITESPACE, StringUtils.strip(StringUtilsTest.WHITESPACE, ""));
58  
59          // " " strip
60          assertNull(StringUtils.strip(null, " "));
61          assertEquals("", StringUtils.strip("", " "));
62          assertEquals("", StringUtils.strip("        ", " "));
63          assertEquals("abc", StringUtils.strip("  abc  ", " "));
64  
65          // "ab" strip
66          assertNull(StringUtils.strip(null, "ab"));
67          assertEquals("", StringUtils.strip("", "ab"));
68          assertEquals("        ", StringUtils.strip("        ", "ab"));
69          assertEquals("  abc  ", StringUtils.strip("  abc  ", "ab"));
70          assertEquals("c", StringUtils.strip("abcabab", "ab"));
71          assertEquals(StringUtilsTest.WHITESPACE, StringUtils.strip(StringUtilsTest.WHITESPACE, ""));
72      }
73  
74      @Test
75      public void testStripAccents() {
76          final String cue = "\u00C7\u00FA\u00EA";
77          assertEquals("Cue", StringUtils.stripAccents(cue), "Failed to strip accents from " + cue);
78  
79          final String lots = "\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C7\u00C8\u00C9" +
80                        "\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D1\u00D2\u00D3" +
81                        "\u00D4\u00D5\u00D6\u00D9\u00DA\u00DB\u00DC\u00DD";
82          assertEquals("AAAAAACEEEEIIIINOOOOOUUUUY",
83                  StringUtils.stripAccents(lots),
84                  "Failed to strip accents from " + lots);
85  
86          assertNull(StringUtils.stripAccents(null), "Failed null safety");
87          assertEquals("", StringUtils.stripAccents(""), "Failed empty String");
88          assertEquals("control", StringUtils.stripAccents("control"), "Failed to handle non-accented text");
89          assertEquals("eclair", StringUtils.stripAccents("\u00E9clair"), "Failed to handle easy example");
90          assertEquals("ALOSZZCN aloszzcn", StringUtils.stripAccents("\u0104\u0141\u00D3\u015A\u017B\u0179\u0106\u0143 "
91                  + "\u0105\u0142\u00F3\u015B\u017C\u017A\u0107\u0144"));
92      }
93  
94      @Test
95      @Disabled
96      public void testStripAccents_Korean() {
97          // LANG-1655
98          final String input = "잊지마 넌 흐린 어둠사이 왼손으로 그린 별 하나";
99          assertEquals(input, StringUtils.stripAccents(input), "Failed to handle non-accented text");
100 
101     }
102 
103     @Test
104     public void testStripAll() {
105         // test stripAll method, merely an array version of the above strip
106         final String[] empty = {};
107         final String[] fooSpace = { "  "+FOO+"  ", "  "+FOO, FOO+"  " };
108         final String[] fooDots = { ".."+FOO+"..", ".."+FOO, FOO+".." };
109         final String[] foo = { FOO, FOO, FOO };
110 
111         assertNull(StringUtils.stripAll((String[]) null));
112         // Additional varargs tests
113         assertArrayEquals(empty, StringUtils.stripAll()); // empty array
114         assertArrayEquals(new String[]{null}, StringUtils.stripAll((String) null)); // == new String[]{null}
115 
116         assertArrayEquals(empty, StringUtils.stripAll(empty));
117         assertArrayEquals(foo, StringUtils.stripAll(fooSpace));
118 
119         assertNull(StringUtils.stripAll(null, null));
120         assertArrayEquals(foo, StringUtils.stripAll(fooSpace, null));
121         assertArrayEquals(foo, StringUtils.stripAll(fooDots, "."));
122     }
123 
124     @Test
125     public void testStripEnd_StringString() {
126         // null stripEnd
127         assertNull(StringUtils.stripEnd(null, null));
128         assertEquals("", StringUtils.stripEnd("", null));
129         assertEquals("", StringUtils.stripEnd("        ", null));
130         assertEquals("  abc", StringUtils.stripEnd("  abc  ", null));
131         assertEquals(StringUtilsTest.WHITESPACE + StringUtilsTest.NON_WHITESPACE,
132             StringUtils.stripEnd(StringUtilsTest.WHITESPACE + StringUtilsTest.NON_WHITESPACE + StringUtilsTest.WHITESPACE, null));
133 
134         // "" stripEnd
135         assertNull(StringUtils.stripEnd(null, ""));
136         assertEquals("", StringUtils.stripEnd("", ""));
137         assertEquals("        ", StringUtils.stripEnd("        ", ""));
138         assertEquals("  abc  ", StringUtils.stripEnd("  abc  ", ""));
139         assertEquals(StringUtilsTest.WHITESPACE, StringUtils.stripEnd(StringUtilsTest.WHITESPACE, ""));
140 
141         // " " stripEnd
142         assertNull(StringUtils.stripEnd(null, " "));
143         assertEquals("", StringUtils.stripEnd("", " "));
144         assertEquals("", StringUtils.stripEnd("        ", " "));
145         assertEquals("  abc", StringUtils.stripEnd("  abc  ", " "));
146 
147         // "ab" stripEnd
148         assertNull(StringUtils.stripEnd(null, "ab"));
149         assertEquals("", StringUtils.stripEnd("", "ab"));
150         assertEquals("        ", StringUtils.stripEnd("        ", "ab"));
151         assertEquals("  abc  ", StringUtils.stripEnd("  abc  ", "ab"));
152         assertEquals("abc", StringUtils.stripEnd("abcabab", "ab"));
153         assertEquals(StringUtilsTest.WHITESPACE, StringUtils.stripEnd(StringUtilsTest.WHITESPACE, ""));
154     }
155 
156     @Test
157     public void testStripStart_StringString() {
158         // null stripStart
159         assertNull(StringUtils.stripStart(null, null));
160         assertEquals("", StringUtils.stripStart("", null));
161         assertEquals("", StringUtils.stripStart("        ", null));
162         assertEquals("abc  ", StringUtils.stripStart("  abc  ", null));
163         assertEquals(StringUtilsTest.NON_WHITESPACE + StringUtilsTest.WHITESPACE,
164             StringUtils.stripStart(StringUtilsTest.WHITESPACE + StringUtilsTest.NON_WHITESPACE + StringUtilsTest.WHITESPACE, null));
165 
166         // "" stripStart
167         assertNull(StringUtils.stripStart(null, ""));
168         assertEquals("", StringUtils.stripStart("", ""));
169         assertEquals("        ", StringUtils.stripStart("        ", ""));
170         assertEquals("  abc  ", StringUtils.stripStart("  abc  ", ""));
171         assertEquals(StringUtilsTest.WHITESPACE, StringUtils.stripStart(StringUtilsTest.WHITESPACE, ""));
172 
173         // " " stripStart
174         assertNull(StringUtils.stripStart(null, " "));
175         assertEquals("", StringUtils.stripStart("", " "));
176         assertEquals("", StringUtils.stripStart("        ", " "));
177         assertEquals("abc  ", StringUtils.stripStart("  abc  ", " "));
178 
179         // "ab" stripStart
180         assertNull(StringUtils.stripStart(null, "ab"));
181         assertEquals("", StringUtils.stripStart("", "ab"));
182         assertEquals("        ", StringUtils.stripStart("        ", "ab"));
183         assertEquals("  abc  ", StringUtils.stripStart("  abc  ", "ab"));
184         assertEquals("cabab", StringUtils.stripStart("abcabab", "ab"));
185         assertEquals(StringUtilsTest.WHITESPACE, StringUtils.stripStart(StringUtilsTest.WHITESPACE, ""));
186     }
187 
188     @Test
189     public void testStripToEmpty_String() {
190         assertEquals("", StringUtils.stripToEmpty(null));
191         assertEquals("", StringUtils.stripToEmpty(""));
192         assertEquals("", StringUtils.stripToEmpty("        "));
193         assertEquals("", StringUtils.stripToEmpty(StringUtilsTest.WHITESPACE));
194         assertEquals("ab c", StringUtils.stripToEmpty("  ab c  "));
195         assertEquals(StringUtilsTest.NON_WHITESPACE,
196             StringUtils.stripToEmpty(StringUtilsTest.WHITESPACE + StringUtilsTest.NON_WHITESPACE + StringUtilsTest.WHITESPACE));
197     }
198 
199     @Test
200     public void testStripToNull_String() {
201         assertNull(StringUtils.stripToNull(null));
202         assertNull(StringUtils.stripToNull(""));
203         assertNull(StringUtils.stripToNull("        "));
204         assertNull(StringUtils.stripToNull(StringUtilsTest.WHITESPACE));
205         assertEquals("ab c", StringUtils.stripToNull("  ab c  "));
206         assertEquals(StringUtilsTest.NON_WHITESPACE,
207             StringUtils.stripToNull(StringUtilsTest.WHITESPACE + StringUtilsTest.NON_WHITESPACE + StringUtilsTest.WHITESPACE));
208     }
209 
210     @Test
211     public void testTrim() {
212         assertEquals(FOO, StringUtils.trim(FOO + "  "));
213         assertEquals(FOO, StringUtils.trim(" " + FOO + "  "));
214         assertEquals(FOO, StringUtils.trim(" " + FOO));
215         assertEquals(FOO, StringUtils.trim(FOO + ""));
216         assertEquals("", StringUtils.trim(" \t\r\n\b "));
217         assertEquals("", StringUtils.trim(StringUtilsTest.TRIMMABLE));
218         assertEquals(StringUtilsTest.NON_TRIMMABLE, StringUtils.trim(StringUtilsTest.NON_TRIMMABLE));
219         assertEquals("", StringUtils.trim(""));
220         assertNull(StringUtils.trim(null));
221     }
222 
223     @Test
224     public void testTrimToEmpty() {
225         assertEquals(FOO, StringUtils.trimToEmpty(FOO + "  "));
226         assertEquals(FOO, StringUtils.trimToEmpty(" " + FOO + "  "));
227         assertEquals(FOO, StringUtils.trimToEmpty(" " + FOO));
228         assertEquals(FOO, StringUtils.trimToEmpty(FOO + ""));
229         assertEquals("", StringUtils.trimToEmpty(" \t\r\n\b "));
230         assertEquals("", StringUtils.trimToEmpty(StringUtilsTest.TRIMMABLE));
231         assertEquals(StringUtilsTest.NON_TRIMMABLE, StringUtils.trimToEmpty(StringUtilsTest.NON_TRIMMABLE));
232         assertEquals("", StringUtils.trimToEmpty(""));
233         assertEquals("", StringUtils.trimToEmpty(null));
234     }
235 
236     @Test
237     public void testTrimToNull() {
238         assertEquals(FOO, StringUtils.trimToNull(FOO + "  "));
239         assertEquals(FOO, StringUtils.trimToNull(" " + FOO + "  "));
240         assertEquals(FOO, StringUtils.trimToNull(" " + FOO));
241         assertEquals(FOO, StringUtils.trimToNull(FOO + ""));
242         assertNull(StringUtils.trimToNull(" \t\r\n\b "));
243         assertNull(StringUtils.trimToNull(StringUtilsTest.TRIMMABLE));
244         assertEquals(StringUtilsTest.NON_TRIMMABLE, StringUtils.trimToNull(StringUtilsTest.NON_TRIMMABLE));
245         assertNull(StringUtils.trimToNull(""));
246         assertNull(StringUtils.trimToNull(null));
247     }
248 }