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.TestUtils.*;
20 import static org.apache.juneau.assertions.AssertionPredicates.contains;
21 import static org.apache.juneau.assertions.AssertionPredicates.ne;
22 import static org.apache.juneau.assertions.Assertions.*;
23 import static org.apache.juneau.commons.utils.CollectionUtils.*;
24
25 import java.time.*;
26 import java.util.*;
27
28 import org.apache.juneau.*;
29 import org.apache.juneau.json.*;
30 import org.junit.jupiter.api.*;
31
32 @Deprecated
33 class AnyAssertion_Test extends TestBase {
34
35
36
37
38
39 private static <T> AnyAssertion<T> test(T value) {
40 return assertAny(value).setSilent();
41 }
42
43 private static ZonedDateTime zdt(String s) {
44 return ZonedDateTime.parse(s);
45 }
46
47 private static Date date(String s) {
48 return new Date(ZonedDateTime.parse(s).toEpochSecond()*1000);
49 }
50
51 public static final A1 A1 = new A1();
52 public static class A1 {
53 public int a = 1, b = 2;
54 @Override public String toString() { return "a="+a+",b="+b; }
55 }
56
57 public static class A2 {
58 public int getFoo() { throw new RuntimeException("foo"); }
59 }
60
61
62
63
64
65 @Test void a01_msg() {
66 assertThrowsWithMessage(BasicAssertionError.class, "Foo 1", ()->test(null).setMsg("Foo {0}", 1).isExists());
67 assertThrowsWithMessage(RuntimeException.class, "Foo 1", ()->test(null).setMsg("Foo {0}", 1).setThrowable(RuntimeException.class).isExists());
68 }
69
70 @Test void a02_stdout() {
71 test(null).setStdOut();
72 }
73
74
75
76
77
78 @Test void ba01a_asString() {
79 var x = 1;
80 var nil = no(Integer.class);
81 test(x).asString().is("1");
82 test(nil).asString().isNull();
83 }
84
85 @Test void ba01b_asString_wSerializer() {
86 var x = 1;
87 var nil = no(Integer.class);
88 var s = Json5Serializer.DEFAULT;
89 test(x).asString(s).is("1");
90 test(nil).asString(s).is("null");
91 }
92
93 @Test void ba01c_asString_wPredicate() {
94 var x1 = 1;
95 test(x1).asString(x -> "foo").is("foo");
96 }
97
98 @Test void ba02_asJson() {
99 var x = 1;
100 var nil = no(Integer.class);
101 test(x).asJson().is("1");
102 test(nil).asJson().is("null");
103 assertThrown(()->test(new A2()).asJson()).asMessages().isAny(contains("Could not call getValue() on property 'foo'"));
104 }
105
106 @Test void ba03_asJsonSorted() {
107 var x1 = a(2,1);
108 var nil = na(Integer.class);
109 var x2 = new A1();
110 test(x1).asJsonSorted().is("[1,2]");
111 test(x2).asJsonSorted().is("{a:1,b:2}");
112 test(nil).asJsonSorted().is("null");
113 }
114
115 @Test void ba04_apply() {
116 var x1 = 1;
117 var x2 = 2;
118 test(x1).asTransformed(x -> x2).is(x2);
119 }
120
121 @Test void bb01_asArray() {
122 var x1 = a(1,2);
123 var nil = na(Integer.class);
124 var x2 = "";
125 test(x1).asArray(Integer.class).asItem(0).is(1);
126 test(nil).asArray(Integer.class).isNull();
127 assertThrown(()->test(x2).asArray(Integer.class)).asMessage().asOneLine().is("Object was not type 'java.lang.Integer[]'. Actual='java.lang.String'.");
128 assertThrown(()->test(x2).asArray(null)).asMessage().asOneLine().is("Argument 'elementType' cannot be null.");
129 }
130
131 @Test void bb02_asIntArray() {
132 int[] x1 = {1}, nil = null;
133 var x2 = "";
134 test(x1).asIntArray().isString("[1]");
135 test(nil).asIntArray().isNull();
136 assertThrown(()->test(x2).asIntArray()).asMessage().asOneLine().is("Object was not type 'int[]'. Actual='java.lang.String'.");
137 }
138
139 @Test void bb03_asLongArray() {
140 long[] x1 = {1}, nil = null;
141 var x2 = "";
142 test(x1).asLongArray().isString("[1]");
143 test(nil).asLongArray().isNull();
144 assertThrown(()->test(x2).asLongArray()).asMessage().asOneLine().is("Object was not type 'long[]'. Actual='java.lang.String'.");
145 }
146
147 @Test void bb04_asShortArray() {
148 short[] x1 = {1}, nil = null;
149 var x2 = "";
150 test(x1).asShortArray().isString("[1]");
151 test(nil).asShortArray().isNull();
152 assertThrown(()->test(x2).asShortArray()).asMessage().asOneLine().is("Object was not type 'short[]'. Actual='java.lang.String'.");
153 }
154
155 @Test void bb05_asFloatArray() {
156 float[] x1 = {1}, nil = null;
157 var x2 = "";
158 test(x1).asFloatArray().isString("[1.0]");
159 test(nil).asFloatArray().isNull();
160 assertThrown(()->test(x2).asFloatArray()).asMessage().asOneLine().is("Object was not type 'float[]'. Actual='java.lang.String'.");
161 }
162
163 @Test void bb06_asDoubleArray() {
164 double[] x1 = {1}, nil = null;
165 var x2 = "";
166 test(x1).asDoubleArray().isString("[1.0]");
167 test(nil).asDoubleArray().isNull();
168 assertThrown(()->test(x2).asDoubleArray()).asMessage().asOneLine().is("Object was not type 'double[]'. Actual='java.lang.String'.");
169 }
170
171 @Test void bb07_asCharArray() {
172 char[] x1 = {'a'}, nil = null;
173 var x2 = "";
174 test(x1).asCharArray().isString("[a]");
175 test(nil).asCharArray().isNull();
176 assertThrown(()->test(x2).asCharArray()).asMessage().asOneLine().is("Object was not type 'char[]'. Actual='java.lang.String'.");
177 }
178
179 @Test void bb08_asByteArray() {
180 byte[] x1 = {1}, nil = null;
181 var x2 = "";
182 test(x1).asByteArray().isString("01");
183 test(nil).asByteArray().isNull();
184 assertThrown(()->test(x2).asByteArray()).asMessage().asOneLine().is("Object was not type 'byte[]'. Actual='java.lang.String'.");
185 }
186
187 @Test void bb09_asBooleanArray() {
188 boolean[] x1 = {true}, nil = null;
189 var x2 = "";
190 test(x1).asBooleanArray().isString("[true]");
191 test(nil).asBooleanArray().isNull();
192 assertThrown(()->test(x2).asBooleanArray()).asMessage().asOneLine().is("Object was not type 'boolean[]'. Actual='java.lang.String'.");
193 }
194
195 @Test void bb10_asBoolean() {
196 var x1 = true;
197 var nil = no(Boolean.class);
198 var x2 = "";
199 test(x1).asBoolean().isString("true");
200 test(nil).asBoolean().isNull();
201 assertThrown(()->test(x2).asBoolean()).asMessage().asOneLine().is("Object was not type 'java.lang.Boolean'. Actual='java.lang.String'.");
202 }
203
204 @Test void bb11_asBytes() {
205 byte[] x1 = {'a'}, nil = null;
206 var x2 = "";
207 test(x1).asBytes().isString("a");
208 test(nil).asBytes().isNull();
209 assertThrown(()->test(x2).asBytes()).asMessage().asOneLine().is("Object was not type 'byte[]'. Actual='java.lang.String'.");
210 }
211
212 @Test void bb12_asCollection() {
213 var x1 = l(1);
214 var nil = listn(Integer.class);
215 var x2 = "";
216 test(x1).asCollection().isString("[1]");
217 test(nil).asCollection().isNull();
218 assertThrown(()->test(x2).asCollection()).asMessage().asOneLine().is("Object was not type 'java.util.Collection'. Actual='java.lang.String'.");
219 }
220
221 @Test void bb13_asCollection_wType() {
222 var x1 = l(1);
223 var nil = listn(Integer.class);
224 var x2 = "";
225 test(x1).asCollection(Integer.class).isString("[1]");
226 test(nil).asCollection(Integer.class).isNull();
227 assertThrown(()->test(x2).asCollection(Integer.class)).asMessage().asOneLine().is("Object was not type 'java.util.Collection'. Actual='java.lang.String'.");
228 assertThrowsWithMessage(IllegalArgumentException.class, "Argument 'elementType' cannot be null.", ()->test(x1).asCollection(null));
229 }
230
231 @Test void bb14_asComparable() {
232 var x1 = 1;
233 var nil = no(Integer.class);
234 var x2 = list();
235 test(x1).asComparable().isString("1");
236 test(nil).asComparable().isNull();
237 assertThrown(()->test(x2).asComparable()).asMessage().asOneLine().is("Object was not type 'java.lang.Comparable'. Actual='java.util.ArrayList'.");
238 }
239
240 @Test void bb15_asDate() {
241 var x1 = date("2000-06-01T12:34:56Z");
242 var nil = no(Date.class);
243 var x2 = "";
244 test(x1).asDate().asString().isMatches("*2000*");
245 test(nil).asDate().isNull();
246 assertThrown(()->test(x2).asDate()).asMessage().asOneLine().is("Object was not type 'java.util.Date'. Actual='java.lang.String'.");
247 }
248
249 @Test void bb16_asInteger() {
250 var x1 = 1;
251 var nil = no(Integer.class);
252 var x2 = "";
253 test(x1).asInteger().isString("1");
254 test(nil).asInteger().isNull();
255 assertThrown(()->test(x2).asInteger()).asMessage().asOneLine().is("Object was not type 'java.lang.Integer'. Actual='java.lang.String'.");
256 }
257
258 @Test void bb17_asLong() {
259 var x1 = 1L;
260 var nil = no(Long.class);
261 var x2 = "";
262 test(x1).asLong().isString("1");
263 test(nil).asLong().isNull();
264 assertThrown(()->test(x2).asLong()).asMessage().asOneLine().is("Object was not type 'java.lang.Long'. Actual='java.lang.String'.");
265 }
266
267 @Test void bb18_asList() {
268 var x1 = l(1);
269 var nil = listn(Integer.class);
270 var x2 = "";
271 test(x1).asList().isString("[1]");
272 test(nil).asList().isNull();
273 assertThrown(()->test(x2).asList()).asMessage().asOneLine().is("Object was not type 'java.util.List'. Actual='java.lang.String'.");
274 }
275
276 @Test void bb19_asList_wType() {
277 var x1 = l(1);
278 var nil = listn(Integer.class);
279 var x2 = "";
280 test(x1).asList(Integer.class).isString("[1]");
281 test(nil).asList(Integer.class).isNull();
282 assertThrown(()->test(x2).asList(Integer.class)).asMessage().asOneLine().is("Object was not type 'java.util.List'. Actual='java.lang.String'.");
283 assertThrowsWithMessage(IllegalArgumentException.class, "Argument 'elementType' cannot be null.", ()->test(x1).asCollection(null));
284 }
285
286 @Test void bb20_asMap() {
287 var x1 = m("a",2);
288 var nil = (Map<String,Integer>)null;
289 var x2 = "";
290 test(x1).asMap().isString("{a=2}");
291 test(nil).asMap().isNull();
292 assertThrown(()->test(x2).asMap()).asMessage().asOneLine().is("Object was not type 'java.util.Map'. Actual='java.lang.String'.");
293 }
294
295 @Test void bb21_asMap_wTypes() {
296 var x1 = m("a",2);
297 var nil = (Map<String,Integer>)null;
298 var x2 = "";
299 test(x1).asMap(String.class,Integer.class).isString("{a=2}");
300 test(nil).asMap(String.class,Integer.class).isNull();
301 assertThrown(()->test(x2).asMap(String.class,Integer.class)).asMessage().asOneLine().is("Object was not type 'java.util.Map'. Actual='java.lang.String'.");
302 assertThrowsWithMessage(IllegalArgumentException.class, "Argument 'keyType' cannot be null.", ()->test(x1).asMap(null,Integer.class));
303 assertThrowsWithMessage(IllegalArgumentException.class, "Argument 'valueType' cannot be null.", ()->test(x1).asMap(String.class,null));
304 }
305
306 @Test void bb22_asBean() {
307 var x1 = A1;
308 var nil = (A1)null;
309 test(x1).asBean().isString("a=1,b=2");
310 test(nil).asBean().isNull();
311 }
312
313 @Test void bb23_asBean_wType() {
314 var x1 = A1;
315 var nil = no(A1.class);
316 var x2 = "";
317 test(x1).asBean().isString("a=1,b=2");
318 test(nil).asBean(A1.class).isNull();
319 assertThrown(()->test(x2).asBean(A2.class)).asMessage().asOneLine().is("Object was not type 'org.apache.juneau.assertions.AnyAssertion_Test$A2'. Actual='java.lang.String'.");
320 assertThrowsWithMessage(IllegalArgumentException.class, "Argument 'beanType' cannot be null.", ()->test(x1).asBean(null));
321 }
322
323 @Test void bb24_asBeanList() {
324 var x1 = l(A1);
325 var nil = listn(A1.class);
326 var x2 = "";
327 test(x1).asBeanList(A1.class).isString("[a=1,b=2]");
328 test(nil).asBeanList(A1.class).isNull();
329 assertThrown(()->test(x2).asBeanList(A2.class)).asMessage().asOneLine().is("Object was not type 'java.util.List'. Actual='java.lang.String'.");
330 assertThrowsWithMessage(IllegalArgumentException.class, "Argument 'beanType' cannot be null.", ()->test(x1).asBeanList(null));
331 }
332
333 @Test void bb25_asZonedDateTime() {
334 var x1 = zdt("2000-06-01T12:34:56Z");
335 var nil = no(Object.class);
336 var x2 = "";
337 test(x1).asZonedDateTime().asString().isMatches("2000*");
338 test(nil).asZonedDateTime().isNull();
339 assertThrown(()->test(x2).asZonedDateTime()).asMessage().asOneLine().is("Object was not type 'java.time.ZonedDateTime'. Actual='java.lang.String'.");
340 }
341
342 @Test void bb26_asStringList() {
343 var x1 = l("1");
344 var nil = listn(String.class);
345 var x2 = "";
346 test(x1).asStringList().isString("[1]");
347 test(nil).asStringList().isNull();
348 assertThrown(()->test(x2).asStringList()).asMessage().asOneLine().is("Object was not type 'java.util.List'. Actual='java.lang.String'.");
349 }
350
351
352
353
354
355 @Test void ca01_exists() {
356 var x = 1;
357 var nil = no(Integer.class);
358 test(x).isExists().isExists();
359 assertThrowsWithMessage(BasicAssertionError.class, "Value was null.", ()->test(nil).isExists());
360 }
361
362 @Test void ca02_isNull() {
363 var x = 1;
364 var nil = no(Integer.class);
365 test(nil).isNull();
366 assertThrowsWithMessage(BasicAssertionError.class, "Value was not null.", ()->test(x).isNull());
367 }
368
369 @Test void ca03_isNotNull() {
370 var x = 1;
371 var nil = no(Integer.class);
372 test(x).isNotNull();
373 assertThrowsWithMessage(BasicAssertionError.class, "Value was null.", ()->test(nil).isNotNull());
374 }
375
376 @Test void ca04a_is_T() {
377 var x1 = 1;
378 var x1a = 1;
379 var x2 = 2;
380 var nil = no(Integer.class);
381 test(x1).is(x1);
382 test(x1).is(x1a);
383 test(nil).is(nil);
384 assertThrown(()->test(x1).is(x2)).asMessage().asOneLine().is("Unexpected value. Expect='2'. Actual='1'.");
385 assertThrown(()->test(x1).is(nil)).asMessage().asOneLine().is("Unexpected value. Expect='null'. Actual='1'.");
386 assertThrown(()->test(nil).is(x2)).asMessage().asOneLine().is("Unexpected value. Expect='2'. Actual='null'.");
387 }
388
389 @Test void ca04b_is_predicate() {
390 var x1 = 1;
391 test(x1).is(x->x==1);
392 assertThrown(()->test(x1).is(x->x==2)).asMessage().asOneLine().is("Unexpected value: '1'.");
393 assertThrown(()->test(x1).is(ne(x1))).asMessage().asOneLine().is("Value unexpectedly matched. Value='1'.");
394 }
395
396 @Test void ca05_isNot() {
397 var x1 = 1;
398 var x1a = 1;
399 var x2 = 2;
400 var nil = no(Integer.class);
401 test(x1).isNot(x2);
402 test(x1).isNot(nil);
403 test(nil).isNot(x1);
404 assertThrown(()->test(x1).isNot(x1a)).asMessage().asOneLine().is("Unexpected value. Did not expect='1'. Actual='1'.");
405 assertThrown(()->test(nil).isNot(nil)).asMessage().asOneLine().is("Unexpected value. Did not expect='null'. Actual='null'.");
406 }
407
408 @Test void ca06_isAny() {
409 var x1 = 1;
410 var x1a = 1;
411 var x2 = 2;
412 var nil = no(Integer.class);
413 test(x1).isAny(x1a, x2);
414 assertThrown(()->test(x1).isAny(x2)).asMessage().asOneLine().is("Expected value not found. Expect='[2]'. Actual='1'.");
415 assertThrown(()->test(x1).isAny()).asMessage().asOneLine().is("Expected value not found. Expect='[]'. Actual='1'.");
416 assertThrown(()->test(nil).isAny(x2)).asMessage().asOneLine().is("Expected value not found. Expect='[2]'. Actual='null'.");
417 }
418
419 @Test void ca07_isNotAny() {
420 var x1 = 1;
421 var x1a = 1;
422 var x2 = 2;
423 var nil = no(Integer.class);
424 test(x1).isNotAny(x2);
425 test(x1).isNotAny();
426 test(nil).isNotAny(x2);
427 assertThrown(()->test(x1).isNotAny(x1a)).asMessage().asOneLine().is("Unexpected value found. Unexpected='1'. Actual='1'.");
428 assertThrown(()->test(nil).isNotAny(nil)).asMessage().asOneLine().is("Unexpected value found. Unexpected='null'. Actual='null'.");
429 }
430
431 @Test void ca08_isSame() {
432 var x1 = Integer.valueOf(999);
433 var x1a = Integer.valueOf(999);
434 var nil = no(Integer.class);
435 test(x1).isSame(x1);
436 test(nil).isSame(nil);
437 assertThrown(()->test(x1).isSame(x1a)).asMessage().asOneLine().isMatches("Not the same value. Expect='999(Integer@*)'. Actual='999(Integer@*)'.");
438 assertThrown(()->test(nil).isSame(x1a)).asMessage().asOneLine().isMatches("Not the same value. Expect='999(Integer@*)'. Actual='null(null)'.");
439 assertThrown(()->test(x1).isSame(nil)).asMessage().asOneLine().isMatches("Not the same value. Expect='null(null)'. Actual='999(Integer@*)'.");
440 }
441
442 @Test void ca09_isSameJsonAs() {
443 var x1 = 1;
444 var x1a = 1;
445 var x2 = 2;
446 var nil = no(Integer.class);
447 test(x1).isSameJsonAs(x1a);
448 test(nil).isSameJsonAs(nil);
449 assertThrown(()->test(x1a).isSameJsonAs(x2)).asMessage().asOneLine().is("Unexpected comparison. Expect='2'. Actual='1'.");
450 assertThrown(()->test(nil).isSameJsonAs(x2)).asMessage().asOneLine().is("Unexpected comparison. Expect='2'. Actual='null'.");
451 assertThrown(()->test(x1).isSameJsonAs(nil)).asMessage().asOneLine().is("Unexpected comparison. Expect='null'. Actual='1'.");
452 }
453
454 @Test void ca10_isSameSortedJsonAs() {
455 var x1 = 1;
456 var x1a = 1;
457 var x2 = 2;
458 var nil = no(Integer.class);
459 test(x1).isSameSortedJsonAs(x1a);
460 test(nil).isSameSortedJsonAs(nil);
461 assertThrown(()->test(x1a).isSameSortedJsonAs(x2)).asMessage().asOneLine().is("Unexpected comparison. Expect='2'. Actual='1'.");
462 assertThrown(()->test(nil).isSameSortedJsonAs(x2)).asMessage().asOneLine().is("Unexpected comparison. Expect='2'. Actual='null'.");
463 assertThrown(()->test(x1).isSameSortedJsonAs(nil)).asMessage().asOneLine().is("Unexpected comparison. Expect='null'. Actual='1'.");
464 }
465
466 @Test void ca11_isSameSerializedAs() {
467 var x1 = 1;
468 var x1a = 1;
469 var x2 = 2;
470 var nil = no(Integer.class);
471 var s = Json5Serializer.DEFAULT;
472 test(x1).isSameSerializedAs(x1a, s);
473 test(nil).isSameSerializedAs(nil, s);
474 assertThrown(()->test(x1a).isSameSerializedAs(x2, s)).asMessage().asOneLine().is("Unexpected comparison. Expect='2'. Actual='1'.");
475 assertThrown(()->test(nil).isSameSerializedAs(x2, s)).asMessage().asOneLine().is("Unexpected comparison. Expect='2'. Actual='null'.");
476 assertThrown(()->test(x1).isSameSerializedAs(nil, s)).asMessage().asOneLine().is("Unexpected comparison. Expect='null'. Actual='1'.");
477 }
478
479 @Test void ca12_isType() {
480 var x = 1;
481 var nil = no(Integer.class);
482 test(x).isType(Integer.class);
483 test(x).isType(Object.class);
484 assertThrown(()->test(x).isType(String.class)).asMessage().asOneLine().is("Unexpected type. Expect='java.lang.String'. Actual='java.lang.Integer'.");
485 assertThrown(()->test(nil).isType(String.class)).asMessage().asOneLine().is("Value was null.");
486 assertThrown(()->test(x).isType(null)).asMessage().asOneLine().is("Argument 'parent' cannot be null.");
487 }
488
489 @Test void ca13_isExactType() {
490 var x = 1;
491 var nil = no(Integer.class);
492 test(x).isExactType(Integer.class);
493 assertThrown(()->test(x).isExactType(Object.class)).asMessage().asOneLine().is("Unexpected type. Expect='java.lang.Object'. Actual='java.lang.Integer'.");
494 assertThrown(()->test(x).isExactType(String.class)).asMessage().asOneLine().is("Unexpected type. Expect='java.lang.String'. Actual='java.lang.Integer'.");
495 assertThrown(()->test(nil).isExactType(String.class)).asMessage().asOneLine().is("Value was null.");
496 assertThrown(()->test(x).isExactType(null)).asMessage().asOneLine().is("Argument 'parent' cannot be null.");
497 }
498
499 @Test void ca14_isString() {
500 var x = 1;
501 var nil = no(Integer.class);
502 test(x).isString("1");
503 test(nil).isString(null);
504 assertThrown(()->test(x).isString("bad")).asMessage().asOneLine().is("String differed at position 0. Expect='bad'. Actual='1'.");
505 assertThrown(()->test(x).isString(null)).asMessage().asOneLine().is("String differed at position 0. Expect='null'. Actual='1'.");
506 assertThrown(()->test(nil).isString("bad")).asMessage().asOneLine().is("String differed at position 0. Expect='bad'. Actual='null'.");
507 }
508
509 @Test void ca15_isJson() {
510 var x = 1;
511 var nil = no(Integer.class);
512 test(x).isJson("1");
513 test(nil).isJson("null");
514 assertThrown(()->test(x).isJson("bad")).asMessage().asOneLine().is("String differed at position 0. Expect='bad'. Actual='1'.");
515 assertThrown(()->test(x).isJson(null)).asMessage().asOneLine().is("String differed at position 0. Expect='null'. Actual='1'.");
516 assertThrown(()->test(nil).isJson("bad")).asMessage().asOneLine().is("String differed at position 0. Expect='bad'. Actual='null'.");
517 }
518 }