use std::io::Cursor; use structsy::{internal::Description, Persistent, Ref}; use structsy_derive::{Persistent, PersistentEmbedded}; #[derive(Persistent)] struct PersistentData { test_string: String, test_u8: u8, test_u16: u16, test_u32: u32, test_u64: u64, test_u128: u128, test_i8: i8, test_i16: i16, test_i32: i32, test_i64: i64, test_i128: i128, test_bool: bool, test_f32: f32, test_f64: f64, test_option: Option, test_vec: Vec, test_ref: Ref, test_vec_bool: Vec, test_embedded: EmbeddedData, test_option_string: Option, } #[derive(Persistent)] struct ReferedData { name: String, } #[derive(PersistentEmbedded)] struct EmbeddedData { test_string: String, test_u8: u8, test_u16: u16, test_u32: u32, test_u64: u64, test_u128: u128, test_i8: i8, test_i16: i16, test_i32: i32, test_i64: i64, test_i128: i128, test_bool: bool, test_f32: f32, test_f64: f64, test_option: Option, test_vec: Vec, test_ref: Ref, test_vec_bool: Vec, test_other_embedded: OtherEmbedded, } #[derive(PersistentEmbedded)] pub struct OtherEmbedded {} #[derive(Persistent)] pub enum Simple { Value(ValueEnum), Other, } #[derive(PersistentEmbedded)] pub struct ValueEnum { string: String, emb: EmbeddedEnum, } #[derive(PersistentEmbedded)] pub enum EmbeddedEnum { X, Y, } #[test] fn test_read_write_desc() { let desc = PersistentData::get_description(); let mut buff = Vec::new(); desc.write(&mut buff).unwrap(); let read_desc = Description::read(&mut Cursor::new(buff)).unwrap(); assert_eq!(desc, read_desc); } #[test] fn test_read_write_desc_enum() { let desc = Simple::get_description(); let mut buff = Vec::new(); desc.write(&mut buff).unwrap(); let read_desc = Description::read(&mut Cursor::new(buff)).unwrap(); assert_eq!(desc, read_desc); }