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.*;
20 import static org.apache.juneau.assertions.AssertionPredicates.eq;
21 import static org.apache.juneau.assertions.AssertionPredicates.ne;
22 import static org.apache.juneau.assertions.Assertions.*;
23 import static org.apache.juneau.common.utils.Utils.*;
24 import static org.junit.jupiter.api.Assertions.*;
25
26 import java.util.*;
27 import java.util.function.*;
28
29 import org.apache.juneau.*;
30 import org.apache.juneau.json.*;
31 import org.junit.jupiter.api.*;
32
33 @Deprecated
34 public class ArrayAssertion_Test extends TestBase {
35
36
37
38
39
40 public static final A A = new A();
41 public static class A {
42 public int a = 1, b = 2;
43 @Override public String toString() { return "a="+a+",b="+b; }
44 }
45
46 private <E> ArrayAssertion<E> test(E[] value) {
47 return assertArray(value).setSilent();
48 }
49
50
51
52
53
54 @Test void a01_msg() {
55 assertThrows(BasicAssertionError.class, ()->test(null).setMsg("Foo {0}", 1).isExists(), "Foo 1");
56 assertThrows(RuntimeException.class, ()->test(null).setMsg("Foo {0}", 1).setThrowable(RuntimeException.class).isExists(), "Foo 1");
57 }
58
59 @Test void a02_stdout() {
60 test(null).setStdOut();
61 }
62
63
64
65
66
67 @Test void ba01a_asString() {
68 var x = a(1,2);
69 var nil = na(Integer.class);
70 test(x).asString().is("[1, 2]");
71 test(nil).asString().isNull();
72 }
73
74 @Test void ba01b_asString_wSerializer() {
75 var x = a(1,2);
76 var nil = na(Integer.class);
77 var s = Json5Serializer.DEFAULT;
78 test(x).asString(s).is("[1,2]");
79 test(nil).asString(s).is("null");
80 }
81
82 @Test void ba01c_asString_wPredicate() {
83 var x1 = a(1,2);
84 test(x1).asString(x -> "foo").is("foo");
85 }
86
87 @Test void ba02_asJson() {
88 var x = a(1,2);
89 var nil = na(Integer.class);
90 test(x).asJson().is("[1,2]");
91 test(nil).asJson().is("null");
92 }
93
94 @Test void ba03_asJsonSorted() {
95 var x1 = a(2,1);
96 var nil = na(Integer.class);
97 test(x1).asJsonSorted().is("[1,2]");
98 test(nil).asJsonSorted().is("null");
99 }
100
101 @Test void ba04_apply() {
102 var x1 = a(1,2);
103 var x2 = a(3,4);
104 test(x1).asTransformed(x -> x2).is(x2);
105 }
106
107 @Test void bb01_asStrings() {
108 var x1 = a(1,2);
109 var nil = na(Integer.class);
110 test(x1).asStrings().asJoin().is("12");
111 test(nil).asStrings().isNull();
112 }
113
114 @Test void bb02_asBeanList() {
115 var x = a(A,A);
116 var nil = na(Integer.class);
117 test(x).asBeanList().asProperty("a").asJson().is("[1,1]");
118 test(nil).asBeanList().isNull();
119 }
120
121 @Test void bb03_item() {
122 var x = a(A,A);
123 var nil = na(Integer.class);
124 test(x).asItem(0).asBean().asProperty("a").is(1);
125 test(x).asItem(-1).isNull();
126 test(x).asItem(2).isNull();
127 test(nil).asItem(0).isNull();
128 }
129
130 @Test void bb04a_sorted() {
131 var x = a(2,3,1);
132 var nil = na(Integer.class);
133 test(x).asSorted().asJson().is("[1,2,3]");
134 test(x).asSorted(Comparator.reverseOrder()).asJson().is("[3,2,1]");
135 test(x).asSorted(null).asJson().is("[1,2,3]");
136 test(nil).asSorted().isNull();
137 }
138
139 @Test void bb04b_sorted_wComparator() {
140 var x = a(2,3,1);
141 var nil = na(Integer.class);
142 test(x).asSorted().asJson().is("[1,2,3]");
143 test(x).asSorted(Comparator.reverseOrder()).asJson().is("[3,2,1]");
144 test(x).asSorted(null).asJson().is("[1,2,3]");
145 test(nil).asSorted().isNull();
146 }
147
148
149
150
151
152 @Test void ca01_exists() {
153 var x = ea(Integer.class);
154 var nil = na(Integer.class);
155 test(x).isExists().isExists();
156 assertThrows(BasicAssertionError.class, ()->test(nil).isExists(), "Value was null.");
157 }
158
159 @Test void ca02_isNull() {
160 var x = ea(Integer.class);
161 var nil = na(Integer.class);
162 test(nil).isNull();
163 assertThrows(BasicAssertionError.class, ()->test(x).isNull(), "Value was not null.");
164 }
165
166 @Test void ca03_isNotNull() {
167 var x = ea(Integer.class);
168 var nil = na(Integer.class);
169 test(x).isNotNull();
170 assertThrows(BasicAssertionError.class, ()->test(nil).isNotNull(), "Value was null.");
171 }
172
173 @Test void ca04a_is_T() {
174 var x1 = a(null,1,2);
175 var x1a = a(null,1,2);
176 var x1b = a(null,1,3);
177 var nil = na(Integer.class);
178 test(x1).is(x1);
179 test(x1).is(x1a);
180 test(nil).is(nil);
181 assertThrown(()->test(x1).is(x1b)).asMessage().asOneLine().is("Unexpected value. Expect='[null, 1, 3]'. Actual='[null, 1, 2]'.");
182 assertThrown(()->test(x1).is(nil)).asMessage().asOneLine().is("Unexpected value. Expect='null'. Actual='[null, 1, 2]'.");
183 assertThrown(()->test(nil).is(x1b)).asMessage().asOneLine().is("Unexpected value. Expect='[null, 1, 3]'. Actual='null'.");
184 }
185
186 @Test void ca04b_is_predicate() {
187 var x1 = a(null,1,2);
188 test(x1).is(x->x.length==3);
189 assertThrown(()->test(x1).is(x->x.length==2)).asMessage().asOneLine().is("Unexpected value: '[null, 1, 2]'.");
190 assertThrown(()->test(x1).is(ne(x1))).asMessage().asOneLine().is("Value unexpectedly matched. Value='[null, 1, 2]'.");
191 }
192
193 @Test void ca05_isNot() {
194 var x1 = a(null,1,2);
195 var x1a = a(null,1,2);
196 var x2 = a(null,1,3);
197 var nil = na(Integer.class);
198 test(x1).isNot(x2);
199 test(x1).isNot(nil);
200 test(nil).isNot(x1);
201 assertThrown(()->test(x1).isNot(x1a)).asMessage().asOneLine().is("Unexpected value. Did not expect='[null, 1, 2]'. Actual='[null, 1, 2]'.");
202 assertThrown(()->test(nil).isNot(nil)).asMessage().asOneLine().is("Unexpected value. Did not expect='null'. Actual='null'.");
203 }
204
205 @Test void ca06_isAny() {
206 var x1 = a(null,1,2);
207 var x1a = a(null,1,2);
208 var x2 = a(null,1,3);
209 var nil = na(Integer.class);
210 test(x1).isAny(x1a, x2);
211 assertThrown(()->test(x1).isAny(x2)).asMessage().asOneLine().is("Expected value not found. Expect='[[null, 1, 3]]'. Actual='[null, 1, 2]'.");
212 assertThrown(()->test(x1).isAny()).asMessage().asOneLine().is("Expected value not found. Expect='[]'. Actual='[null, 1, 2]'.");
213 assertThrown(()->test(nil).isAny(x2)).asMessage().asOneLine().is("Expected value not found. Expect='[[null, 1, 3]]'. Actual='null'.");
214 }
215
216 @Test void ca07_isNotAny() {
217 var x1 = a(null,1,2);
218 var x1a = a(null,1,2);
219 var x2 = a(null,1,3);
220 var nil = na(Integer.class);
221 test(x1).isNotAny(x2);
222 test(x1).isNotAny();
223 test(nil).isNotAny(x2);
224 assertThrown(()->test(x1).isNotAny(x1a)).asMessage().asOneLine().is("Unexpected value found. Unexpected='[null, 1, 2]'. Actual='[null, 1, 2]'.");
225 assertThrown(()->test(nil).isNotAny(nil)).asMessage().asOneLine().is("Unexpected value found. Unexpected='null'. Actual='null'.");
226 }
227
228 @Test void ca08_isSame() {
229 var x1 = a(null,1,2);
230 var x1a = a(null,1,2);
231 var nil = na(Integer.class);
232 test(x1).isSame(x1);
233 test(nil).isSame(nil);
234 assertThrown(()->test(x1).isSame(x1a)).asMessage().asOneLine().isMatches("Not the same value. Expect='[null, 1, 2](Integer[]@*)'. Actual='[null, 1, 2](Integer[]@*)'.");
235 assertThrown(()->test(nil).isSame(x1a)).asMessage().asOneLine().isMatches("Not the same value. Expect='[null, 1, 2](Integer[]@*)'. Actual='null(null)'.");
236 assertThrown(()->test(x1).isSame(nil)).asMessage().asOneLine().isMatches("Not the same value. Expect='null(null)'. Actual='[null, 1, 2](Integer[]@*)'.");
237 }
238
239 @Test void ca09_isSameJsonAs() {
240 var x1 = a(null,1,2);
241 var x1a = a(null,1,2);
242 var x2 = a(null,1,3);
243 var nil = na(Integer.class);
244 test(x1).isSameJsonAs(x1a);
245 test(nil).isSameJsonAs(nil);
246 assertThrown(()->test(x1a).isSameJsonAs(x2)).asMessage().asOneLine().is("Unexpected comparison. Expect='[null,1,3]'. Actual='[null,1,2]'.");
247 assertThrown(()->test(nil).isSameJsonAs(x2)).asMessage().asOneLine().is("Unexpected comparison. Expect='[null,1,3]'. Actual='null'.");
248 assertThrown(()->test(x1).isSameJsonAs(nil)).asMessage().asOneLine().is("Unexpected comparison. Expect='null'. Actual='[null,1,2]'.");
249 }
250
251 @Test void ca10_isSameSortedJsonAs() {
252 var x1 = a(1,2);
253 var x1a = a(2,1);
254 var x2 = a(1,3);
255 var nil = na(Integer.class);
256 test(x1).isSameSortedJsonAs(x1a);
257 test(nil).isSameSortedJsonAs(nil);
258 assertThrown(()->test(x1a).isSameSortedJsonAs(x2)).asMessage().asOneLine().is("Unexpected comparison. Expect='[1,3]'. Actual='[1,2]'.");
259 assertThrown(()->test(nil).isSameSortedJsonAs(x2)).asMessage().asOneLine().is("Unexpected comparison. Expect='[1,3]'. Actual='null'.");
260 assertThrown(()->test(x1).isSameSortedJsonAs(nil)).asMessage().asOneLine().is("Unexpected comparison. Expect='null'. Actual='[1,2]'.");
261 }
262
263 @Test void ca11_isSameSerializedAs() {
264 var x1 = a(null,1,2);
265 var x1a = a(null,1,2);
266 var x2 = a(null,1,3);
267 var nil = na(Integer.class);
268 var s = Json5Serializer.DEFAULT;
269 test(x1).isSameSerializedAs(x1a, s);
270 test(nil).isSameSerializedAs(nil, s);
271 assertThrown(()->test(x1a).isSameSerializedAs(x2, s)).asMessage().asOneLine().is("Unexpected comparison. Expect='[null,1,3]'. Actual='[null,1,2]'.");
272 assertThrown(()->test(nil).isSameSerializedAs(x2, s)).asMessage().asOneLine().is("Unexpected comparison. Expect='[null,1,3]'. Actual='null'.");
273 assertThrown(()->test(x1).isSameSerializedAs(nil, s)).asMessage().asOneLine().is("Unexpected comparison. Expect='null'. Actual='[null,1,2]'.");
274 }
275
276 @Test void ca12_isType() {
277 var x = ea(Integer.class);
278 var nil = na(Integer.class);
279 test(x).isType(Integer[].class);
280 test(x).isType(Object[].class);
281 test(x).isType(Object.class);
282 assertThrown(()->test(x).isType(String[].class)).asMessage().asOneLine().is("Unexpected type. Expect='[Ljava.lang.String;'. Actual='[Ljava.lang.Integer;'.");
283 assertThrown(()->test(nil).isType(Integer[].class)).asMessage().asOneLine().is("Value was null.");
284 assertThrown(()->test(x).isType(null)).asMessage().asOneLine().is("Argument 'parent' cannot be null.");
285 }
286
287 @Test void ca13_isExactType() {
288 var x = ea(Integer.class);
289 var nil = na(Integer.class);
290 test(x).isExactType(Integer[].class);
291 assertThrown(()->test(x).isExactType(String.class)).asMessage().asOneLine().is("Unexpected type. Expect='java.lang.String'. Actual='[Ljava.lang.Integer;'.");
292 assertThrown(()->test(nil).isExactType(String.class)).asMessage().asOneLine().is("Value was null.");
293 assertThrown(()->test(x).isExactType(null)).asMessage().asOneLine().is("Argument 'parent' cannot be null.");
294 }
295
296 @Test void ca14_isString() {
297 var x = a(null,1,2);
298 var nil = na(Integer.class);
299 test(x).isString("[null, 1, 2]");
300 test(nil).isString(null);
301 assertThrown(()->test(x).isString("bad")).asMessage().asOneLine().is("String differed at position 0. Expect='bad'. Actual='[null, 1, 2]'.");
302 assertThrown(()->test(x).isString(null)).asMessage().asOneLine().is("String differed at position 0. Expect='null'. Actual='[null, 1, 2]'.");
303 assertThrown(()->test(nil).isString("bad")).asMessage().asOneLine().is("String differed at position 0. Expect='bad'. Actual='null'.");
304 }
305
306 @Test void ca15_isJson() {
307 var x = a(null,1,2);
308 var nil = na(Integer.class);
309 test(x).isJson("[null,1,2]");
310 test(nil).isJson("null");
311 assertThrown(()->test(x).isJson("bad")).asMessage().asOneLine().is("String differed at position 0. Expect='bad'. Actual='[null,1,2]'.");
312 assertThrown(()->test(x).isJson(null)).asMessage().asOneLine().is("String differed at position 0. Expect='null'. Actual='[null,1,2]'.");
313 assertThrown(()->test(nil).isJson("bad")).asMessage().asOneLine().is("String differed at position 0. Expect='bad'. Actual='null'.");
314 }
315
316 @Test void cb01_is_predicates() {
317 var x1 = a(null,1,2);
318 var nil = na(Integer.class);
319 test(x1).is(isNull(),eq("1"),eq("2"));
320 test(x1).is(isNull(),eq(1),eq(2));
321 assertThrown(()->test(x1).is(isNull(),eq("1"),eq("3"))).asMessage().asOneLine().is("Array did not contain expected value at index 2. Value did not match expected. Expect='3'. Actual='2'.");
322 assertThrows(BasicAssertionError.class, ()->test(nil).is(isNull(),eq("1"),eq("3")), "Value was null.");
323 test(x1).is((Predicate<Integer>)null,null,null);
324 }
325
326 @Test void cb02_any() {
327 var x1 = a(2,3,1);
328 var nil = na(Integer.class);
329 test(x1).isAny(x -> x .equals(3));
330 test(x1).isAny(eq(3));
331 assertThrown(()->test(x1).isAny(x -> x.equals(4))).asMessage().asOneLine().is("Array did not contain any matching value. Value='[2, 3, 1]'.");
332 assertThrows(IllegalArgumentException.class, ()->test(x1).isAny((Predicate<Integer>)null), "Argument 'test' cannot be null.");
333 assertThrows(BasicAssertionError.class, ()->test(nil).isAny(x->true), "Value was null.");
334 }
335
336 @Test void cb03_all() {
337 var x1 = a(2,3,1);
338 var nil = na(Integer.class);
339 test(x1).isAll(x -> x < 4);
340 assertThrown(()->test(x1).isAll(x -> x < 3)).asMessage().asOneLine().is("Array contained non-matching value at index 1. Unexpected value: '3'.");
341 assertThrown(()->test(x1).isAll(ne(3))).asMessage().asOneLine().is("Array contained non-matching value at index 1. Value unexpectedly matched. Value='3'.");
342 assertThrows(IllegalArgumentException.class, ()->test(x1).isAll(null), "Argument 'test' cannot be null.");
343 assertThrows(BasicAssertionError.class, ()->test(nil).isAll(x->true), "Value was null.");
344 }
345
346 @Test void cb04_isEmpty() {
347 var x1 = ea(String.class);
348 var x2 = a("foo","bar");
349 var nil = na(String.class);
350 test(x1).isEmpty();
351 assertThrows(BasicAssertionError.class, ()->test(x2).isEmpty(), "Array was not empty.");
352 assertThrows(BasicAssertionError.class, ()->test(nil).isEmpty(), "Value was null.");
353 }
354
355 @Test void cb05_isNotEmpty() {
356 var x1 = ea(String.class);
357 var x2 = a("foo","bar");
358 var nil = na(String.class);
359 test(x2).isNotEmpty();
360 assertThrows(BasicAssertionError.class, ()->test(x1).isNotEmpty(), "Array was empty.");
361 assertThrows(BasicAssertionError.class, ()->test(nil).isNotEmpty(), "Value was null.");
362 }
363
364 @Test void cb06_contains() {
365 var x1 = a(null,1,2);
366 var nil = na(Integer.class);
367 test(x1).isContains(null);
368 test(x1).isContains(1);
369 assertThrown(()->test(x1).isContains(3)).asMessage().asOneLine().is("Array did not contain expected value. Expect='3'. Actual='[null, 1, 2]'.");
370 assertThrows(BasicAssertionError.class, ()->test(nil).isContains(3), "Value was null.");
371 assertThrows(BasicAssertionError.class, ()->test(nil).isContains(null), "Value was null.");
372 }
373
374 @Test void cb07_doesNotContain() {
375 var x1 = a(null,1,2);
376 var nil = na(Integer.class);
377 test(x1).isNotContains(3);
378 assertThrown(()->test(x1).isNotContains(1)).asMessage().asOneLine().is("Array contained unexpected value. Unexpected='1'. Actual='[null, 1, 2]'.");
379 assertThrown(()->test(x1).isNotContains(null)).asMessage().asOneLine().is("Array contained unexpected value. Unexpected='null'. Actual='[null, 1, 2]'.");
380 assertThrows(BasicAssertionError.class, ()->test(nil).isNotContains(3), "Value was null.");
381 }
382
383 @Test void cb08_isSize() {
384 var x1 = ea(String.class);
385 var x2 = a("foo","bar");
386 var nil = na(String.class);
387 test(x1).isSize(0);
388 test(x2).isSize(2);
389 assertThrown(()->test(x1).isSize(2)).asMessage().asOneLine().is("Array did not have the expected size. Expect=2. Actual=0.");
390 assertThrown(()->test(x2).isSize(0)).asMessage().asOneLine().is("Array did not have the expected size. Expect=0. Actual=2.");
391 assertThrows(BasicAssertionError.class, ()->test(nil).isSize(0), "Value was null.");
392 }
393
394 @Test void cb09_has() {
395 var x= a("foo","bar");
396 var nil = na(String.class);
397 test(x).isHas("foo","bar");
398 assertThrown(()->test(x).isHas("foo","baz")).asMessage().asOneLine().is("Array did not contain expected value at index 1. Value did not match expected. Expect='baz'. Actual='bar'.");
399 assertThrown(()->test(x).isHas("foo")).asMessage().asOneLine().is("Array did not have the expected size. Expect=1. Actual=2.");
400 assertThrown(()->test(x).isHas(nil)).asMessage().asOneLine().is("Argument 'entries' cannot be null.");
401 assertThrown(()->test(nil).isHas("foo")).asMessage().asOneLine().is("Value was null.");
402 }
403 }