@@ -104,4 +104,61 @@ mod tests {
104
104
input. to_writer ( & mut writer, endian) . unwrap ( ) ;
105
105
assert_eq ! ( expected, writer. inner) ;
106
106
}
107
+
108
+ #[ rstest( input, endian, expected, expected_rest,
109
+ case:: normal_le(
110
+ [ 0xDD , 0xCC , 0xBB , 0xAA , 0x99 , 0x88 , 0x77 , 0x66 ] . as_ref( ) ,
111
+ Endian :: Little ,
112
+ [ [ 0xCCDD , 0xAABB ] , [ 0x8899 , 0x6677 ] ] ,
113
+ bits![ u8 , Msb0 ; ] ,
114
+ ) ,
115
+ case:: normal_le(
116
+ [ 0xDD , 0xCC , 0xBB , 0xAA , 0x99 , 0x88 , 0x77 , 0x66 ] . as_ref( ) ,
117
+ Endian :: Big ,
118
+ [ [ 0xDDCC , 0xBBAA ] , [ 0x9988 , 0x7766 ] ] ,
119
+ bits![ u8 , Msb0 ; ] ,
120
+ ) ,
121
+ ) ]
122
+ fn test_nested_array_bit_read (
123
+ input : & [ u8 ] ,
124
+ endian : Endian ,
125
+ expected : [ [ u16 ; 2 ] ; 2 ] ,
126
+ expected_rest : & BitSlice < u8 , Msb0 > ,
127
+ ) {
128
+ use no_std_io:: io:: Cursor ;
129
+
130
+ use crate :: reader:: Reader ;
131
+
132
+ let bit_slice = input. view_bits :: < Msb0 > ( ) ;
133
+
134
+ let mut cursor = Cursor :: new ( input) ;
135
+ let mut reader = Reader :: new ( & mut cursor) ;
136
+ let res_read = <[ [ u16 ; 2 ] ; 2 ] >:: from_reader_with_ctx ( & mut reader, endian) . unwrap ( ) ;
137
+ assert_eq ! ( expected, res_read) ;
138
+ }
139
+
140
+ #[ rstest( input, endian, expected,
141
+ case:: normal_le(
142
+ [ [ 0xCCDD , 0xAABB ] , [ 0x8899 , 0x6677 ] ] ,
143
+ Endian :: Little ,
144
+ vec![ 0xDD , 0xCC , 0xBB , 0xAA , 0x99 , 0x88 , 0x77 , 0x66 ] ,
145
+ ) ,
146
+ case:: normal_be(
147
+ [ [ 0xDDCC , 0xBBAA ] , [ 0x9988 , 0x7766 ] ] ,
148
+ Endian :: Big ,
149
+ vec![ 0xDD , 0xCC , 0xBB , 0xAA , 0x99 , 0x88 , 0x77 , 0x66 ] ,
150
+ ) ,
151
+ ) ]
152
+ fn test_nested_array_bit_write ( input : [ [ u16 ; 2 ] ; 2 ] , endian : Endian , expected : Vec < u8 > ) {
153
+ // test writer
154
+ let mut writer = Writer :: new ( vec ! [ ] ) ;
155
+ input. to_writer ( & mut writer, endian) . unwrap ( ) ;
156
+ assert_eq ! ( expected, writer. inner) ;
157
+
158
+ // test &slice
159
+ let input = input. as_ref ( ) ;
160
+ let mut writer = Writer :: new ( vec ! [ ] ) ;
161
+ input. to_writer ( & mut writer, endian) . unwrap ( ) ;
162
+ assert_eq ! ( expected, writer. inner) ;
163
+ }
107
164
}
0 commit comments