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