@@ -343,4 +343,45 @@ mod tests {
343343 assert ! ( !encoder. advance( ) ) ;
344344 assert_eq ! ( encoder. current_chunk( ) , None ) ;
345345 }
346+
347+ #[ test]
348+ fn encode_slice_with_elements ( ) {
349+ // Should have length prefix chunk, then element chunks, then exhausted.
350+ let slice = & [ TestArray ( [ 0x34 , 0x12 , 0x00 , 0x00 ] ) , TestArray ( [ 0x78 , 0x56 , 0x00 , 0x00 ] ) ] ;
351+ let mut encoder = SliceEncoder :: with_length_prefix ( slice) ;
352+
353+ assert_eq ! ( encoder. current_chunk( ) , Some ( & [ 2u8 ] [ ..] ) ) ;
354+ assert ! ( encoder. advance( ) ) ;
355+ assert_eq ! ( encoder. current_chunk( ) , Some ( & [ 0x34 , 0x12 , 0x00 , 0x00 ] [ ..] ) ) ;
356+ assert ! ( encoder. advance( ) ) ;
357+ assert_eq ! ( encoder. current_chunk( ) , Some ( & [ 0x78 , 0x56 , 0x00 , 0x00 ] [ ..] ) ) ;
358+ assert ! ( !encoder. advance( ) ) ;
359+ assert_eq ! ( encoder. current_chunk( ) , None ) ;
360+ }
361+
362+ #[ test]
363+ fn encode_empty_slice ( ) {
364+ // Should have only length prefix chunk (0), then exhausted.
365+ let slice: & [ TestArray < 4 > ] = & [ ] ;
366+ let mut encoder = SliceEncoder :: with_length_prefix ( slice) ;
367+
368+ assert_eq ! ( encoder. current_chunk( ) , Some ( & [ 0u8 ] [ ..] ) ) ;
369+ assert ! ( !encoder. advance( ) ) ;
370+ assert_eq ! ( encoder. current_chunk( ) , None ) ;
371+ }
372+
373+ #[ test]
374+ fn encode_slice_with_zero_sized_arrays ( ) {
375+ // Should have length prefix chunk, then empty array chunks, then exhausted.
376+ let slice = & [ TestArray ( [ ] ) , TestArray ( [ ] ) ] ;
377+ let mut encoder = SliceEncoder :: with_length_prefix ( slice) ;
378+
379+ assert_eq ! ( encoder. current_chunk( ) , Some ( & [ 2u8 ] [ ..] ) ) ;
380+ assert ! ( encoder. advance( ) ) ;
381+ assert_eq ! ( encoder. current_chunk( ) , Some ( & [ ] [ ..] ) ) ;
382+ assert ! ( encoder. advance( ) ) ;
383+ assert_eq ! ( encoder. current_chunk( ) , Some ( & [ ] [ ..] ) ) ;
384+ assert ! ( !encoder. advance( ) ) ;
385+ assert_eq ! ( encoder. current_chunk( ) , None ) ;
386+ }
346387}
0 commit comments