use pith_digest::BitReader;
#[test]
fn bits_over_64_is_bad_value() {
let mut r = BitReader::new(&[0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF]);
assert_eq!(
r.bits(65),
Err(pith_digest::Error::BadValue("bit width over 64"))
);
assert_eq!(r.bit_position(), 0);
}
#[test]
fn bit_position_tracks_consumed_bits() {
let mut r = BitReader::new(&[0xA6, 0x50]);
assert_eq!(r.bit_position(), 0);
r.bits(3).unwrap();
assert_eq!(r.bit_position(), 3);
r.bits(5).unwrap();
assert_eq!(r.bit_position(), 8);
r.bits(0).unwrap();
assert_eq!(r.bit_position(), 8);
}
#[test]
fn unaligned_spanning_field_assembles_from_head_and_bytes() {
let mut r = BitReader::new(&[0xA6, 0x50, 0x00]);
r.bits(3).unwrap();
assert_eq!(r.bits(12).unwrap(), 0b0011_0010_1000);
assert_eq!(r.bit_position(), 15);
}