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