const fn bitpos_shift(bitpos: u8) -> u8 {
let bit = bitpos & 0x7;
let byte = bitpos >> 3;
byte * 8 + (7 - bit)
}
pub const EXTENSION_1: u8 = 1 << bitpos_shift(0);
pub const GROUP: u8 = 1 << bitpos_shift(2);
pub const KID_CONTEXT_FLAG: u8 = 1 << bitpos_shift(3);
pub const KID_FLAG: u8 = 1 << bitpos_shift(4);
pub const PARTIAL_IV: u8 = 0x07;
pub const EXTENSION_2: u16 = 1 << bitpos_shift(8);
pub const NONCE: u16 = 1 << bitpos_shift(15);
#[test]
fn test_bitshift_pos() {
assert_eq!(1 << bitpos_shift(0), 0x80);
assert_eq!(1 << bitpos_shift(7), 1);
assert_eq!(1 << bitpos_shift(8), 0x8000);
assert_eq!(1 << bitpos_shift(15), 0x100);
}
#[test]
fn test_values() {
assert_eq!(EXTENSION_1, 0x80);
assert_eq!(GROUP, 0x20);
assert_eq!(KID_CONTEXT_FLAG, 0x10);
assert_eq!(KID_FLAG, 0x08);
assert_eq!(EXTENSION_2, 0x8000);
assert_eq!(NONCE, 0x100);
}