1 package net.objectlab.kit.util;
2
3 import static org.assertj.core.api.Assertions.assertThat;
4 import static org.junit.Assert.fail;
5
6 import java.math.BigDecimal;
7 import java.util.TimeZone;
8 import java.util.function.Consumer;
9
10 import org.junit.After;
11 import org.junit.Before;
12 import org.junit.Test;
13
14 public class StringUtilTest {
15 private TimeZone tzBefore;
16
17 @Before
18 public void setUp() {
19 tzBefore = TimeZone.getDefault();
20
21 TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
22 }
23
24 @After
25 public void tearDown() {
26
27 TimeZone.setDefault(tzBefore);
28 }
29
30 @Test
31 public void testCompareTo() {
32 assertThat(StringUtil.compareTo(null, null)).isEqualTo(0);
33 assertThat(StringUtil.compareTo("A", null)).isEqualTo(1);
34 assertThat(StringUtil.compareTo(null, "B")).isEqualTo(-1);
35 assertThat(StringUtil.compareTo("A", "B")).isEqualTo(-1);
36 assertThat(StringUtil.compareTo("XA", "B")).isEqualTo(22);
37 assertThat(StringUtil.compareTo("XA", "XA")).isEqualTo(0);
38 }
39
40 @Test
41 public void testRemoveTrailingChar() {
42 assertThat(StringUtil.removeTrailingChar(null, ' ')).isNull();
43 assertThat(StringUtil.removeTrailingChar("", ' ')).isEmpty();
44 assertThat(StringUtil.removeTrailingChar("Hello ", ' ')).isEqualToIgnoringCase("Hello");
45 assertThat(StringUtil.removeTrailingChar("Hello ", ' ')).isEqualToIgnoringCase("Hello");
46 assertThat(StringUtil.removeTrailingChar(" Hello ", ' ')).isEqualToIgnoringCase(" Hello");
47 assertThat(StringUtil.removeTrailingChar(" Hellooo", 'o')).isEqualToIgnoringCase(" Hell");
48 assertThat(StringUtil.removeTrailingChar(" Hollooo", 'o')).isEqualToIgnoringCase(" Holl");
49 }
50
51 @Test
52 public void testReplaceCRToken() {
53 assertThat(StringUtil.replaceCRToken(null)).isNull();
54 assertThat(StringUtil.replaceCRToken("Hello")).isEqualTo("Hello");
55 assertThat(StringUtil.replaceCRToken("Hello%CR%")).isEqualTo("Hello" + System.getProperty("line.separator"));
56 assertThat(StringUtil.replaceCRToken("Hel%CR%lo")).isEqualTo("Hel" + System.getProperty("line.separator") + "lo");
57 }
58
59 @Test
60 public void testToUpperCase() {
61 assertThat(StringUtil.toUpperCase(null)).isNull();
62 assertThat(StringUtil.toUpperCase("Hi")).isEqualTo("HI");
63 assertThat(StringUtil.toUpperCase("HeLLo")).isEqualTo("HELLO");
64 }
65
66 @Test
67 public void testIsNotBlank() {
68 assertThat(StringUtil.isNotBlank(null)).isFalse();
69 assertThat(StringUtil.isNotBlank("")).isFalse();
70 assertThat(StringUtil.isNotBlank(" ")).isFalse();
71 assertThat(StringUtil.isNotBlank(" X")).isTrue();
72 assertThat(StringUtil.isNotBlank(new Object())).isFalse();
73 assertThat(StringUtil.isNotBlank(BigDecimal.ONE)).isFalse();
74 }
75
76
77
78
79 @Test
80 public void testDefaultFormatDatetime() {
81 assertThat(StringUtil.defaultFormatDatetime(null)).isNull();
82
83 }
84
85
86
87
88 @Test
89 public void testDefaultFileFormatTimestamp() {
90 assertThat(StringUtil.defaultFileFormatTimestamp(null)).isNull();
91
92 }
93
94 @Test
95 public void testReplace() {
96 assertThat(StringUtil.replace(null, null, null)).isNull();
97 assertThat(StringUtil.replace("hi", null, null)).isNull();
98 assertThat(StringUtil.replace("", null, null)).isNull();
99 assertThat(StringUtil.replace("hi", "ho", null)).isNull();
100 assertThat(StringUtil.replace("", "", null)).isNull();
101 assertThat(StringUtil.replace("hi", "Ho", "")).isEmpty();
102 assertThat(StringUtil.replace("", "", "")).isEmpty();
103 assertThat(StringUtil.replace(null, null, "Hello")).isEqualTo("Hello");
104 assertThat(StringUtil.replace("", null, "Hello")).isEqualTo("Hello");
105 assertThat(StringUtil.replace(null, "", "Hello")).isEqualTo("Hello");
106 assertThat(StringUtil.replace("", "", "Hello")).isEqualTo("Hello");
107 assertThat(StringUtil.replace("H", "Ti", "Hello")).isEqualTo("Tiello");
108 assertThat(StringUtil.replace("WW", "Ti", "Hello")).isEqualTo("Hello");
109 assertThat(StringUtil.replace("l", "Ti", "Hello")).isEqualTo("HeTiTio");
110 assertThat(StringUtil.replace("l", null, "Hello")).isEqualTo("Henullnullo");
111 assertThat(StringUtil.replace(null, "@@", "Hello")).isEqualTo("Hello");
112 }
113
114 @Test
115 public void testTrimAndUpperCase() {
116 assertThat(StringUtil.trimAndUpperCase(null)).isNull();
117 assertThat(StringUtil.trimAndUpperCase("")).isEmpty();
118 assertThat(StringUtil.trimAndUpperCase("hi")).isEqualTo("HI");
119 assertThat(StringUtil.trimAndUpperCase(" hi")).isEqualTo("HI");
120 assertThat(StringUtil.trimAndUpperCase(" hi ")).isEqualTo("HI");
121 assertThat(StringUtil.trimAndUpperCase(" hi ")).isEqualTo("HI");
122 }
123
124 @Test
125 public void testToLowerCaseString() {
126 assertThat(StringUtil.toLowerCase((String) null)).isNull();
127 assertThat(StringUtil.toLowerCase("")).isEmpty();
128 assertThat(StringUtil.toLowerCase("hi")).isEqualTo("hi");
129 assertThat(StringUtil.toLowerCase(" hI")).isEqualTo(" hi");
130 assertThat(StringUtil.toLowerCase(" Hi HO ")).isEqualTo(" hi ho ");
131 assertThat(StringUtil.toLowerCase(" hi ")).isEqualTo(" hi ");
132 }
133
134
135
136
137
138
139
140
141
142
143
144 @Test
145 public void testSingleQuote() {
146 assertThat(StringUtil.singleQuote("")).isEqualTo("''");
147 assertThat(StringUtil.singleQuote(null)).isEqualTo("''");
148 assertThat(StringUtil.singleQuote("Hi World")).isEqualTo("'Hi World'");
149 assertThat(StringUtil.singleQuote(" Hi World")).isEqualTo("' Hi World'");
150 }
151
152 @Test
153 public void testNoneBlank() {
154 assertThat(StringUtil.noneBlank("hi")).isTrue();
155 assertThat(StringUtil.noneBlank("hi", "ho", "World")).isTrue();
156 assertThat(StringUtil.noneBlank("hi", "ho", null, "World")).isFalse();
157 assertThat(StringUtil.noneBlank("hi", "ho", "", "World")).isFalse();
158 assertThat(StringUtil.noneBlank(null)).isFalse();
159 assertThat(StringUtil.noneBlank("")).isFalse();
160 }
161
162 @Test
163 public void testTrim() {
164 assertThat(StringUtil.trim(null)).isNull();
165 assertThat(StringUtil.trim("")).isEmpty();
166 assertThat(StringUtil.trim(" ")).isEmpty();
167 assertThat(StringUtil.trim(" hi ")).isEqualTo("hi");
168 }
169
170 @Test
171 public void testToStringObject() {
172 assertThat(StringUtil.toString(null)).isNull();
173 assertThat(StringUtil.toString("")).isEqualTo("");
174 assertThat(StringUtil.toString("hi")).isEqualTo("hi");
175 assertThat(StringUtil.toString(BigDecimal.TEN)).isEqualTo("10");
176 }
177
178 @Test
179 public void testToStringOrEmpty() {
180 assertThat(StringUtil.toStringOrEmpty(null)).isEqualTo("");
181 assertThat(StringUtil.toStringOrEmpty("")).isEqualTo("");
182 assertThat(StringUtil.toStringOrEmpty("hi")).isEqualTo("hi");
183 assertThat(StringUtil.toStringOrEmpty(BigDecimal.TEN)).isEqualTo("10");
184 }
185
186 @Test
187 public void testEmptyIfNull() {
188 assertThat(StringUtil.emptyIfNull(null)).isEmpty();
189 assertThat(StringUtil.emptyIfNull("")).isEmpty();
190 assertThat(StringUtil.emptyIfNull("Hi")).isEqualTo("Hi");
191 }
192
193 @Test
194 public void testConcat() {
195 assertThat(StringUtil.concat(null)).isEmpty();
196 assertThat(StringUtil.concat("")).isEmpty();
197 assertThat(StringUtil.concat("h", "o", "World")).isEqualTo("hoWorld");
198 assertThat(StringUtil.concat("h", null, "World")).isEqualTo("hnullWorld");
199 assertThat(StringUtil.concat("h", null, "World", "")).isEqualTo("hnullWorld");
200 assertThat(StringUtil.concat("h", null, "World", null)).isEqualTo("hnullWorldnull");
201 }
202
203 @Test
204 public void testConcatWithSpaces() {
205 assertThat(StringUtil.concatWithSpaces(null)).isEmpty();
206 assertThat(StringUtil.concatWithSpaces("")).isEmpty();
207 assertThat(StringUtil.concatWithSpaces("h", "o", "World")).isEqualTo("h o World");
208 assertThat(StringUtil.concatWithSpaces("h", null, "World")).isEqualTo("h null World");
209 assertThat(StringUtil.concatWithSpaces("h", null, "World", "")).isEqualTo("h null World ");
210 assertThat(StringUtil.concatWithSpaces("h", null, "World", null)).isEqualTo("h null World null");
211 }
212
213 @Test
214 public void testIsWildcardOrNull() {
215 assertThat(StringUtil.isWildcardOrNull(null)).isTrue();
216 assertThat(StringUtil.isWildcardOrNull("")).isFalse();
217 assertThat(StringUtil.isWildcardOrNull("*")).isTrue();
218 assertThat(StringUtil.isWildcardOrNull("**")).isFalse();
219 assertThat(StringUtil.isWildcardOrNull(" ")).isFalse();
220 assertThat(StringUtil.isWildcardOrNull(" Hello ")).isFalse();
221 }
222
223 @Test
224 public void testBoxify() {
225 assertThat(StringUtil.boxify('+', null)).isEmpty();
226 assertThat(StringUtil.boxify('+', "")).isEmpty();
227 assertThat(StringUtil.boxify('+', "X")).isEqualTo(System.lineSeparator() + "+++++" + System.lineSeparator()
228 + "+ X +" + System.lineSeparator()
229 + "+++++" + System.lineSeparator());
230
231 assertThat(StringUtil.boxify((char) 0, "Hi")).isEmpty();
232 }
233
234 @Test
235 public void testIfNotBlank() {
236 assertThat(StringUtil.ifNotBlank(null, (t) -> fail("null should not have been called"))).isFalse();
237 assertThat(StringUtil.ifNotBlank("", (t) -> fail("Empty should not have been called"))).isFalse();
238 assertThat(StringUtil.ifNotBlank("Hello", new Consumer<String>() {
239 @Override
240 public void accept(String t) {
241 }
242 })).isTrue();
243 }
244
245 @Test
246 public void testAllEquals() {
247 assertThat(StringUtil.allEquals(null, null)).isTrue();
248 assertThat(StringUtil.allEquals(null, null, null)).isTrue();
249 assertThat(StringUtil.allEquals("", "", "")).isTrue();
250 assertThat(StringUtil.allEquals("", "", " ")).isFalse();
251 assertThat(StringUtil.allEquals(" ", " ", " ")).isTrue();
252 assertThat(StringUtil.allEquals(" ", null)).isFalse();
253 assertThat(StringUtil.allEquals(" ", null, null)).isFalse();
254 assertThat(StringUtil.allEquals(" ", null, " ")).isFalse();
255 assertThat(StringUtil.allEquals("X", null, "X")).isFalse();
256 assertThat(StringUtil.allEquals("X", "X", "X")).isTrue();
257 assertThat(StringUtil.allEquals(null, "X", "X")).isFalse();
258 }
259
260 @Test
261 public void testEqualsAnyIgnoreCaseStringStringArray() {
262 assertThat(StringUtil.equalsAnyIgnoreCase(null, null, null)).isTrue();
263 assertThat(StringUtil.equalsAnyIgnoreCase(null, (String[]) null)).isTrue();
264 assertThat(StringUtil.equalsAnyIgnoreCase("X", (String[]) null)).isFalse();
265 assertThat(StringUtil.equalsAnyIgnoreCase(null, "", "")).isFalse();
266 assertThat(StringUtil.equalsAnyIgnoreCase(null, "", null)).isTrue();
267 assertThat(StringUtil.equalsAnyIgnoreCase("", "", null)).isTrue();
268 assertThat(StringUtil.equalsAnyIgnoreCase("X", "", null)).isFalse();
269 assertThat(StringUtil.equalsAnyIgnoreCase("X", "", null, "X")).isTrue();
270 assertThat(StringUtil.equalsAnyIgnoreCase("X", "", null, "x")).isTrue();
271 assertThat(StringUtil.equalsAnyIgnoreCase("X", "", "ABC", "X")).isTrue();
272 assertThat(StringUtil.equalsAnyIgnoreCase("X", "", "DEX", "x")).isTrue();
273 }
274
275 @Test
276 public void testEqualsAnyIgnoreCaseStringString() {
277 assertThat(StringUtil.equalsAnyIgnoreCase((String) null, (String) null)).isTrue();
278 assertThat(StringUtil.equalsAnyIgnoreCase((String) null, "Hi")).isFalse();
279 assertThat(StringUtil.equalsAnyIgnoreCase("*", "Hi")).isTrue();
280 assertThat(StringUtil.equalsAnyIgnoreCase("Hi", "*")).isFalse();
281 assertThat(StringUtil.equalsAnyIgnoreCase("Hi", "NO")).isFalse();
282 assertThat(StringUtil.equalsAnyIgnoreCase("Hi", "Hi")).isTrue();
283 assertThat(StringUtil.equalsAnyIgnoreCase("Hi", "HI")).isTrue();
284 assertThat(StringUtil.equalsAnyIgnoreCase(null, "HI")).isFalse();
285 assertThat(StringUtil.equalsAnyIgnoreCase("Hi", (String) null)).isFalse();
286 }
287
288 @Test
289 public void testReplaceTokenStringStringString() {
290 assertThat(StringUtil.replaceToken(null, null, null)).isNull();
291 assertThat(StringUtil.replaceToken("", null, null)).isEmpty();
292 assertThat(StringUtil.replaceToken("", "", null)).isEmpty();
293 assertThat(StringUtil.replaceToken("", "", "")).isEmpty();
294 assertThat(StringUtil.replaceToken("Hello", "YO", "!")).isEqualTo("Hello");
295 assertThat(StringUtil.replaceToken("Hello %YO%", "YO", "you")).isEqualTo("Hello you");
296 assertThat(StringUtil.replaceToken("Hello %YO%", "YI", "you")).isEqualTo("Hello %YO%");
297 assertThat(StringUtil.replaceToken("Hello %YO%", "YO", "")).isEqualTo("Hello ");
298 assertThat(StringUtil.replaceToken("Hello %YO%", "YO", null)).isEqualTo("Hello null");
299 }
300
301 @Test
302 public void testReplaceTokenStringStringObject() {
303 assertThat(StringUtil.replaceToken(null, null, null)).isNull();
304 assertThat(StringUtil.replaceToken("", null, null)).isEmpty();
305 assertThat(StringUtil.replaceToken("", "", null)).isEmpty();
306 assertThat(StringUtil.replaceToken(null, "", "")).isNull();
307 assertThat(StringUtil.replaceToken(null, "A", "BC")).isNull();
308 assertThat(StringUtil.replaceToken("Hello %YO%", "YO", Long.valueOf(1234))).isEqualTo("Hello 1234");
309 assertThat(StringUtil.replaceToken("Hello %YO%", "YO", (Object) null)).isEqualTo("Hello null");
310 assertThat(StringUtil.replaceToken("Hello %YO%", "YU", (Object) null)).isEqualTo("Hello %YO%");
311 }
312
313 @Test
314 public void testEqualsIgnoreCaseOrValueIsWildcard() {
315 assertThat(StringUtil.equalsIgnoreCaseOrValueIsWildcard(null, null)).isTrue();
316 assertThat(StringUtil.equalsIgnoreCaseOrValueIsWildcard("", "")).isTrue();
317 assertThat(StringUtil.equalsIgnoreCaseOrValueIsWildcard("", "A")).isFalse();
318 assertThat(StringUtil.equalsIgnoreCaseOrValueIsWildcard(null, "A")).isFalse();
319 assertThat(StringUtil.equalsIgnoreCaseOrValueIsWildcard("", null)).isFalse();
320 assertThat(StringUtil.equalsIgnoreCaseOrValueIsWildcard("A", null)).isFalse();
321 assertThat(StringUtil.equalsIgnoreCaseOrValueIsWildcard("*", null)).isTrue();
322 assertThat(StringUtil.equalsIgnoreCaseOrValueIsWildcard("*", "")).isTrue();
323 assertThat(StringUtil.equalsIgnoreCaseOrValueIsWildcard("ABC", "*")).isFalse();
324 assertThat(StringUtil.equalsIgnoreCaseOrValueIsWildcard("aBC", "ABC")).isTrue();
325 assertThat(StringUtil.equalsIgnoreCaseOrValueIsWildcard("*", "ABC")).isTrue();
326 assertThat(StringUtil.equalsIgnoreCaseOrValueIsWildcard("**", "ABC")).isFalse();
327 assertThat(StringUtil.equalsIgnoreCaseOrValueIsWildcard("AB C", "ab c")).isTrue();
328 }
329
330 @Test
331 public void testWrapText() {
332 assertThat(StringUtil.wrapText(null, "#", 5)).isNull();
333 assertThat(StringUtil.wrapText("", "#", 5)).isEmpty();
334 assertThat(StringUtil.wrapText("1234", "#", 5)).isEqualTo("1234");
335 assertThat(StringUtil.wrapText("12345 6789", "#", 5)).isEqualTo("12345#6789");
336 assertThat(StringUtil.wrapText("123456 789", "#", 5)).isEqualTo("123456#789");
337 assertThat(StringUtil.wrapText("12345 789101 1213", "#", 5)).isEqualTo("12345#789101#1213");
338 assertThat(StringUtil.wrapText("12345 789101 12134", "#", 5)).isEqualTo("12345#789101#12134");
339 assertThat(StringUtil.wrapText("12345 789101 12134 ", "#", 5)).isEqualTo("12345#789101#12134#");
340 assertThat(StringUtil.wrapText(" 12345 789101 12134 ", "#", 5)).isEqualTo("#12345#789101#12134#");
341 assertThat(StringUtil.wrapText(" 12345 789101 12134 ", "#", 5)).isEqualTo("#12345#789101##12134#");
342 assertThat(StringUtil.wrapText("123345#6789", "#", 5)).isEqualTo("123345#6789");
343 }
344
345 @Test
346 public void testProcessCaseTreatment() {
347 assertThat(StringUtil.processCaseTreatment(null, CaseTreatment.LOWER_CASE)).isNull();
348 assertThat(StringUtil.processCaseTreatment(null, CaseTreatment.UNCHANGED)).isNull();
349 assertThat(StringUtil.processCaseTreatment(null, CaseTreatment.UPPER_CASE)).isNull();
350
351 assertThat(StringUtil.processCaseTreatment(" Hello World ", CaseTreatment.LOWER_CASE)).isEqualTo(" hello world ");
352 assertThat(StringUtil.processCaseTreatment(" Hello World ", CaseTreatment.UNCHANGED)).isEqualTo(" Hello World ");
353 assertThat(StringUtil.processCaseTreatment(" Hello World ", CaseTreatment.UPPER_CASE)).isEqualTo(" HELLO WORLD ");
354
355 assertThat(StringUtil.processCaseTreatment("", CaseTreatment.LOWER_CASE)).isEmpty();
356 assertThat(StringUtil.processCaseTreatment("", CaseTreatment.UNCHANGED)).isEmpty();
357 assertThat(StringUtil.processCaseTreatment("", CaseTreatment.UPPER_CASE)).isEmpty();
358 }
359
360 @Test
361 public void testAnyEmpty() {
362 assertThat(StringUtil.anyEmpty()).isTrue();
363 assertThat(StringUtil.anyEmpty(null)).isTrue();
364 assertThat(StringUtil.anyEmpty(null, null)).isTrue();
365 assertThat(StringUtil.anyEmpty("", null)).isTrue();
366 assertThat(StringUtil.anyEmpty("", "")).isTrue();
367 assertThat(StringUtil.anyEmpty("X", "X")).isFalse();
368 assertThat(StringUtil.anyEmpty("X", "X", null)).isTrue();
369 assertThat(StringUtil.anyEmpty("X", "X", "")).isTrue();
370 }
371
372 @Test
373 public void testReturnIfNotNull() {
374 assertThat(StringUtil.returnIfNotNull(null, null)).isNull();
375 assertThat(StringUtil.returnIfNotNull(null, "")).isEmpty();
376 assertThat(StringUtil.returnIfNotNull(null, "ABC")).isEqualTo("ABC");
377 assertThat(StringUtil.returnIfNotNull("", "ABC")).isEqualTo("");
378 assertThat(StringUtil.returnIfNotNull("DEF", "ABC")).isEqualTo("DEF");
379 assertThat(StringUtil.returnIfNotNull("DEF", null)).isEqualTo("DEF");
380 }
381
382 @Test
383 public void testFirstCharToUpper() {
384 assertThat(StringUtil.firstCharToUpper(null)).isNull();
385 assertThat(StringUtil.firstCharToUpper("")).isEmpty();
386 assertThat(StringUtil.firstCharToUpper("A")).isEqualTo("A");
387 assertThat(StringUtil.firstCharToUpper("a")).isEqualTo("A");
388 assertThat(StringUtil.firstCharToUpper("belgium")).isEqualTo("Belgium");
389 assertThat(StringUtil.firstCharToUpper("belgium brussels")).isEqualTo("Belgium brussels");
390 assertThat(StringUtil.firstCharToUpper(" belgium brussels")).isEqualTo(" belgium brussels");
391 }
392
393 @Test
394 public void testPrepareForNumericParsing() {
395 assertThat(StringUtil.prepareForNumericParsing(null)).isEmpty();
396 assertThat(StringUtil.prepareForNumericParsing("")).isEmpty();
397 assertThat(StringUtil.prepareForNumericParsing("1234")).isEqualTo("1234");
398 assertThat(StringUtil.prepareForNumericParsing(" 1,234 ")).isEqualTo("1234");
399 assertThat(StringUtil.prepareForNumericParsing(" 1,234.00 ")).isEqualTo("1234.00");
400 assertThat(StringUtil.prepareForNumericParsing(" \"1,234.00\" ")).isEqualTo("1234.00");
401 }
402
403 @Test
404 public void testNullIfEmpty() {
405 assertThat(StringUtil.nullIfEmpty(null)).isNull();
406 assertThat(StringUtil.nullIfEmpty("")).isNull();
407 assertThat(StringUtil.nullIfEmpty("AB")).isEqualTo("AB");
408 }
409
410 @Test
411 public void testAsList() {
412 assertThat(StringUtil.asList(null, "||")).isEmpty();
413 assertThat(StringUtil.asList(new String[] { "A", "B" }, "||")).isEqualTo("A||B");
414 assertThat(StringUtil.asList(new String[] { "A", "B", "C" }, "||")).isEqualTo("A||B||C");
415 assertThat(StringUtil.asList(new String[] { "A", "", "C" }, "||")).isEqualTo("A||||C");
416 assertThat(StringUtil.asList(new String[] { "A", null, "C" }, "||")).isEqualTo("A||null||C");
417 }
418
419 }