@@ -334,3 +334,43 @@ fn de_hex2bytes_should_work() {
334
334
LJFN { ljf: ( * b"Love Jane Forever" ) . to_vec( ) }
335
335
) ;
336
336
}
337
+
338
+ #[ test]
339
+ fn random_input_should_work ( ) {
340
+ const DATA_1 : & [ u8 ] = include_bytes ! ( "lib.rs" ) ;
341
+ const DATA_2 : & [ u8 ] = include_bytes ! ( "test.rs" ) ;
342
+
343
+ let data = [ DATA_1 , DATA_2 ] . concat ( ) ;
344
+
345
+ for chunks_size in [ 8 , 16 , 32 , 64 , 128 , 256 , 512 , 1024 ] {
346
+ let mut data_pieces = Vec :: new ( ) ;
347
+
348
+ data. chunks ( chunks_size) . enumerate ( ) . for_each ( |( i, chunk) | {
349
+ data_pieces. push ( bytes2hex ( if i % 2 == 0 { "0x" } else { "" } , chunk) )
350
+ } ) ;
351
+
352
+ let data_pieces = data_pieces
353
+ . into_iter ( )
354
+ . enumerate ( )
355
+ . map ( |( i, piece) | {
356
+ if i % 2 == 0 {
357
+ match piece. trim_start_matches ( "0x" ) . len ( ) {
358
+ 8 => hex2array_unchecked :: < 8 > ( & piece) . to_vec ( ) ,
359
+ 32 => hex2array_unchecked :: < 16 > ( & piece) . to_vec ( ) ,
360
+ 64 => hex2array_unchecked :: < 32 > ( & piece) . to_vec ( ) ,
361
+ 128 => hex2array_unchecked :: < 64 > ( & piece) . to_vec ( ) ,
362
+ 256 => hex2array_unchecked :: < 128 > ( & piece) . to_vec ( ) ,
363
+ 512 => hex2array_unchecked :: < 256 > ( & piece) . to_vec ( ) ,
364
+ 1024 => hex2array_unchecked :: < 512 > ( & piece) . to_vec ( ) ,
365
+ 2048 => hex2array_unchecked :: < 1024 > ( & piece) . to_vec ( ) ,
366
+ _ => hex2bytes_unchecked ( & piece) ,
367
+ }
368
+ } else {
369
+ hex2bytes_unchecked ( & piece)
370
+ }
371
+ } )
372
+ . collect :: < Vec < _ > > ( ) ;
373
+
374
+ assert_eq ! ( data_pieces. concat( ) , data)
375
+ }
376
+ }
0 commit comments