1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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
28
29 class StringUtilsTrimStripTest extends AbstractLangTest {
30 private static final String FOO = "foo";
31
32 @Test
33 void testStripAccents() {
34 final String cue = "\u00C7\u00FA\u00EA";
35 assertEquals("Cue", StringUtils.stripAccents(cue), "Failed to strip accents from " + cue);
36
37 final String lots = "\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D1\u00D2\u00D3"
38 + "\u00D4\u00D5\u00D6\u00D9\u00DA\u00DB\u00DC\u00DD";
39 assertEquals("AAAAAACEEEEIIIINOOOOOUUUUY", StringUtils.stripAccents(lots), "Failed to strip accents from " + lots);
40
41 assertNull(StringUtils.stripAccents(null), "Failed null safety");
42 assertEquals("", StringUtils.stripAccents(""), "Failed empty String");
43 assertEquals("control", StringUtils.stripAccents("control"), "Failed to handle non-accented text");
44 assertEquals("eclair", StringUtils.stripAccents("\u00E9clair"), "Failed to handle easy example");
45 assertEquals("ALOSZZCND aloszzcnd",
46 StringUtils.stripAccents("\u0104\u0141\u00D3\u015A\u017B\u0179\u0106\u0143\u0110 \u0105\u0142\u00F3\u015B\u017C\u017A\u0107\u0144\u0111"));
47 assertEquals("The cafe\u2019s pinata gave me deja vu.", StringUtils.stripAccents("The caf\u00e9\u2019s pi\u00f1ata gave me d\u00e9j\u00e0 vu."),
48 "Failed to handle accented text");
49 assertEquals("fluid quest", StringUtils.stripAccents("\ufb02uid que\ufb06"), "Failed to handle ligatures");
50 assertEquals("a b c 1 2 3", StringUtils.stripAccents("\u1d43 \u1d47 \u1d9c \u00b9 \u00b2 \u00b3"), "Failed to handle superscript text");
51 assertEquals("math italic",
52 StringUtils.stripAccents("\uD835\uDC5A\uD835\uDC4E\uD835\uDC61\u210E \uD835\uDC56\uD835\uDC61\uD835\uDC4E\uD835\uDC59\uD835\uDC56\uD835\uDC50"),
53 "Failed to handle UTF32 example");
54 assertEquals("\uD83D\uDF01 \uD83D\uDF02 \uD83D\uDF03 \uD83D\uDF04", StringUtils.stripAccents("\uD83D\uDF01 \uD83D\uDF02 \uD83D\uDF03 \uD83D\uDF04"),
55 "Failed to handle non-accented text");
56 }
57
58 @Test
59 void testStripAccentsIWithBar() {
60 assertEquals("I i I i I", StringUtils.stripAccents("\u0197 \u0268 \u1D7B \u1DA4 \u1DA7"));
61 }
62
63 @Test
64 @Disabled
65 void testStripAccentsKorean() {
66
67 final String input = "\uC78A\uC9C0\uB9C8 \uB10C \uD750\uB9B0 \uC5B4\uB460\uC0AC\uC774 \uC67C\uC190\uC73C\uB85C \uADF8\uB9B0 \uBCC4 \uD558\uB098";
68 assertEquals(input, StringUtils.stripAccents(input), "Failed to handle Korean text");
69 }
70
71 @Test
72 void testStripAccentsTWithStroke() {
73 assertEquals("T t", StringUtils.stripAccents("\u0166 \u0167"));
74 }
75
76
77
78
79 @Test
80 void testStripAccentsUnicodeVulgarFractions() {
81
82 assertEquals("1â4", StringUtils.stripAccents("\u00BC"));
83
84 assertEquals("1â2", StringUtils.stripAccents("\u00BD"));
85
86 assertEquals("3â4", StringUtils.stripAccents("\u00BE"));
87 }
88
89 @Test
90 void testStripAccentsUWithBar() {
91 assertEquals("U u U u", StringUtils.stripAccents("\u0244 \u0289 \u1D7E \u1DB6"));
92 }
93
94 @Test
95 void testStripAll() {
96
97 final String[] empty = {};
98 final String[] fooSpace = { " " + FOO + " ", " " + FOO, FOO + " " };
99 final String[] fooDots = { ".." + FOO + "..", ".." + FOO, FOO + ".." };
100 final String[] foo = { FOO, FOO, FOO };
101
102 assertNull(StringUtils.stripAll((String[]) null));
103
104 assertArrayEquals(empty, StringUtils.stripAll());
105 assertArrayEquals(new String[] { null }, StringUtils.stripAll((String) null));
106
107 assertArrayEquals(empty, StringUtils.stripAll(empty));
108 assertArrayEquals(foo, StringUtils.stripAll(fooSpace));
109
110 assertNull(StringUtils.stripAll(null, null));
111 assertArrayEquals(foo, StringUtils.stripAll(fooSpace, null));
112 assertArrayEquals(foo, StringUtils.stripAll(fooDots, "."));
113 }
114
115 @Test
116 void testStripEndStringString() {
117
118 assertNull(StringUtils.stripEnd(null, null));
119 assertEquals("", StringUtils.stripEnd("", null));
120 assertEquals("", StringUtils.stripEnd(" ", null));
121 assertEquals(" abc", StringUtils.stripEnd(" abc ", null));
122 assertEquals(StringUtilsTest.WHITESPACE + StringUtilsTest.NON_WHITESPACE,
123 StringUtils.stripEnd(StringUtilsTest.WHITESPACE + StringUtilsTest.NON_WHITESPACE + StringUtilsTest.WHITESPACE, null));
124
125
126 assertNull(StringUtils.stripEnd(null, ""));
127 assertEquals("", StringUtils.stripEnd("", ""));
128 assertEquals(" ", StringUtils.stripEnd(" ", ""));
129 assertEquals(" abc ", StringUtils.stripEnd(" abc ", ""));
130 assertEquals(StringUtilsTest.WHITESPACE, StringUtils.stripEnd(StringUtilsTest.WHITESPACE, ""));
131
132
133 assertNull(StringUtils.stripEnd(null, " "));
134 assertEquals("", StringUtils.stripEnd("", " "));
135 assertEquals("", StringUtils.stripEnd(" ", " "));
136 assertEquals(" abc", StringUtils.stripEnd(" abc ", " "));
137
138
139 assertNull(StringUtils.stripEnd(null, "ab"));
140 assertEquals("", StringUtils.stripEnd("", "ab"));
141 assertEquals(" ", StringUtils.stripEnd(" ", "ab"));
142 assertEquals(" abc ", StringUtils.stripEnd(" abc ", "ab"));
143 assertEquals("abc", StringUtils.stripEnd("abcabab", "ab"));
144 assertEquals(StringUtilsTest.WHITESPACE, StringUtils.stripEnd(StringUtilsTest.WHITESPACE, ""));
145 }
146
147 @Test
148 void testStripStartStringString() {
149
150 assertNull(StringUtils.stripStart(null, null));
151 assertEquals("", StringUtils.stripStart("", null));
152 assertEquals("", StringUtils.stripStart(" ", null));
153 assertEquals("abc ", StringUtils.stripStart(" abc ", null));
154 assertEquals(StringUtilsTest.NON_WHITESPACE + StringUtilsTest.WHITESPACE,
155 StringUtils.stripStart(StringUtilsTest.WHITESPACE + StringUtilsTest.NON_WHITESPACE + StringUtilsTest.WHITESPACE, null));
156
157
158 assertNull(StringUtils.stripStart(null, ""));
159 assertEquals("", StringUtils.stripStart("", ""));
160 assertEquals(" ", StringUtils.stripStart(" ", ""));
161 assertEquals(" abc ", StringUtils.stripStart(" abc ", ""));
162 assertEquals(StringUtilsTest.WHITESPACE, StringUtils.stripStart(StringUtilsTest.WHITESPACE, ""));
163
164
165 assertNull(StringUtils.stripStart(null, " "));
166 assertEquals("", StringUtils.stripStart("", " "));
167 assertEquals("", StringUtils.stripStart(" ", " "));
168 assertEquals("abc ", StringUtils.stripStart(" abc ", " "));
169
170
171 assertNull(StringUtils.stripStart(null, "ab"));
172 assertEquals("", StringUtils.stripStart("", "ab"));
173 assertEquals(" ", StringUtils.stripStart(" ", "ab"));
174 assertEquals(" abc ", StringUtils.stripStart(" abc ", "ab"));
175 assertEquals("cabab", StringUtils.stripStart("abcabab", "ab"));
176 assertEquals(StringUtilsTest.WHITESPACE, StringUtils.stripStart(StringUtilsTest.WHITESPACE, ""));
177 }
178
179 @Test
180 void testStripString() {
181 assertNull(StringUtils.strip(null));
182 assertEquals("", StringUtils.strip(""));
183 assertEquals("", StringUtils.strip(" "));
184 assertEquals("abc", StringUtils.strip(" abc "));
185 assertEquals(StringUtilsTest.NON_WHITESPACE,
186 StringUtils.strip(StringUtilsTest.WHITESPACE + StringUtilsTest.NON_WHITESPACE + StringUtilsTest.WHITESPACE));
187 }
188
189 @Test
190 void testStripStringString() {
191
192 assertNull(StringUtils.strip(null, null));
193 assertEquals("", StringUtils.strip("", null));
194 assertEquals("", StringUtils.strip(" ", null));
195 assertEquals("abc", StringUtils.strip(" abc ", null));
196 assertEquals(StringUtilsTest.NON_WHITESPACE,
197 StringUtils.strip(StringUtilsTest.WHITESPACE + StringUtilsTest.NON_WHITESPACE + StringUtilsTest.WHITESPACE, null));
198
199
200 assertNull(StringUtils.strip(null, ""));
201 assertEquals("", StringUtils.strip("", ""));
202 assertEquals(" ", StringUtils.strip(" ", ""));
203 assertEquals(" abc ", StringUtils.strip(" abc ", ""));
204 assertEquals(StringUtilsTest.WHITESPACE, StringUtils.strip(StringUtilsTest.WHITESPACE, ""));
205
206
207 assertNull(StringUtils.strip(null, " "));
208 assertEquals("", StringUtils.strip("", " "));
209 assertEquals("", StringUtils.strip(" ", " "));
210 assertEquals("abc", StringUtils.strip(" abc ", " "));
211
212
213 assertNull(StringUtils.strip(null, "ab"));
214 assertEquals("", StringUtils.strip("", "ab"));
215 assertEquals(" ", StringUtils.strip(" ", "ab"));
216 assertEquals(" abc ", StringUtils.strip(" abc ", "ab"));
217 assertEquals("c", StringUtils.strip("abcabab", "ab"));
218 assertEquals(StringUtilsTest.WHITESPACE, StringUtils.strip(StringUtilsTest.WHITESPACE, ""));
219 }
220
221 @Test
222 void testStripToEmptyString() {
223 assertEquals("", StringUtils.stripToEmpty(null));
224 assertEquals("", StringUtils.stripToEmpty(""));
225 assertEquals("", StringUtils.stripToEmpty(" "));
226 assertEquals("", StringUtils.stripToEmpty(StringUtilsTest.WHITESPACE));
227 assertEquals("ab c", StringUtils.stripToEmpty(" ab c "));
228 assertEquals(StringUtilsTest.NON_WHITESPACE,
229 StringUtils.stripToEmpty(StringUtilsTest.WHITESPACE + StringUtilsTest.NON_WHITESPACE + StringUtilsTest.WHITESPACE));
230 }
231
232 @Test
233 void testStripToNullString() {
234 assertNull(StringUtils.stripToNull(null));
235 assertNull(StringUtils.stripToNull(""));
236 assertNull(StringUtils.stripToNull(" "));
237 assertNull(StringUtils.stripToNull(StringUtilsTest.WHITESPACE));
238 assertEquals("ab c", StringUtils.stripToNull(" ab c "));
239 assertEquals(StringUtilsTest.NON_WHITESPACE,
240 StringUtils.stripToNull(StringUtilsTest.WHITESPACE + StringUtilsTest.NON_WHITESPACE + StringUtilsTest.WHITESPACE));
241 }
242
243 @Test
244 void testTrim() {
245 assertEquals(FOO, StringUtils.trim(FOO + " "));
246 assertEquals(FOO, StringUtils.trim(" " + FOO + " "));
247 assertEquals(FOO, StringUtils.trim(" " + FOO));
248 assertEquals(FOO, StringUtils.trim(FOO + ""));
249 assertEquals("", StringUtils.trim(" \t\r\n\b "));
250 assertEquals("", StringUtils.trim(StringUtilsTest.TRIMMABLE));
251 assertEquals(StringUtilsTest.NON_TRIMMABLE, StringUtils.trim(StringUtilsTest.NON_TRIMMABLE));
252 assertEquals("", StringUtils.trim(""));
253 assertNull(StringUtils.trim(null));
254 }
255
256 @Test
257 void testTrimToEmpty() {
258 assertEquals(FOO, StringUtils.trimToEmpty(FOO + " "));
259 assertEquals(FOO, StringUtils.trimToEmpty(" " + FOO + " "));
260 assertEquals(FOO, StringUtils.trimToEmpty(" " + FOO));
261 assertEquals(FOO, StringUtils.trimToEmpty(FOO + ""));
262 assertEquals("", StringUtils.trimToEmpty(" \t\r\n\b "));
263 assertEquals("", StringUtils.trimToEmpty(StringUtilsTest.TRIMMABLE));
264 assertEquals(StringUtilsTest.NON_TRIMMABLE, StringUtils.trimToEmpty(StringUtilsTest.NON_TRIMMABLE));
265 assertEquals("", StringUtils.trimToEmpty(""));
266 assertEquals("", StringUtils.trimToEmpty(null));
267 }
268
269 @Test
270 void testTrimToNull() {
271 assertEquals(FOO, StringUtils.trimToNull(FOO + " "));
272 assertEquals(FOO, StringUtils.trimToNull(" " + FOO + " "));
273 assertEquals(FOO, StringUtils.trimToNull(" " + FOO));
274 assertEquals(FOO, StringUtils.trimToNull(FOO + ""));
275 assertNull(StringUtils.trimToNull(" \t\r\n\b "));
276 assertNull(StringUtils.trimToNull(StringUtilsTest.TRIMMABLE));
277 assertEquals(StringUtilsTest.NON_TRIMMABLE, StringUtils.trimToNull(StringUtilsTest.NON_TRIMMABLE));
278 assertNull(StringUtils.trimToNull(""));
279 assertNull(StringUtils.trimToNull(null));
280 }
281 }