use epserde::prelude::*;
#[derive(Epserde, Debug, Clone, Copy, PartialEq, Eq)]
#[repr(C)]
#[repr(align(32))]
#[repr(align(64))] #[epserde(zero_copy)]
struct MyStruct64 {
u: u32,
}
#[derive(Epserde, Debug, Clone, Copy, PartialEq, Eq)]
#[repr(C)]
#[repr(align(2))]
#[epserde(zero_copy)]
struct MyStruct2 {
u: u32,
}
#[derive(Epserde, Debug, Clone, Copy, PartialEq, Eq)]
#[repr(C)]
#[epserde(zero_copy)]
struct MyStruct {
u: u32,
}
#[test]
fn test_align_to() {
assert_eq!(64, MyStruct64::align_to());
assert_eq!(MyStruct::align_to(), MyStruct2::align_to());
let x = MyStruct { u: 0x89 };
let mut cursor = <AlignedCursor<Aligned16>>::new();
let _bytes_written = unsafe { x.serialize(&mut cursor).unwrap() };
let eps = unsafe { <MyStruct>::deserialize_eps(cursor.as_bytes()).unwrap() };
assert_eq!(x, *eps);
let x = MyStruct2 { u: 0x89 };
let mut cursor = <AlignedCursor<Aligned16>>::new();
let _bytes_written = unsafe { x.serialize(&mut cursor).unwrap() };
let eps = unsafe { <MyStruct2>::deserialize_eps(cursor.as_bytes()).unwrap() };
assert_eq!(x, *eps);
let x = MyStruct64 { u: 0x89 };
let mut cursor = <AlignedCursor<Aligned64>>::new();
let _bytes_written = unsafe { x.serialize(&mut cursor).unwrap() };
let eps = unsafe { <MyStruct64>::deserialize_eps(cursor.as_bytes()).unwrap() };
assert_eq!(x, *eps);
}