1use jgenesis_proc_macros::{FakeDecode, FakeEncode}; 2use std::fs::File; 3 4#[derive(FakeEncode, FakeDecode)] 5struct NotSerializable { 6 file: Option<File>, 7} 8 9impl Default for NotSerializable { 10 fn default() -> Self { 11 Self { file: None } 12 } 13} 14 15#[test] 16fn fake_encode_decode() { 17 let bincode_config = bincode::config::standard(); 18 19 let not_serializable = NotSerializable { file: None }; 20 21 let serialized = bincode::encode_to_vec(not_serializable, bincode_config) 22 .expect("Failed to serialize using FakeEncode implementation"); 23 24 let (deserialized, _) = 25 bincode::decode_from_slice::<NotSerializable, _>(&serialized, bincode_config) 26 .expect("Failed to deserialize using FakeDecode implementation"); 27 assert!(deserialized.file.is_none()); 28} 29 30#[derive(FakeEncode, FakeDecode)] 31struct HasGenericType<T: Default>(T); 32 33impl<T: Default> Default for HasGenericType<T> { 34 fn default() -> Self { 35 Self(T::default()) 36 } 37} 38 39#[test] 40fn fake_encode_decode_with_generics() { 41 let bincode_config = bincode::config::standard(); 42 43 let value: HasGenericType<i32> = HasGenericType(42); 44 45 let serialized = bincode::encode_to_vec(value, bincode_config) 46 .expect("Failed to serialize using FakeEncode implementation"); 47 48 let (deserialized, _) = 49 bincode::decode_from_slice::<HasGenericType<i32>, _>(&serialized, bincode_config) 50 .expect("Failed to deserialize using FakeDecode implementation"); 51 52 assert_eq!(deserialized.0, 0); 53}