1
1
package com .fasterxml .jackson .dataformat .cbor ;
2
2
3
- import junit .framework .TestCase ;
4
-
5
3
import java .io .ByteArrayOutputStream ;
6
4
import java .io .IOException ;
7
5
8
-
9
- public class MapAndArrayTest extends TestCase {
10
-
6
+ public class MapAndArrayTest extends CBORTestBase
7
+ {
11
8
/**
12
9
* Test for verifying complex Array and Map generation with limited and unlimited size
13
10
*/
@@ -36,11 +33,11 @@ public void testCborBasicMap() throws IOException {
36
33
gen .close ();
37
34
38
35
byte [] bytes = payloadOut .toByteArray ();
39
- String hexData = javax . xml . bind . DatatypeConverter . printHexBinary (bytes );
36
+ String hexData = asHex (bytes );
40
37
41
38
assertTrue (hexData .equalsIgnoreCase ("bf6346756ef563416d7421ff" ));
42
39
}
43
-
40
+
44
41
public void testCborUnsizedMap () throws IOException {
45
42
/* {_"Fun": true, 1504: -33, 1505: false, 13171233041: 22}
46
43
@@ -77,8 +74,7 @@ public void testCborUnsizedMap() throws IOException {
77
74
gen .writeNumber (22 );
78
75
gen .close ();
79
76
80
- byte [] bytes = payloadOut .toByteArray ();
81
- String hexData = javax .xml .bind .DatatypeConverter .printHexBinary (bytes );
77
+ String hexData = asHex (payloadOut .toByteArray ());
82
78
83
79
assertTrue (hexData .equalsIgnoreCase ("bf6346756ef51905e038201905e1f41b000000031111111116ff" ));
84
80
}
@@ -131,9 +127,7 @@ public void testCborSizedMap() throws IOException {
131
127
gen .writeEndObject ();
132
128
gen .close ();
133
129
134
- byte [] bytes = payloadOut .toByteArray ();
135
- String hexData = javax .xml .bind .DatatypeConverter .printHexBinary (bytes );
136
-
130
+ String hexData = asHex (payloadOut .toByteArray ());
137
131
assertTrue (hexData .equalsIgnoreCase ("A51905e038201905e1f41905E26346756e63416d748202031905E3F4" ));
138
132
}
139
133
@@ -184,9 +178,8 @@ public void testCborSizedMapWithParserTest() throws IOException {
184
178
gen .writeEndObject ();
185
179
gen .close ();
186
180
187
- byte [] bytes = payloadOut .toByteArray ();
188
- String hexData = javax .xml .bind .DatatypeConverter .printHexBinary (bytes );
189
-
181
+ final byte [] bytes = payloadOut .toByteArray ();
182
+ String hexData = asHex (bytes );
190
183
assertTrue (hexData .equalsIgnoreCase ("BF1905e038201905e1f41905E26346756e1905E39F616303F4FF1B0000000311111111F4FF" ));
191
184
192
185
/*
@@ -219,9 +212,7 @@ public void testCborUnsizedMapWithArrayAsKey() throws IOException {
219
212
gen .writeEndArray ();
220
213
gen .close ();
221
214
222
- byte [] bytes = payloadOut .toByteArray ();
223
- String hexData = javax .xml .bind .DatatypeConverter .printHexBinary (bytes );
224
-
215
+ String hexData = asHex (payloadOut .toByteArray ());
225
216
assertTrue (hexData .equalsIgnoreCase ("bf61610161629f0203ffff" ));
226
217
}
227
218
@@ -282,9 +273,7 @@ public void testCborMultilevelMapWithMultilevelArrays() throws IOException {
282
273
gen .writeEndObject ();
283
274
gen .close ();
284
275
285
- byte [] bytes = payloadOut .toByteArray ();
286
- String hexData = javax .xml .bind .DatatypeConverter .printHexBinary (bytes );
287
-
276
+ String hexData = asHex (payloadOut .toByteArray ());
288
277
assertTrue (hexData .equalsIgnoreCase ("a461610161629f0203ff1905dd856346756e182c9f182d182e82182f1830ffa2636b6579bf67636f6d706c65781832ff183362353218351905debf18366576616c75651837a21838183d1839183eff" ));
289
278
}
290
279
@@ -319,9 +308,7 @@ public void testCborUnsizedMapWithAllInside() throws IOException {
319
308
gen .writeEndObject ();
320
309
gen .close ();
321
310
322
- byte [] bytes = payloadOut .toByteArray ();
323
- String hexData = javax .xml .bind .DatatypeConverter .printHexBinary (bytes );
324
-
311
+ String hexData = asHex (payloadOut .toByteArray ());
325
312
assertTrue (hexData .equalsIgnoreCase ("BF1905e0A11909C838201905e1f41905E26346756e1905E39F616303F4FF1B0000000311111111F4FF" ));
326
313
}
327
314
@@ -348,9 +335,7 @@ public void testCborArraysInArray() throws IOException {
348
335
gen .writeEndArray ();
349
336
gen .close ();
350
337
351
- byte [] bytes = payloadOut .toByteArray ();
352
- String hexData = javax .xml .bind .DatatypeConverter .printHexBinary (bytes );
353
-
338
+ String hexData = asHex (payloadOut .toByteArray ());
354
339
assertTrue (hexData .equalsIgnoreCase ("9f018202039f0405ffff" ));
355
340
}
356
341
@@ -396,9 +381,7 @@ public void testCborArraysInUnsizedArray() throws IOException {
396
381
gen .writeEndArray ();
397
382
gen .close ();
398
383
399
- byte [] bytes = payloadOut .toByteArray ();
400
- String hexData = javax .xml .bind .DatatypeConverter .printHexBinary (bytes );
401
-
384
+ String hexData = asHex (payloadOut .toByteArray ());
402
385
assertTrue (hexData .equalsIgnoreCase ("9f018202039f0405ff8306079f080808820101ff8209099f0001ffff" ));
403
386
}
404
387
@@ -441,9 +424,7 @@ public void testCborArraysInSizedArray() throws IOException {
441
424
gen .writeEndArray (); // [1,[_2,3,4,_][_4,[5,[_6,6,6]]],[7,8,[_9,10]]]
442
425
gen .close ();
443
426
444
- byte [] bytes = payloadOut .toByteArray ();
445
- String hexData = javax .xml .bind .DatatypeConverter .printHexBinary (bytes );
446
-
427
+ String hexData = asHex (payloadOut .toByteArray ());
447
428
assertTrue (hexData .equalsIgnoreCase ("84019f020304ff9f0482059f060606ffff8307089f090aff" ));
448
429
}
449
430
@@ -485,9 +466,7 @@ public void testCborSizedArray() throws IOException {
485
466
gen .writeEndArray ();
486
467
gen .close ();
487
468
488
- byte [] bytes = payloadOut .toByteArray ();
489
- String hexData = javax .xml .bind .DatatypeConverter .printHexBinary (bytes );
490
-
469
+ String hexData = asHex (payloadOut .toByteArray ());
491
470
assertTrue (hexData .equalsIgnoreCase ("8318219901000102030405060708090A0B0C0D0E0F101112131415161718181819181A181B181C181D181E181F1820182118221823182418251826182718281829182A182B182C182D182E182F1830183118321833183418351836183718381839183A183B183C183D183E183F1840184118421843184418451846184718481849184A184B184C184D184E184F1850185118521853185418551856185718581859185A185B185C185D185E185F1860186118621863186418651866186718681869186A186B186C186D186E186F1870187118721873187418751876187718781879187A187B187C187D187E187F1880188118821883188418851886188718881889188A188B188C188D188E188F1890189118921893189418951896189718981899189A189B189C189D189E189F18A018A118A218A318A418A518A618A718A818A918AA18AB18AC18AD18AE18AF18B018B118B218B318B418B518B618B718B818B918BA18BB18BC18BD18BE18BF18C018C118C218C318C418C518C618C718C818C918CA18CB18CC18CD18CE18CF18D018D118D218D318D418D518D618D718D818D918DA18DB18DC18DD18DE18DF18E018E118E218E318E418E518E618E718E818E918EA18EB18EC18ED18EE18EF18F018F118F218F318F418F518F618F718F818F918FA18FB18FC18FD18FE18FF1901001822" ));
492
471
}
493
472
@@ -511,9 +490,17 @@ public void testCborSizedArrayWithMap() throws IOException {
511
490
gen .writeEndArray ();
512
491
gen .close ();
513
492
514
- byte [] bytes = payloadOut .toByteArray ();
515
- String hexData = javax .xml .bind .DatatypeConverter .printHexBinary (bytes );
516
-
493
+ String hexData = asHex (payloadOut .toByteArray ());
517
494
assertTrue (hexData .equalsIgnoreCase ("826161bf6162616361646165ff" ));
518
495
}
519
- }
496
+
497
+ private String asHex (byte [] data ) {
498
+ // Let's NOT rely on JDK converters as things get trickier with Java 9.
499
+ // Brute force and ugly but will do
500
+ StringBuilder sb = new StringBuilder (data .length * 2 );
501
+ for (int i = 0 , end = data .length ; i < end ; ++i ) {
502
+ sb .append (String .format ("%02x" , data [i ] & 0xFF ));
503
+ }
504
+ return sb .toString ();
505
+ }
506
+ }
0 commit comments