1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.juneau.assertions;
18
19 import static org.apache.juneau.assertions.AssertionPredicates.ne;
20 import static org.apache.juneau.assertions.Assertions.*;
21 import static org.apache.juneau.common.utils.Utils.*;
22 import static org.junit.jupiter.api.Assertions.*;
23
24 import java.util.regex.*;
25
26 import org.apache.juneau.*;
27 import org.apache.juneau.json.*;
28 import org.junit.jupiter.api.*;
29
30 @Deprecated
31 class StringAssertion_Test extends TestBase {
32
33
34
35
36
37 private StringAssertion test(Object value) {
38 return assertString(value).setSilent();
39 }
40
41
42
43
44
45 @Test void a01_msg() {
46 assertThrows(BasicAssertionError.class, ()->test(null).setMsg("Foo {0}", 1).isExists(), "Foo 1");
47 assertThrows(RuntimeException.class, ()->test(null).setMsg("Foo {0}", 1).setThrowable(RuntimeException.class).isExists(), "Foo 1");
48 }
49
50 @Test void a02_stdout() {
51 test(null).setStdOut();
52 }
53
54 @Test void a03_javaStrings() {
55 test(null).asJavaStrings();
56 }
57
58
59
60
61
62 @Test void ba01a_asString() {
63 var x = "1";
64 var nil = n(String.class);
65 test(x).asString().is("1");
66 test(nil).asString().isNull();
67 }
68
69 @Test void ba01b_asString_wSerializer() {
70 var x = "1";
71 var nil = n(String.class);
72 var s = Json5Serializer.DEFAULT;
73 test(x).asString(s).is("'1'");
74 test(nil).asString(s).is("null");
75 }
76
77 @Test void ba01c_asString_wPredicate() {
78 var x1 = "1";
79 test(x1).asString(x -> "foo").is("foo");
80 }
81
82 @Test void ba02_asJson() {
83 var x = "1";
84 var nil = n(String.class);
85 test(x).asJson().is("'1'");
86 test(nil).asJson().is("null");
87 }
88
89 @Test void ba03_asJsonSorted() {
90 var x = "1";
91 var nil = n(String.class);
92 test(x).asJsonSorted().is("'1'");
93 test(nil).asJsonSorted().is("null");
94 }
95
96 @Test void ba04_apply() {
97 var x1 = "1";
98 var x2 = "2";
99 test(x1).asTransformed(x -> x2).is(x2);
100 }
101
102 @Test void bb01_replaceAll() {
103 var x = "foobar";
104 var nil = n(String.class);
105 test(x).asReplaceAll("fo+","bar").is("barbar").is("foobar");
106 test(nil).asReplaceAll("fo+","bar").isNull();
107 assertThrows(IllegalArgumentException.class, ()->test(x).asReplaceAll(null,""), "Argument 'regex' cannot be null.");
108 assertThrows(IllegalArgumentException.class, ()->test(x).asReplaceAll("",null), "Argument 'replacement' cannot be null.");
109 }
110
111 @Test void bb02_replace() {
112 var x = "foobar";
113 var nil = n(String.class);
114 test(x).asReplace("foo","bar").is("barbar").is("foobar");
115 test(nil).asReplace("foo","bar").isNull();
116 assertThrows(IllegalArgumentException.class, ()->test(x).asReplace(null,"bar").isNull(), "Argument 'target' cannot be null.");
117 assertThrows(IllegalArgumentException.class, ()->test(x).asReplace("foo",null).isNull(), "Argument 'replacement' cannot be null.");
118 }
119
120 @Test void bb03_urlDecode() {
121 var x = "foo%20bar";
122 var nil = n(String.class);
123 test(x).asUrlDecode().is("foo bar").is("foo%20bar");
124 test(nil).asUrlDecode().isNull();
125 }
126
127 @Test void bb04_lc() {
128 var x = "FOOBAR";
129 var nil = n(String.class);
130 test(x).asLc().is("foobar").is("FOOBAR");
131 test(nil).asLc().isNull();
132 }
133
134 @Test void bb05_uc() {
135 var x = "foobar";
136 var nil = n(String.class);
137 test(x).asUc().is("FOOBAR").is("foobar");
138 test(nil).asUc().isNull();
139 }
140
141 @Test void bb06_lines() {
142 var x = "foo\nbar";
143 var nil = n(String.class);
144 test(x).asLines().isHas("foo","bar");
145 test(nil).asLines().isNull();
146 }
147
148 @Test void bb07_oneLine() {
149 var x = "foo bar";
150 var nil = n(String.class);
151 test(x).asOneLine().is("foo bar");
152 test(nil).asOneLine().isNull();
153 }
154
155
156
157
158
159 @Test void ca01_exists() {
160 var x = "1";
161 var nil = n(String.class);
162 test(x).isExists().isExists();
163 assertThrows(BasicAssertionError.class, ()->test(nil).isExists(), "Value was null.");
164 }
165
166 @Test void ca02_isNull() {
167 var x = "1";
168 var nil = n(String.class);
169 test(nil).isNull();
170 assertThrows(BasicAssertionError.class, ()->test(x).isNull(), "Value was not null.");
171 }
172
173 @Test void ca03_isNotNull() {
174 var x = "1";
175 var nil = n(String.class);
176 test(x).isNotNull();
177 assertThrows(BasicAssertionError.class, ()->test(nil).isNotNull(), "Value was null.");
178 }
179
180 @Test void ca04a_is_T() {
181 var x1 = "1";
182 var x1a = "1";
183 var x2 = "2";
184 var nil = n(String.class);
185 test(x1).is(x1);
186 test(x1).is(x1a);
187 test(nil).is(nil);
188 assertThrown(()->test(x1).is(x2)).asMessage().asOneLine().is("String differed at position 0. Expect='2'. Actual='1'.");
189 assertThrown(()->test(x1).is(nil)).asMessage().asOneLine().is("String differed at position 0. Expect='null'. Actual='1'.");
190 assertThrown(()->test(nil).is(x2)).asMessage().asOneLine().is("String differed at position 0. Expect='2'. Actual='null'.");
191 }
192
193 @Test void ca04b_is_predicate() {
194 var x1 = "1";
195 test(x1).is(x->x.length()==1);
196 assertThrown(()->test(x1).is(x->x.length()==2)).asMessage().asOneLine().is("Unexpected value: '1'.");
197 assertThrown(()->test(x1).is(ne(x1))).asMessage().asOneLine().is("Value unexpectedly matched. Value='1'.");
198 }
199
200 @Test void ca05_isNot() {
201 var x1 = "1";
202 var x1a = "1";
203 var x2 = "2";
204 var nil = n(String.class);
205 test(x1).isNot(x2);
206 test(x1).isNot(nil);
207 test(nil).isNot(x1);
208 assertThrown(()->test(x1).isNot(x1a)).asMessage().asOneLine().is("String equaled unexpected. Value='1'.");
209 assertThrown(()->test(nil).isNot(nil)).asMessage().asOneLine().is("String equaled unexpected. Value='null'.");
210 }
211
212 @Test void ca06_isAny() {
213 var x1 = "1";
214 var x1a = "1";
215 var x2 = "2";
216 var nil = n(String.class);
217 test(x1).isAny(x1a, x2);
218 assertThrown(()->test(x1).isAny(x2)).asMessage().asOneLine().is("Expected value not found. Expect='[2]'. Actual='1'.");
219 assertThrown(()->test(x1).isAny()).asMessage().asOneLine().is("Expected value not found. Expect='[]'. Actual='1'.");
220 assertThrown(()->test(nil).isAny(x2)).asMessage().asOneLine().is("Expected value not found. Expect='[2]'. Actual='null'.");
221 }
222
223 @Test void ca07_isNotAny() {
224 var x1 = "1";
225 var x1a = "1";
226 var x2 = "2";
227 var nil = n(String.class);
228 test(x1).isNotAny(x2);
229 test(x1).isNotAny();
230 test(nil).isNotAny(x2);
231 assertThrown(()->test(x1).isNotAny(x1a)).asMessage().asOneLine().is("Unexpected value found. Unexpected='1'. Actual='1'.");
232 assertThrown(()->test(nil).isNotAny(nil)).asMessage().asOneLine().is("Unexpected value found. Unexpected='null'. Actual='null'.");
233 }
234
235 @Test void ca08_isSame() {
236 var x1 = new String("1");
237 var x1a = new String("1");
238 var nil = n(String.class);
239 test(x1).isSame(x1);
240 test(nil).isSame(nil);
241 assertThrown(()->test(x1).isSame(x1a)).asMessage().asOneLine().isMatches("Not the same value. Expect='1(String@*)'. Actual='1(String@*)'.");
242 assertThrown(()->test(nil).isSame(x1a)).asMessage().asOneLine().isMatches("Not the same value. Expect='1(String@*)'. Actual='null(null)'.");
243 assertThrown(()->test(x1).isSame(nil)).asMessage().asOneLine().isMatches("Not the same value. Expect='null(null)'. Actual='1(String@*)'.");
244 }
245
246 @Test void ca09_isSameJsonAs() {
247 var x1 = "1";
248 var x1a = "1";
249 var x2 = "2";
250 var nil = n(String.class);
251 test(x1).isSameJsonAs(x1a);
252 test(nil).isSameJsonAs(nil);
253 assertThrown(()->test(x1a).isSameJsonAs(x2)).asMessage().asOneLine().is("Unexpected comparison. Expect=''2''. Actual=''1''.");
254 assertThrown(()->test(nil).isSameJsonAs(x2)).asMessage().asOneLine().is("Unexpected comparison. Expect=''2''. Actual='null'.");
255 assertThrown(()->test(x1).isSameJsonAs(nil)).asMessage().asOneLine().is("Unexpected comparison. Expect='null'. Actual=''1''.");
256 }
257
258 @Test void ca10_isSameSortedJsonAs() {
259 var x1 = "1";
260 var x1a = "1";
261 var x2 = "2";
262 var nil = n(String.class);
263 test(x1).isSameSortedJsonAs(x1a);
264 test(nil).isSameSortedJsonAs(nil);
265 assertThrown(()->test(x1a).isSameSortedJsonAs(x2)).asMessage().asOneLine().is("Unexpected comparison. Expect=''2''. Actual=''1''.");
266 assertThrown(()->test(nil).isSameSortedJsonAs(x2)).asMessage().asOneLine().is("Unexpected comparison. Expect=''2''. Actual='null'.");
267 assertThrown(()->test(x1).isSameSortedJsonAs(nil)).asMessage().asOneLine().is("Unexpected comparison. Expect='null'. Actual=''1''.");
268 }
269
270 @Test void ca11_isSameSerializedAs() {
271 var x1 = "1";
272 var x1a = "1";
273 var x2 = "2";
274 var nil = n(String.class);
275 var s = Json5Serializer.DEFAULT;
276 test(x1).isSameSerializedAs(x1a, s);
277 test(nil).isSameSerializedAs(nil, s);
278 assertThrown(()->test(x1a).isSameSerializedAs(x2, s)).asMessage().asOneLine().is("Unexpected comparison. Expect=''2''. Actual=''1''.");
279 assertThrown(()->test(nil).isSameSerializedAs(x2, s)).asMessage().asOneLine().is("Unexpected comparison. Expect=''2''. Actual='null'.");
280 assertThrown(()->test(x1).isSameSerializedAs(nil, s)).asMessage().asOneLine().is("Unexpected comparison. Expect='null'. Actual=''1''.");
281 }
282
283 @Test void ca12_isType() {
284 var x = "1";
285 var nil = n(String.class);
286 test(x).isType(String.class);
287 test(x).isType(Object.class);
288 assertThrown(()->test(x).isType(Integer.class)).asMessage().asOneLine().is("Unexpected type. Expect='java.lang.Integer'. Actual='java.lang.String'.");
289 assertThrown(()->test(nil).isType(Integer.class)).asMessage().asOneLine().is("Value was null.");
290 assertThrown(()->test(x).isType(null)).asMessage().asOneLine().is("Argument 'parent' cannot be null.");
291 }
292
293 @Test void ca13_isExactType() {
294 var x = "1";
295 var nil = n(String.class);
296 test(x).isExactType(String.class);
297 assertThrown(()->test(x).isExactType(Object.class)).asMessage().asOneLine().is("Unexpected type. Expect='java.lang.Object'. Actual='java.lang.String'.");
298 assertThrown(()->test(x).isExactType(Integer.class)).asMessage().asOneLine().is("Unexpected type. Expect='java.lang.Integer'. Actual='java.lang.String'.");
299 assertThrown(()->test(nil).isExactType(Integer.class)).asMessage().asOneLine().is("Value was null.");
300 assertThrown(()->test(x).isExactType(null)).asMessage().asOneLine().is("Argument 'parent' cannot be null.");
301 }
302
303 @Test void ca14_isString() {
304 var x = "1";
305 var nil = n(String.class);
306
307 test(x).isString("1");
308 test(nil).isString(null);
309 assertThrown(()->test(x).isString("bad")).asMessage().asOneLine().is("String differed at position 0. Expect='bad'. Actual='1'.");
310 assertThrown(()->test(x).isString(null)).asMessage().asOneLine().is("String differed at position 0. Expect='null'. Actual='1'.");
311 assertThrown(()->test(nil).isString("bad")).asMessage().asOneLine().is("String differed at position 0. Expect='bad'. Actual='null'.");
312 }
313
314 @Test void ca15_isJson() {
315 var x = "1";
316 var nil = n(String.class);
317
318 test(x).isJson("'1'");
319 test(nil).isJson("null");
320 assertThrown(()->test(x).isJson("bad")).asMessage().asOneLine().is("String differed at position 0. Expect='bad'. Actual=''1''.");
321 assertThrown(()->test(x).isJson(null)).asMessage().asOneLine().is("String differed at position 0. Expect='null'. Actual=''1''.");
322 assertThrown(()->test(nil).isJson("bad")).asMessage().asOneLine().is("String differed at position 0. Expect='bad'. Actual='null'.");
323 }
324
325 @Test void cb01_isIc() {
326 var x = "foobar";
327 var nil = n(String.class);
328
329 test(x).isIc("FOOBAR");
330 assertThrown(()->test(x).isIc("FOOBAZ")).asMessage().asOneLine().is("String differed at position 5. Expect='FOOBAZ'. Actual='foobar'.");
331 assertThrown(()->test(nil).isIc("FOOBAZ")).asMessage().asOneLine().is("String differed at position 0. Expect='FOOBAZ'. Actual='null'.");
332 assertThrown(()->test(x).isIc(null)).asMessage().asOneLine().is("String differed at position 0. Expect='null'. Actual='foobar'.");
333 }
334
335 @Test void cb02_isNotIc() {
336 var x = "foobar";
337 var nil = n(String.class);
338
339 test(x).isNotIc("foobaz");
340 assertThrown(()->test(x).isNotIc("Foobar")).asMessage().asOneLine().is("String equaled unexpected. Value='foobar'.");
341 assertThrown(()->test(nil).isNotIc(null)).asMessage().asOneLine().is("String equaled unexpected. Value='null'.");
342 test(x).isNotIc(null);
343 test(nil).isNotIc("foobar");
344 }
345
346 @Test void cb03_isLines() {
347 var x = "foo\nbar\nbaz";
348 var nil = n(String.class);
349
350 test(x).isLines("foo","bar","baz");
351 assertThrows(IllegalArgumentException.class, ()->test(nil).isLines((String[])null), "Argument 'lines' cannot be null.");
352 assertThrows(BasicAssertionError.class, ()->test(nil).isLines((String)null), "Value was null.");
353 assertThrown(()->test(x).asJavaStrings().isLines("foo","bar","bar")).asMessage().asOneLine().is("String differed at position 10. Expect='foo\\nbar\\nbar'. Actual='foo\\nbar\\nbaz'.");
354 }
355
356 @Test void cb04_isSortedLines() {
357 var x1 = "foo\nbar\nbaz";
358 var x2 = "foo";
359 var empty = "";
360 var nil = n(String.class);
361
362 test(x1).isSortedLines("bar","foo","baz");
363 assertThrows(IllegalArgumentException.class, ()->test(nil).isSortedLines((String[])null), "Argument 'lines' cannot be null.");
364 test(empty).isSortedLines((String)null);
365 assertThrows(BasicAssertionError.class, ()->test(nil).isSortedLines(), "Value was null.");
366 assertThrown(()->test(x1).isSortedLines("bar","foo","bar")).asMessage().asOneLine().is("Expected string had different values at line 2. Expect='bar'. Actual='baz'.");
367 assertThrown(()->test(x1).isSortedLines("bar","foo")).asMessage().asOneLine().is("Expected string had different numbers of lines. Expect='2'. Actual='3'.");
368 assertThrows(BasicAssertionError.class, ()->test(nil).isSortedLines("foo"), "Value was null.");
369 assertThrown(()->test(x2).isSortedLines((String)null)).asMessage().asOneLine().is("Expected string had different values at line 1. Expect=''. Actual='foo'.");
370 }
371
372 @Test void cb05_contains() {
373 var x = "foobar";
374 var nil = n(String.class);
375 test(x).isContains("foo","bar");
376 assertThrown(()->test(x).isContains("foo","baz")).asMessage().asOneLine().is("String did not contain expected substring. Substring='baz'. Value='foobar'.");
377 test(nil).isContains();
378 assertThrows(IllegalArgumentException.class, ()->test(x).isContains((String[])null), "Argument 'values' cannot be null.");
379 test(x).isContains((String)null);
380 assertThrown(()->test(nil).isContains("foobar")).asMessage().asOneLine().is("String did not contain expected substring. Substring='foobar'. Value='null'.");
381 }
382
383 @Test void cb06_doesNotContain() {
384 var x = "foobar";
385 var nil = n(String.class);
386 test(x).isNotContains("baz","qux");
387 assertThrown(()->test(x).isNotContains("foo","baz")).asMessage().asOneLine().is("String contained unexpected substring. Substring='foo'. Value='foobar'.");
388 test(nil).isNotContains();
389 assertThrows(IllegalArgumentException.class, ()->test(x).isNotContains((String[])null), "Argument 'values' cannot be null.");
390 test(x).isNotContains((String)null);
391 test(nil).isNotContains("foobar");
392 }
393
394 @Test void cb07_isEmpty() {
395 var x = "1";
396 var empty = "";
397 var nil = n(String.class);
398 test(empty).isEmpty();
399 test(nil).isEmpty();
400 assertThrown(()->test(x).isEmpty()).asMessage().asOneLine().is("String was not empty. Value='1'.");
401 }
402
403 @Test void cb08_isNotEmpty() {
404 var x = "1";
405 var empty = "";
406 var nil = n(String.class);
407 test(x).isNotEmpty();
408 assertThrows(BasicAssertionError.class, ()->test(empty).isNotEmpty(), "String was empty.");
409 assertThrows(BasicAssertionError.class, ()->test(nil).isNotEmpty(), "String was null.");
410 }
411
412 @Test void cb09_matches() {
413 var x = "foo";
414 var empty = "";
415 var nil = n(String.class);
416 test(x).isMatches("fo*");
417 assertThrown(()->test(x).isMatches("b*")).asMessage().asOneLine().is("String did not match expected pattern. Pattern='\\Qb\\E.*\\Q\\E'. Value='foo'.");
418 assertThrows(BasicAssertionError.class, ()->test(nil).isMatches("b*"), "Value was null.");
419 assertThrows(IllegalArgumentException.class, ()->test(empty).isMatches(null), "Argument 'searchPattern' cannot be null.");
420 }
421
422 @Test void cb10_regex() {
423 var x = "foo";
424 var empty = "";
425 var nil = n(String.class);
426 test(x).isPattern("fo+");
427 assertThrown(()->test(x).isPattern("bar")).asMessage().asOneLine().is("String did not match expected pattern. Pattern='bar'. Value='foo'.");
428 assertThrows(BasicAssertionError.class, ()->test(nil).isPattern("fo+"), "Value was null.");
429 assertThrows(IllegalArgumentException.class, ()->test(empty).isPattern((String)null), "Argument 'regex' cannot be null.");
430 }
431
432 @Test void cb10b_regex_wFlags() {
433 var x = "foo";
434 var empty = "";
435 var nil = n(String.class);
436 test(x).isPattern("FO+", Pattern.CASE_INSENSITIVE);
437 assertThrown(()->test(x).isPattern("bar")).asMessage().asOneLine().is("String did not match expected pattern. Pattern='bar'. Value='foo'.");
438 assertThrows(BasicAssertionError.class, ()->test(nil).isPattern("fo+"), "Value was null.");
439 assertThrows(IllegalArgumentException.class, ()->test(empty).isPattern((String)null), "Argument 'regex' cannot be null.");
440 }
441
442 @Test void cb10c_regex_wPattern() {
443 var x = "foo";
444 var empty = "";
445 var nil = n(String.class);
446 test(x).isPattern(Pattern.compile("FO+", Pattern.CASE_INSENSITIVE));
447 assertThrown(()->test(x).isPattern("bar")).asMessage().asOneLine().is("String did not match expected pattern. Pattern='bar'. Value='foo'.");
448 assertThrows(BasicAssertionError.class, ()->test(nil).isPattern("fo+"), "Value was null.");
449 assertThrows(IllegalArgumentException.class, ()->test(empty).isPattern((String)null), "Argument 'regex' cannot be null.");
450 }
451
452 @Test void cb12_startsWith() {
453 var x = "foo";
454 var nil = n(String.class);
455 test(x).isStartsWith("fo");
456 assertThrown(()->test(x).isStartsWith("x")).asMessage().asOneLine().is("String did not start with expected substring. Substring='x'. Value='foo'.");
457 assertThrows(BasicAssertionError.class, ()->test(nil).isStartsWith("x"), "Value was null.");
458 }
459
460 @Test void cb13_endsWith() {
461 var x = "foo";
462 var nil = n(String.class);
463 test(x).isEndsWith("oo");
464 assertThrown(()->test(x).isEndsWith("x")).asMessage().asOneLine().is("String did not end with expected substring. Substring='x'. Value='foo'.");
465 assertThrows(BasicAssertionError.class, ()->test(nil).isEndsWith("x"), "Value was null.");
466 }
467 }