use bitcraft::bitstruct;
bitstruct! {
struct I8Struct(i8) {
a: bool = 1,
b: u8 = 6, }
}
bitstruct! {
struct I16Struct(i16) {
x: u8 = 4,
y: u16 = 11, }
}
bitstruct! {
struct I64Struct(i64) {
a: u32 = 32,
b: u32 = 31, }
}
bitstruct! {
struct I128Struct(i128) {
a: u64 = 64,
b: u64 = 63, }
}
#[test]
fn test_i8_struct() {
let mut s = I8Struct::from_bits(-1); assert_eq!(s.a(), true);
assert_eq!(s.b(), 0b0011_1111);
s.set_a(false);
s.set_b(0);
assert_eq!(s.to_bits(), -128); }
#[test]
fn test_i16_struct() {
let mut s = I16Struct::from_bits(0);
s.set_x(0xF);
s.set_y(0x7FF);
assert_eq!(s.to_bits(), 0x7FFF); }
#[test]
fn test_i64_struct() {
let s = I64Struct::from_bits(-1) .with_a(0)
.with_b(0);
assert_eq!(s.to_bits(), i64::MIN);
}
#[test]
fn test_i128_struct() {
let s = I128Struct::default()
.with_a(0x1234567890ABCDEF)
.with_b(0x7FFFFFFFFFFFFFFF);
assert_eq!(s.a(), 0x1234567890ABCDEF);
assert_eq!(s.b(), 0x7FFFFFFFFFFFFFFF);
}