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