@@ -49,6 +49,49 @@ fn slice_as_mut_array() {
4949 assert_eq ! ( A :: slice_as_mut_array( & mut [ 1 , 2 , 3 ] ) , None ) ;
5050}
5151
52+ #[ test]
53+ fn slice_as_chunks ( ) {
54+ type A = Array < u8 , U2 > ;
55+
56+ let ( slice_empty, rem_empty) = A :: slice_as_chunks ( & [ ] ) ;
57+ assert ! ( slice_empty. is_empty( ) ) ;
58+ assert ! ( rem_empty. is_empty( ) ) ;
59+
60+ let ( slice_one, rem_one) = A :: slice_as_chunks ( & [ 1 ] ) ;
61+ assert ! ( slice_one. is_empty( ) ) ;
62+ assert_eq ! ( rem_one, & [ 1 ] ) ;
63+
64+ let ( slice_aligned, rem_aligned) = A :: slice_as_chunks ( & [ 1u8 , 2 ] ) ;
65+ assert_eq ! ( slice_aligned, & [ Array ( [ 1u8 , 2 ] ) ] ) ;
66+ assert_eq ! ( rem_aligned, & [ ] ) ;
67+
68+ let ( slice_unaligned, rem_unaligned) = A :: slice_as_chunks ( & [ 1u8 , 2 , 3 ] ) ;
69+ assert_eq ! ( slice_unaligned, & [ Array ( [ 1u8 , 2 ] ) ] ) ;
70+ assert_eq ! ( rem_unaligned, & [ 3 ] ) ;
71+ }
72+
73+ #[ test]
74+ fn slice_as_chunks_mut ( ) {
75+ type A = Array < u8 , U2 > ;
76+ let mut input = [ 1u8 , 2 , 3 ] ;
77+
78+ let ( slice_empty, rem_empty) = A :: slice_as_chunks_mut ( & mut [ ] ) ;
79+ assert ! ( slice_empty. is_empty( ) ) ;
80+ assert ! ( rem_empty. is_empty( ) ) ;
81+
82+ let ( slice_one, rem_one) = A :: slice_as_chunks_mut ( & mut input[ ..1 ] ) ;
83+ assert ! ( slice_one. is_empty( ) ) ;
84+ assert_eq ! ( rem_one, & [ 1 ] ) ;
85+
86+ let ( slice_aligned, rem_aligned) = A :: slice_as_chunks_mut ( & mut input[ ..2 ] ) ;
87+ assert_eq ! ( slice_aligned, & [ Array ( [ 1u8 , 2 ] ) ] ) ;
88+ assert_eq ! ( rem_aligned, & [ ] ) ;
89+
90+ let ( slice_unaligned, rem_unaligned) = A :: slice_as_chunks_mut ( & mut input) ;
91+ assert_eq ! ( slice_unaligned, & [ Array ( [ 1u8 , 2 ] ) ] ) ;
92+ assert_eq ! ( rem_unaligned, & [ 3 ] ) ;
93+ }
94+
5295#[ test]
5396fn concat ( ) {
5497 let prefix = Array :: < u8 , U2 > :: try_from ( & EXAMPLE_SLICE [ ..2 ] ) . unwrap ( ) ;
0 commit comments