#![cfg(feature = "test")] use musli::{Decode, Encode}; #[derive(Debug, PartialEq, Encode, Decode)] #[musli(transparent)] struct TransparentStruct { string: String, } #[derive(Debug, PartialEq, Encode, Decode)] #[musli(transparent)] struct TransparentTuple(String); #[derive(Debug, PartialEq, Encode, Decode)] enum TransparentEnum { NotTransparent { a: u32, b: u32, }, #[musli(transparent)] Transparent(u32), } #[derive(Debug, PartialEq, Encode, Decode)] #[musli(packed)] #[allow(dead_code)] struct TransparentEnumUnpacked { type_tag: u8, variant_tag_type: u8, variant_tag: u8, value_type: u8, value: u32, } #[test] fn transparent_struct() { musli::macros::assert_roundtrip_eq!( full, TransparentStruct { string: String::from("Hello World"), } ); musli::macros::assert_roundtrip_eq!(full, TransparentTuple(String::from("Hello World"))); musli::macros::assert_decode_eq!( full, TransparentStruct { string: String::from("Hello World"), }, String::from("Hello World"), json = r#""Hello World""#, ); musli::macros::assert_decode_eq!( full, TransparentTuple(String::from("Hello World")), String::from("Hello World"), json = r#""Hello World""#, ); } #[test] fn transparent_enum() { musli::macros::assert_roundtrip_eq!(full, TransparentEnum::Transparent(42)); musli::macros::assert_roundtrip_eq!(full, TransparentEnum::NotTransparent { a: 1, b: 2 }); }