use binrw::{binrw, io::Cursor, BinReaderExt, BinWrite};
#[test]
fn round_trip_top_level_map() {
#[binrw]
#[br(map = Test::from_bytes)]
#[bw(map = Test::to_bytes)]
struct Test {
x: bool,
}
impl Test {
fn to_bytes(&self) -> [u8; 4] {
if self.x {
[1, 0, 0, 0]
} else {
[0; 4]
}
}
fn from_bytes(bytes: [u8; 4]) -> Self {
Self { x: bytes[0] == 1 }
}
}
let data = b"\x01\0\0\0";
let test: Test = Cursor::new(data).read_be().unwrap();
let mut x = Cursor::new(Vec::new());
test.write(&mut x).unwrap();
assert_eq!(x.into_inner(), data);
}