#![cfg(test)]
#[cfg(feature = "proc_macro")]
use core::mem::ManuallyDrop;
#[cfg(feature = "proc_macro")]
use oct::serdes::MaxSerialisedSize;
#[cfg(feature = "proc_macro")]
#[test]
fn test_derive_max_serialised_size() {
#[derive(MaxSerialisedSize)]
struct StructUnit;
#[derive(MaxSerialisedSize)]
struct StructNamed {
_raw_name: [u8; 16],
_birthday: u64,
}
#[derive(MaxSerialisedSize)]
struct StructUnnamed(
#[expect(unused)]
[f64; 6],
);
#[expect(unused)]
#[derive(MaxSerialisedSize)]
enum Enum {
Unit,
Named {
named: StructNamed,
},
Unnamed(StructUnnamed),
}
#[derive(MaxSerialisedSize)]
union Union<T: MaxSerialisedSize> {
_null: ManuallyDrop<[T; 0]>,
_single: ManuallyDrop<[T; 1]>,
_double: ManuallyDrop<[T; 2]>,
}
assert_eq!(StructUnit::MAX_SERIALISED_SIZE, 0);
assert_eq!(StructNamed::MAX_SERIALISED_SIZE, 24);
assert_eq!(StructUnnamed::MAX_SERIALISED_SIZE, 48);
assert_eq!(Enum::MAX_SERIALISED_SIZE, 49);
assert_eq!(Union::<u128>::MAX_SERIALISED_SIZE, 32);
}