Skip to content

Commit 16aef36

Browse files
committed
Add slice const_generic testing
1 parent 0ada1dc commit 16aef36

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed

src/impls/slice.rs

+57
Original file line numberDiff line numberDiff line change
@@ -104,4 +104,61 @@ mod tests {
104104
input.to_writer(&mut writer, endian).unwrap();
105105
assert_eq!(expected, writer.inner);
106106
}
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+
}
107164
}

0 commit comments

Comments
 (0)