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