use super::*; fn reserialize(item: &T) -> T { let mut writer = Vec::new(); item.mt_serialize::(&mut writer).unwrap(); let mut reader = std::io::Cursor::new(writer); T::mt_deserialize::(&mut reader).unwrap() } #[test] fn test_reserialize() { let vec = vec![1, 2, 3]; // encoded with 8-bit length assert_eq!(vec, reserialize::(&vec)); let vec2 = vec![1, 2, 3]; // encoded without length - drains the Reader assert_eq!(vec2, reserialize::<(), _>(&vec2)); let st: String = "ยต รŸ ็ง ๐Ÿ˜€\n".into(); // encoded as UTF-16 with 32-bit length (also works with () or other types) assert_eq!(st, reserialize::, _>(&st)); let long: Vec<_> = (0..=256).collect(); assert!(matches!( long.mt_serialize::(&mut Vec::new()), Err(SerializeError::TooBig(_)) )); }