use bnb::{BitDecode, BitEncode, BitReader, BitWriter, StreamBitReader, u4, u12};
#[derive(BitDecode, BitEncode, Debug, PartialEq, Eq)]
struct Word {
a: u4,
b: u12, }
#[test]
fn decodes_over_slice_and_stream_identically() {
let word = Word {
a: u4::new(0xA),
b: u12::new(0xBCD),
};
let mut w = BitWriter::new();
word.bit_encode(&mut w).unwrap();
let bytes = w.into_bytes();
assert_eq!(bytes, [0xAB, 0xCD]);
let mut slice = BitReader::new(&bytes);
assert_eq!(Word::bit_decode(&mut slice).unwrap(), word);
let mut stream = StreamBitReader::new(&bytes[..]);
assert_eq!(Word::bit_decode(&mut stream).unwrap(), word);
}