1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.juneau.a.rttests;
18
19 import static org.apache.juneau.commons.utils.CollectionUtils.*;
20 import static org.apache.juneau.commons.utils.Utils.*;
21 import static org.junit.jupiter.api.Assertions.*;
22
23 import java.util.*;
24
25 import org.apache.juneau.collections.*;
26 import org.junit.jupiter.params.*;
27 import org.junit.jupiter.params.provider.*;
28
29
30
31
32
33 @SuppressWarnings("rawtypes")
34 class SimpleObjects_RoundTripTest extends RoundTripTest_Base {
35
36 @ParameterizedTest
37 @MethodSource("testers")
38 void a01_null(RoundTrip_Tester t) throws Exception {
39 assertNull(t.roundTrip((String)null));
40 }
41
42 @ParameterizedTest
43 @MethodSource("testers")
44 void a02_optional(RoundTrip_Tester t) throws Exception {
45 assertFalse(t.roundTrip(opte()).isPresent());
46 }
47
48 @ParameterizedTest
49 @MethodSource("testers")
50 void a03_string(RoundTrip_Tester t) throws Exception {
51 assertEquals("foobar", t.roundTrip("foobar"));
52 assertEquals("", t.roundTrip(""));
53 }
54
55 @ParameterizedTest
56 @MethodSource("testers")
57 void a04_optionalContainingString(RoundTrip_Tester t) throws Exception {
58 assertEquals("foobar", t.roundTrip(opt("foobar")).get());
59 assertEquals("", t.roundTrip(opt("")).get());
60 }
61
62 @ParameterizedTest
63 @MethodSource("testers")
64 void a05_stringArray(RoundTrip_Tester t) throws Exception {
65 assertArrayEquals(a("foo", null, "null", ""), t.roundTrip(a("foo", null, "null", ""), String[].class));
66 }
67
68 @ParameterizedTest
69 @MethodSource("testers")
70 void a06_string2dArray(RoundTrip_Tester t) throws Exception {
71 var x = a(a("foo", null, "null", ""),null);
72 x = t.roundTrip(x, String[][].class);
73 assertEquals("foo", x[0][0]);
74 assertNull(x[0][1]);
75 assertEquals("null", x[0][2]);
76 assertEquals("", x[0][3]);
77 assertNull(x[1]);
78 }
79
80 @ParameterizedTest
81 @MethodSource("testers")
82 void a07_int(RoundTrip_Tester t) throws Exception {
83 assertEquals(123, t.roundTrip(123).intValue());
84 }
85
86 @ParameterizedTest
87 @MethodSource("testers")
88 void a08_intArray(RoundTrip_Tester t) throws Exception {
89 assertArrayEquals(ints(1,2,3), t.roundTrip(ints(1,2,3), int[].class));
90 }
91
92 @ParameterizedTest
93 @MethodSource("testers")
94 void a09_int2dArray(RoundTrip_Tester t) throws Exception {
95 var x = new int[][]{{1,2,3},null};
96 x = t.roundTrip(x, int[][].class);
97 assertEquals(1, x[0][0]);
98 assertEquals(2, x[0][1]);
99 assertEquals(3, x[0][2]);
100 assertNull(x[1]);
101 }
102
103 @ParameterizedTest
104 @MethodSource("testers")
105 void a10_int3dArray(RoundTrip_Tester t) throws Exception {
106 var x = new int[][][]{{{1,2,3},{4,5,6},null},null};
107 x = t.roundTrip(x, int[][][].class);
108 assertEquals(1, x[0][0][0]);
109 assertEquals(2, x[0][0][1]);
110 assertEquals(3, x[0][0][2]);
111 assertEquals(4, x[0][1][0]);
112 assertEquals(5, x[0][1][1]);
113 assertEquals(6, x[0][1][2]);
114 assertNull(x[0][2]);
115 assertNull(x[1]);
116 }
117
118 @ParameterizedTest
119 @MethodSource("testers")
120 void a11_boolean(RoundTrip_Tester t) throws Exception {
121 assertTrue(t.roundTrip(true));
122 assertFalse(t.roundTrip(false));
123 }
124
125 @ParameterizedTest
126 @MethodSource("testers")
127 void a12_booleanArray(RoundTrip_Tester t) throws Exception {
128 assertArrayEquals(booleans(true,false), t.roundTrip(booleans(true,false), boolean[].class));
129 }
130
131 @ParameterizedTest
132 @MethodSource("testers")
133 void a13_boolean2dArray(RoundTrip_Tester t) throws Exception {
134 var x = new boolean[][]{{true,false},null};
135 x = t.roundTrip(x, boolean[][].class);
136 assertTrue(x[0][0]);
137 assertFalse(x[0][1]);
138 assertNull(x[1]);
139 }
140
141 @ParameterizedTest
142 @MethodSource("testers")
143 void a14_char(RoundTrip_Tester t) throws Exception {
144 assertEquals('a', t.roundTrip('a', char.class).charValue());
145 }
146
147 @ParameterizedTest
148 @MethodSource("testers")
149 void a15_charArray(RoundTrip_Tester t) throws Exception {
150 assertArrayEquals(chars('a',(char)0), t.roundTrip(chars('a',(char)0), char[].class));
151 }
152
153 @ParameterizedTest
154 @MethodSource("testers")
155 void a16_char2dArray(RoundTrip_Tester t) throws Exception {
156 var x = new char[][]{{'a',0},null};
157 x = t.roundTrip(x, char[][].class);
158 assertEquals('a', x[0][0]);
159 assertEquals(0, x[0][1]);
160 assertNull(x[1]);
161 }
162
163 @ParameterizedTest
164 @MethodSource("testers")
165 void a17_float(RoundTrip_Tester t) throws Exception {
166 assertEquals(1f, t.roundTrip(1f, float.class), 0.1f);
167 }
168
169 @ParameterizedTest
170 @MethodSource("testers")
171 void a18_floatArray(RoundTrip_Tester t) throws Exception {
172 assertArrayEquals(floats(1f), t.roundTrip(floats(1f), float[].class), 0.1f);
173 }
174
175 @ParameterizedTest
176 @MethodSource("testers")
177 void a19_float2dArray(RoundTrip_Tester t) throws Exception {
178 var x = new float[][]{{1f},null};
179 x = t.roundTrip(x, float[][].class);
180 assertEquals(1f, x[0][0], 0.1f);
181 assertNull(x[1]);
182 }
183
184 @ParameterizedTest
185 @MethodSource("testers")
186 void a20_double(RoundTrip_Tester t) throws Exception {
187 assertEquals(1d, t.roundTrip(1d, double.class), 0.1f);
188 }
189
190 @ParameterizedTest
191 @MethodSource("testers")
192 void a21_doubleArray(RoundTrip_Tester t) throws Exception {
193 assertArrayEquals(doubles(1d), t.roundTrip(doubles(1d), double[].class), 0.1);
194 }
195
196 @ParameterizedTest
197 @MethodSource("testers")
198 void a22_double2dArray(RoundTrip_Tester t) throws Exception {
199 var x = new double[][]{{1d},null};
200 x = t.roundTrip(x, double[][].class);
201 assertEquals(1d, x[0][0], 0.1f);
202 assertNull(x[1]);
203 }
204
205 @ParameterizedTest
206 @MethodSource("testers")
207 void a23_long(RoundTrip_Tester t) throws Exception {
208 assertEquals(1L, t.roundTrip(1L, long.class).longValue());
209 }
210
211 @ParameterizedTest
212 @MethodSource("testers")
213 void a24_longArray(RoundTrip_Tester t) throws Exception {
214 assertArrayEquals(longs(1L), t.roundTrip(longs(1L), long[].class));
215 }
216
217 @ParameterizedTest
218 @MethodSource("testers")
219 void a25_long2dArray(RoundTrip_Tester t) throws Exception {
220 var x = new long[][]{{1L},null};
221 x = t.roundTrip(x, long[][].class);
222 assertEquals(1L, x[0][0]);
223 assertNull(x[1]);
224 }
225
226 @ParameterizedTest
227 @MethodSource("testers")
228 void a26_short(RoundTrip_Tester t) throws Exception {
229 assertEquals((short)1, t.roundTrip((short)1, short.class).shortValue());
230 }
231
232 @ParameterizedTest
233 @MethodSource("testers")
234 void a27_shortArray(RoundTrip_Tester t) throws Exception {
235 assertArrayEquals(shorts((short)1), t.roundTrip(shorts((short)1), short[].class));
236 }
237
238 @ParameterizedTest
239 @MethodSource("testers")
240 void a28_short2dArray(RoundTrip_Tester t) throws Exception {
241 var x = new short[][]{{(short)1},null};
242 x = t.roundTrip(x, short[][].class);
243 assertEquals((short)1, x[0][0]);
244 assertNull(x[1]);
245 }
246
247 @ParameterizedTest
248 @MethodSource("testers")
249 void a29_integer(RoundTrip_Tester t) throws Exception {
250 assertEquals(Integer.valueOf(123), t.roundTrip((Integer)123, Integer.class));
251 }
252
253 @ParameterizedTest
254 @MethodSource("testers")
255 void a30_integerArray(RoundTrip_Tester t) throws Exception {
256 var x = a(123, null);
257 x = t.roundTrip(x, Integer[].class);
258 assertEquals(Integer.valueOf(123), x[0]);
259 assertNull(x[1]);
260 }
261
262 @ParameterizedTest
263 @MethodSource("testers")
264 void a31_integer2dArray(RoundTrip_Tester t) throws Exception {
265 var x = a(a(123,null),null);
266 x = t.roundTrip(x, Integer[][].class);
267 assertEquals(Integer.valueOf(123), x[0][0]);
268 assertNull(x[0][1]);
269 assertNull(x[1]);
270 }
271
272 @ParameterizedTest
273 @MethodSource("testers")
274 void a32_integer3dArray(RoundTrip_Tester t) throws Exception {
275 var x = a(a(a(123,null),null),null);
276 x = t.roundTrip(x, Integer[][][].class);
277 assertEquals(Integer.valueOf(123), x[0][0][0]);
278 assertNull(x[0][0][1]);
279 assertNull(x[0][1]);
280 assertNull(x[1]);
281 }
282
283 @ParameterizedTest
284 @MethodSource("testers")
285 void a33_booleanObject(RoundTrip_Tester t) throws Exception {
286 assertTrue(t.roundTrip(Boolean.TRUE, Boolean.class));
287 assertFalse(t.roundTrip(Boolean.FALSE, Boolean.class));
288 }
289
290 @ParameterizedTest
291 @MethodSource("testers")
292 void a34_booleanObjectArray(RoundTrip_Tester t) throws Exception {
293 var x = a(true,false,null);
294 x = t.roundTrip(x, Boolean[].class);
295 assertTrue(x[0]);
296 assertFalse(x[1]);
297 assertNull(x[2]);
298 }
299
300 @ParameterizedTest
301 @MethodSource("testers")
302 void a35_booleanObject2dArray(RoundTrip_Tester t) throws Exception {
303 var x = a(a(true,false,null),null);
304 x = t.roundTrip(x, Boolean[][].class);
305 assertTrue(x[0][0]);
306 assertFalse(x[0][1]);
307 assertNull(x[0][2]);
308 assertNull(x[1]);
309 }
310
311 @ParameterizedTest
312 @MethodSource("testers")
313 void a36_character(RoundTrip_Tester t) throws Exception {
314 assertEquals(Character.valueOf('a'), t.roundTrip((Character)'a', Character.class));
315 }
316
317 @ParameterizedTest
318 @MethodSource("testers")
319 void a37_characterArray(RoundTrip_Tester t) throws Exception {
320 var x = a('a',null);
321 x = t.roundTrip(x, Character[].class);
322 assertEquals(Character.valueOf('a'), x[0]);
323 assertNull(x[1]);
324 }
325
326 @ParameterizedTest
327 @MethodSource("testers")
328 void a38_character2dArray(RoundTrip_Tester t) throws Exception {
329 var x = a(a('a',null),null);
330 x = t.roundTrip(x, Character[][].class);
331 assertEquals(Character.valueOf('a'), x[0][0]);
332 assertNull(x[0][1]);
333 assertNull(x[1]);
334 }
335
336 @ParameterizedTest
337 @MethodSource("testers")
338 void a39_floatObject(RoundTrip_Tester t) throws Exception {
339 assertEquals(Float.valueOf(1f), t.roundTrip((Float)1f, Float.class));
340 }
341
342 @ParameterizedTest
343 @MethodSource("testers")
344 void a40_floatObjectArray(RoundTrip_Tester t) throws Exception {
345 var x = a(1f, null);
346 x = t.roundTrip(x, Float[].class);
347 assertEquals(Float.valueOf(1f), x[0]);
348 assertNull(x[1]);
349 }
350
351 @ParameterizedTest
352 @MethodSource("testers")
353 void a41_floatObject2dArray(RoundTrip_Tester t) throws Exception {
354 var x = a(a(1f,null),null);
355 x = t.roundTrip(x, Float[][].class);
356 assertEquals(Float.valueOf(1f), x[0][0]);
357 assertNull(x[0][1]);
358 assertNull(x[1]);
359 }
360
361 @ParameterizedTest
362 @MethodSource("testers")
363 void a42_doubleObject(RoundTrip_Tester t) throws Exception {
364 assertEquals(Double.valueOf(1d), t.roundTrip((Double)1d, Double.class));
365 }
366
367 @ParameterizedTest
368 @MethodSource("testers")
369 void a43_doubleObjectArray(RoundTrip_Tester t) throws Exception {
370 var x = a(1d,null);
371 x = t.roundTrip(x, Double[].class);
372 assertEquals(Double.valueOf(1d), x[0]);
373 assertNull(x[1]);
374 }
375
376 @ParameterizedTest
377 @MethodSource("testers")
378 void a44_doubleObject2dArray(RoundTrip_Tester t) throws Exception {
379 var x = a(a(1d,null),null);
380 x = t.roundTrip(x, Double[][].class);
381 assertEquals(Double.valueOf(1d), x[0][0]);
382 assertNull(x[0][1]);
383 assertNull(x[1]);
384 }
385
386 @ParameterizedTest
387 @MethodSource("testers")
388 void a45_longObject(RoundTrip_Tester t) throws Exception {
389 assertEquals(Long.valueOf(1L), t.roundTrip((Long)1L, Long.class));
390 }
391
392 @ParameterizedTest
393 @MethodSource("testers")
394 void a46_longObjectArray(RoundTrip_Tester t) throws Exception {
395 var x = a(1L, null);
396 x = t.roundTrip(x, Long[].class);
397 assertEquals(Long.valueOf(1L), x[0]);
398 assertNull(x[1]);
399 }
400
401 @ParameterizedTest
402 @MethodSource("testers")
403 void a47_longObject2dArray(RoundTrip_Tester t) throws Exception {
404 var x = a(a(1L,null),null);
405 x = t.roundTrip(x, Long[][].class);
406 assertEquals(Long.valueOf(1L), x[0][0]);
407 assertNull(x[0][1]);
408 assertNull(x[1]);
409 }
410
411 @ParameterizedTest
412 @MethodSource("testers")
413 void a48_shortObject(RoundTrip_Tester t) throws Exception {
414 assertEquals(Short.valueOf((short)1), t.roundTrip((Short)(short)1, Short.class));
415 }
416
417 @ParameterizedTest
418 @MethodSource("testers")
419 void a49_shortObjectArray(RoundTrip_Tester t) throws Exception {
420 var x = a((short)1,null);
421 x = t.roundTrip(x, Short[].class);
422 assertEquals(Short.valueOf((short)1), x[0]);
423 assertNull(x[1]);
424 }
425
426 @ParameterizedTest
427 @MethodSource("testers")
428 void a50_shortObject2dArray(RoundTrip_Tester t) throws Exception {
429 var x = a(a((short)1,null),null);
430 x = t.roundTrip(x, Short[][].class);
431 assertEquals(Short.valueOf((short)1), x[0][0]);
432 assertNull(x[0][1]);
433 assertNull(x[1]);
434 }
435
436 @ParameterizedTest
437 @MethodSource("testers")
438 void a51_jsonMap(RoundTrip_Tester t) throws Exception {
439 var x = JsonMap.ofJson("{a:'b',c:123,d:false,e:null,f:[123,'abc',true,false,null]}");
440 x = t.roundTrip(x);
441 assertEquals("b", x.get("a"));
442 assertEquals(123, x.get("c"));
443 assertEquals(false, x.get("d"));
444 assertNull(x.get("e"));
445 var x2 = (List)x.get("f");
446 assertEquals(123, x2.get(0));
447 assertEquals("abc", x2.get(1));
448 assertEquals(true, x2.get(2));
449 assertEquals(false, x2.get(3));
450 assertNull(x2.get(4));
451 }
452
453 @ParameterizedTest
454 @MethodSource("testers")
455 void a52_jsonList(RoundTrip_Tester t) throws Exception {
456 var x = new JsonList("['abc',123,true,false,null,{a:'b'}]");
457 x = t.roundTrip(x);
458 assertEquals("abc", x.get(0));
459 assertEquals(123, x.get(1));
460 assertEquals(true, x.get(2));
461 assertEquals(false, x.get(3));
462 assertNull(x.get(4));
463 var m = (Map)x.get(5);
464 assertEquals("b", m.get("a"));
465 }
466
467 @ParameterizedTest
468 @MethodSource("testers")
469 void a53_treeMap(RoundTrip_Tester t) throws Exception {
470 var x = new TreeMap<String,Object>();
471 x.put("a", 1);
472 x.put("b", 2);
473 x.put("c", 3);
474 x = t.roundTrip(x, TreeMap.class);
475 assertEquals(1, x.get("a"));
476 assertEquals(2, x.get("b"));
477 assertEquals(3, x.get("c"));
478
479 x = new TreeMap<>();
480 x.put("a", true);
481 x.put("b", false);
482 x.put("c", null);
483 x.put("d", "foo");
484 x.put("null", "baz");
485 x.put("a\"a", "a\"a");
486 x.put("b'b", "b'b");
487 x.put("\"cc\"", "\"cc\"");
488 x.put("'dd'", "'dd'");
489 x = t.roundTrip(x, TreeMap.class);
490 assertEquals(true, x.get("a"));
491 assertEquals(false, x.get("b"));
492 assertNull(x.get("c"));
493 assertEquals("foo", x.get("d"));
494 assertEquals("baz", x.get("null"));
495 assertEquals("a\"a", x.get("a\"a"));
496 assertEquals("b'b", x.get("b'b"));
497 assertEquals("\"cc\"", x.get("\"cc\""));
498 assertEquals("'dd'", x.get("'dd'"));
499 }
500
501 @ParameterizedTest
502 @MethodSource("testers")
503 void a54_linkedHashMap(RoundTrip_Tester t) throws Exception {
504 var x = map();
505 x.put("a", true);
506 x.put("b", false);
507 x.put("c", null);
508 x.put("d", "foo");
509 x.put(null, "bar");
510 x.put("null", "null");
511 x.put("true", "true");
512 x.put("false", "false");
513 x.put("a\"a", "a\"a");
514 x.put("b'b", "b'b");
515 x.put("\"cc\"", "\"cc\"");
516 x.put("'dd'", "'dd'");
517 x.put("<ee>", "<ee>");
518 x.put("<ff/>", "<ff/>");
519 x.put("</gg>", "</gg>");
520 x.put("<>", "<>");
521 x.put("{}", "{}");
522 x.put("[]", "[]");
523 x.put("&", "&");
524 x.put("?", "?");
525 x.put("/", "/");
526 x.put("\b", "\b");
527 x.put("\\b", "\\b");
528 x.put("\n", "\n");
529 x.put("\\n", "\\n");
530 x.put("\t", "\t");
531 x.put("\\t", "\\t");
532 x.put("\f", "\f");
533 x.put("\\f", "\\f");
534 x.put("\\", "\\");
535 x.put("\\\\", "\\\\");
536 x.put("\u2345", "\u2345");
537 x.put("\\u2345", "\\u2345");
538 x.put("\\\u2345", "\\\u2345");
539 x.put("<>{}[]&?/\b\n\t\f\\\\\u2345", "<>{}[]&?/\b\n\t\f\\\\\u2345");
540 x = t.roundTrip(x, LinkedHashMap.class);
541 assertEquals(true, x.get("a"));
542 assertEquals(false, x.get("b"));
543 assertNull(x.get("c"));
544 assertEquals("foo", x.get("d"));
545 assertEquals("bar", x.get(null));
546 assertEquals("null", x.get("null"));
547 assertEquals("true", x.get("true"));
548 assertEquals("false", x.get("false"));
549 assertEquals("a\"a", x.get("a\"a"));
550 assertEquals("b'b", x.get("b'b"));
551 assertEquals("\"cc\"", x.get("\"cc\""));
552 assertEquals("'dd'", x.get("'dd'"));
553 assertEquals("<ee>", x.get("<ee>"));
554 assertEquals("<ff/>", x.get("<ff/>"));
555 assertEquals("</gg>", x.get("</gg>"));
556 assertEquals("<>", x.get("<>"));
557 assertEquals("{}", x.get("{}"));
558 assertEquals("[]", x.get("[]"));
559 assertEquals("&", x.get("&"));
560 assertEquals("?", x.get("?"));
561 assertEquals("/", x.get("/"));
562 assertEquals("\b", x.get("\b"));
563 assertEquals("\\b", x.get("\\b"));
564 assertEquals("\n", x.get("\n"));
565 assertEquals("\\n", x.get("\\n"));
566 assertEquals("\t", x.get("\t"));
567 assertEquals("\\t", x.get("\\t"));
568 assertEquals("\f", x.get("\f"));
569 assertEquals("\\f", x.get("\\f"));
570 assertEquals("\\", x.get("\\"));
571 assertEquals("\\\\", x.get("\\\\"));
572 assertEquals("\u2345", x.get("\u2345"));
573 assertEquals("\\u2345", x.get("\\u2345"));
574 assertEquals("\\\u2345", x.get("\\\u2345"));
575 assertEquals("<>{}[]&?/\b\n\t\f\\\\\u2345", x.get("<>{}[]&?/\b\n\t\f\\\\\u2345"));
576 }
577
578 @ParameterizedTest
579 @MethodSource("testers")
580 void a55_vector(RoundTrip_Tester t) {
581 var x = new Vector<Integer>();
582 x.add(1);
583 x.add(2);
584 x.add(3);
585 assertDoesNotThrow(()->t.roundTrip(x, Vector.class, Integer.class));
586 }
587
588 @ParameterizedTest
589 @MethodSource("testers")
590 void a56_extendedUnicode(RoundTrip_Tester t) throws Exception {
591
592 assertEquals("𤭢𤭢", t.roundTrip("𤭢𤭢"));
593 }
594 }