#[test]
fn simple_raw_data_struct() {
let data : ::private::AlignedData<[u8; 16]> = ::private::AlignedData {
_dummy: 0,
data : [0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00,
0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef]
};
let reader = unsafe { ::private::layout::PointerReader::get_root_unchecked(
::std::mem::transmute(data.data.as_ptr())).get_struct(::std::ptr::null()).unwrap() };
assert_eq!(0xefcdab8967452301u64, reader.get_data_field::<u64>(0));
assert_eq!(0, reader.get_data_field::<u64>(1));
assert_eq!(0x67452301u32, reader.get_data_field::<u32>(0));
assert_eq!(0xefcdab89u32, reader.get_data_field::<u32>(1));
assert_eq!(0, reader.get_data_field::<u32>(2));
assert_eq!(0x2301u16, reader.get_data_field::<u16>(0));
assert_eq!(reader.get_bool_field(0), true);
assert_eq!(reader.get_bool_field(1), false);
assert_eq!(reader.get_bool_field(2), false);
assert_eq!(reader.get_bool_field(3), false);
assert_eq!(reader.get_bool_field(4), false);
assert_eq!(reader.get_bool_field(5), false);
assert_eq!(reader.get_bool_field(6), false);
assert_eq!(reader.get_bool_field(7), false);
assert_eq!(reader.get_bool_field(8), true);
assert_eq!(reader.get_bool_field(9), true);
assert_eq!(reader.get_bool_field(10), false);
assert_eq!(reader.get_bool_field(11), false);
assert_eq!(reader.get_bool_field(12), false);
assert_eq!(reader.get_bool_field(13), true);
assert_eq!(reader.get_bool_field(14), false);
assert_eq!(reader.get_bool_field(15), false);
assert_eq!(reader.get_bool_field(63), true);
assert_eq!(reader.get_bool_field(64), false);
}
#[test]
fn bool_list() {
use private::layout::PrimitiveElement;
use traits::FromPointerReader;
let data : ::private::AlignedData<[u8; 16]> = ::private::AlignedData {
_dummy: 0,
data : [0x01, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00,
0x75, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]
};
let pointer_reader = unsafe {
::private::layout::PointerReader::get_root_unchecked(
::std::mem::transmute(data.data.as_ptr()))
};
let reader = pointer_reader.get_list(::private::layout::ElementSize::Bit, ::std::ptr::null()).unwrap();
assert_eq!(reader.len(), 10);
assert_eq!(bool::get(&reader, 0), true);
assert_eq!(bool::get(&reader, 1), false);
assert_eq!(bool::get(&reader, 2), true);
assert_eq!(bool::get(&reader, 3), false);
assert_eq!(bool::get(&reader, 4), true);
assert_eq!(bool::get(&reader, 5), true);
assert_eq!(bool::get(&reader, 6), true);
assert_eq!(bool::get(&reader, 7), false);
assert_eq!(bool::get(&reader, 8), false);
assert_eq!(bool::get(&reader, 9), true);
let reader = ::primitive_list::Reader::<bool>::get_from_pointer(&pointer_reader).unwrap();
assert_eq!(reader.len(), 10);
assert_eq!(reader.get(0), true);
assert_eq!(reader.get(1), false);
assert_eq!(reader.get(2), true);
assert_eq!(reader.get(3), false);
assert_eq!(reader.get(4), true);
assert_eq!(reader.get(5), true);
assert_eq!(reader.get(6), true);
assert_eq!(reader.get(7), false);
assert_eq!(reader.get(8), false);
assert_eq!(reader.get(9), true);
}