use musli::{Decode, Encode};
#[test]
fn struct_fields() {
macro_rules! test_case {
($ty:ty) => {{
#[derive(Debug, PartialEq, Encode, Decode)]
#[musli(name(type = $ty))]
struct Struct {
#[musli(name = <$ty>::MIN)]
min: u32,
#[musli(name = <$ty>::MAX)]
max: u32,
}
musli::macros::assert_roundtrip_eq!(
full,
Struct { min: 42, max: 43 },
json = format!(r#"{{"{}":42,"{}":43}}"#, <$ty>::MIN, <$ty>::MAX)
);
}};
}
test_case!(u8);
test_case!(u16);
test_case!(u32);
test_case!(u64);
test_case!(u128);
test_case!(i8);
test_case!(i16);
test_case!(i32);
test_case!(i64);
test_case!(i128);
test_case!(isize);
test_case!(usize);
}
#[test]
fn variant_names() {
macro_rules! test_case {
($ty:ty) => {{
#[derive(Debug, PartialEq, Encode, Decode)]
#[musli(name(type = $ty))]
enum Enum {
#[musli(packed, name = <$ty>::MAX)]
Variant1(u32),
#[musli(packed, name = <$ty>::MIN)]
Variant2(u32),
}
musli::macros::assert_roundtrip_eq!(
full,
Enum::Variant1(43),
json = format!(r#"{{"{}":[43]}}"#, <$ty>::MAX)
);
musli::macros::assert_roundtrip_eq!(
full,
Enum::Variant2(44),
json = format!(r#"{{"{}":[44]}}"#, <$ty>::MIN)
);
}};
}
test_case!(u8);
test_case!(u16);
test_case!(u32);
test_case!(u64);
test_case!(u128);
test_case!(i8);
test_case!(i16);
test_case!(i32);
test_case!(i64);
test_case!(i128);
test_case!(isize);
test_case!(usize);
}