#![allow(dead_code)]
use padlock_macros::{assert_no_padding, assert_size};
#[assert_no_padding]
struct WellOrdered {
a: u64,
b: u32,
c: u32,
}
#[assert_no_padding]
struct Single {
x: u64,
}
#[assert_no_padding]
struct UnitStruct;
#[assert_no_padding]
struct BytePacked {
a: u8,
b: u8,
c: u8,
d: u8,
}
#[assert_no_padding]
#[repr(C)]
struct ReprCNoPadding {
big: u64,
mid: u32,
small: u16,
tiny: u8,
_pad: u8, }
#[assert_size(8)]
struct ExactlyEightBytes {
x: u64,
}
#[assert_size(4)]
struct ExactlyFourBytes {
x: u32,
}
#[test]
fn well_ordered_size_is_correct() {
assert_eq!(std::mem::size_of::<WellOrdered>(), 16);
}
#[test]
fn single_size_is_correct() {
assert_eq!(std::mem::size_of::<Single>(), 8);
}
#[test]
fn byte_packed_size_is_correct() {
assert_eq!(std::mem::size_of::<BytePacked>(), 4);
}
#[test]
fn exactly_eight_bytes_size() {
assert_eq!(std::mem::size_of::<ExactlyEightBytes>(), 8);
}
#[test]
fn exactly_four_bytes_size() {
assert_eq!(std::mem::size_of::<ExactlyFourBytes>(), 4);
}