Skip to content

Commit

Permalink
More fixup
Browse files Browse the repository at this point in the history
  • Loading branch information
wcampbell0x2a committed Oct 14, 2023
1 parent 1d3d9d4 commit b5d9050
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 44 deletions.
4 changes: 2 additions & 2 deletions deku-derive/src/macros/deku_write.rs
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,7 @@ fn emit_enum(input: &DekuData) -> Result<TokenStream, syn::Error> {
fn to_bytes(&self) -> core::result::Result<Vec<u8>, ::#crate_::DekuError> {
let mut out_buf = vec![];
let mut __deku_writer = ::#crate_::writer::Writer::new(&mut out_buf);
::#crate_::DekuWriter::to_writer(self, &mut __deku_writer, ());
::#crate_::DekuWriter::to_writer(self, &mut __deku_writer, ())?;
__deku_writer.finalize()?;
Ok(out_buf)
}
Expand Down Expand Up @@ -310,7 +310,7 @@ fn emit_magic_write(input: &DekuData) -> TokenStream {
let crate_ = super::get_crate_name();
if let Some(magic) = &input.magic {
quote! {
::#crate_::DekuWriter::to_writer(#magic, __deku_writer, ());
::#crate_::DekuWriter::to_writer(#magic, __deku_writer, ())?;
}
} else {
quote! {}
Expand Down
43 changes: 4 additions & 39 deletions src/impls/hashmap.rs
Original file line number Diff line number Diff line change
Expand Up @@ -270,44 +270,9 @@ mod tests {
case::normal(fxhashmap!{0x11u8 => 0xAABBu16, 0x23u8 => 0xCCDDu16}, Endian::Little, vec![0x11, 0xBB, 0xAA, 0x23, 0xDD, 0xCC]),
)]
fn test_hashmap_write(input: FxHashMap<u8, u16>, endian: Endian, expected: Vec<u8>) {
//let mut res_write = bitvec![u8, Msb0;];
//input.write(&mut res_write, endian).unwrap();
//assert_eq!(expected, res_write.into_vec());
}

// Note: These tests also exist in boxed.rs
#[rstest(input, endian, limit, expected, expected_rest_bits, expected_rest_bytes, expected_write,
case::normal_le([0xAA, 0xBB, 0, 0xCC, 0xDD, 0].as_ref(), Endian::Little, 2.into(), fxhashmap!{0xBBAA => 0, 0xDDCC => 0}, bits![u8, Msb0;], &[], vec![0xCC, 0xDD, 0, 0xAA, 0xBB, 0]),
case::normal_be([0xAA, 0xBB, 0, 0xCC, 0xDD, 0].as_ref(), Endian::Big, 2.into(), fxhashmap!{0xAABB => 0, 0xCCDD => 0}, bits![u8, Msb0;], &[], vec![0xCC, 0xDD, 0, 0xAA, 0xBB, 0]),
case::predicate_le([0xAA, 0xBB, 0, 0xCC, 0xDD, 0].as_ref(), Endian::Little, (|kv: &(u16, u8)| kv.0 == 0xBBAA && kv.1 == 0).into(), fxhashmap!{0xBBAA => 0}, bits![u8, Msb0;], &[0xcc, 0xdd, 0], vec![0xAA, 0xBB, 0]),
case::predicate_be([0xAA, 0xBB, 0, 0xCC, 0xDD, 0].as_ref(), Endian::Big, (|kv: &(u16, u8)| kv.0 == 0xAABB && kv.1 == 0).into(), fxhashmap!{0xAABB => 0}, bits![u8, Msb0;], &[0xcc, 0xdd, 0], vec![0xAA, 0xBB, 0]),
case::bytes_le([0xAA, 0xBB, 0, 0xCC, 0xDD, 0].as_ref(), Endian::Little, BitSize(24).into(), fxhashmap!{0xBBAA => 0}, bits![u8, Msb0;], &[0xcc, 0xdd, 0], vec![0xAA, 0xBB, 0]),
case::bytes_be([0xAA, 0xBB, 0, 0xCC, 0xDD, 0].as_ref(), Endian::Big, BitSize(24).into(), fxhashmap!{0xAABB => 0}, bits![u8, Msb0;], &[0xcc, 0xdd, 0], vec![0xAA, 0xBB, 0]),
)]
fn test_hashmap_read_write<Predicate: FnMut(&(u16, u8)) -> bool + Copy>(
input: &[u8],
endian: Endian,
limit: Limit<(u16, u8), Predicate>,
expected: FxHashMap<u16, u8>,
expected_rest_bits: &BitSlice<u8, Msb0>,
expected_rest_bytes: &[u8],
expected_write: Vec<u8>,
) {
let mut cursor = Cursor::new(input);
let mut reader = Reader::new(&mut cursor);
let res_read =
FxHashMap::<u16, u8>::from_reader_with_ctx(&mut reader, (limit, endian)).unwrap();
assert_eq!(expected, res_read);
assert_eq!(
reader.rest(),
expected_rest_bits.iter().by_vals().collect::<Vec<bool>>()
);
let mut buf = vec![];
cursor.read_to_end(&mut buf).unwrap();
assert_eq!(expected_rest_bytes, buf);

//let mut res_write = bitvec![u8, Msb0;];
//res_read.write(&mut res_write, endian).unwrap();
//assert_eq!(expected_write, res_write.into_vec());
let mut out_buf = vec![];
let mut writer = Writer::new(&mut out_buf);
input.to_writer(&mut writer, endian).unwrap();
assert_eq!(expected, out_buf);
}
}
7 changes: 4 additions & 3 deletions src/impls/tuple.rs
Original file line number Diff line number Diff line change
Expand Up @@ -97,8 +97,9 @@ mod tests {
where
T: DekuWriter,
{
//let mut res_write = bitvec![u8, Msb0;];
//input.write(&mut res_write, ()).unwrap();
//assert_eq!(expected, res_write.into_vec());
let mut out_buf = vec![];
let mut writer = Writer::new(&mut out_buf);
input.to_writer(&mut writer, ()).unwrap();
assert_eq!(expected, out_buf);
}
}

0 comments on commit b5d9050

Please sign in to comment.