diff options
author | Lizzy Fleckenstein <eliasfleckenstein@web.de> | 2023-02-10 13:50:58 +0100 |
---|---|---|
committer | Lizzy Fleckenstein <eliasfleckenstein@web.de> | 2023-02-10 13:50:58 +0100 |
commit | 3ed5bfd5ac9f12f323bcdb36f8fb840855d02634 (patch) | |
tree | 82e2ed862a6de7c832a49ec37e0075dcb3bfdf78 /src/tests.rs | |
parent | 800bb04e808aa2881719857e5027d251afc047ac (diff) | |
download | mt_ser-3ed5bfd5ac9f12f323bcdb36f8fb840855d02634.tar.xz |
Implement UTF-8 decode and move packets to different crate
Diffstat (limited to 'src/tests.rs')
-rw-r--r-- | src/tests.rs | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/tests.rs b/src/tests.rs new file mode 100644 index 0000000..b013643 --- /dev/null +++ b/src/tests.rs @@ -0,0 +1,30 @@ +use super::*; + +fn reserialize<C: MtCfg, T: MtSerialize + MtDeserialize>(item: &T) -> T { + let mut writer = Vec::new(); + item.mt_serialize::<C>(&mut writer).unwrap(); + + let mut reader = std::io::Cursor::new(writer); + T::mt_deserialize::<C>(&mut reader).unwrap() +} + +#[test] +fn test_reserialize() { + let vec = vec![1, 2, 3]; + // encoded with 8-bit length + assert_eq!(vec, reserialize::<u8, _>(&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::<Utf16<u32>, _>(&st)); + + let long: Vec<_> = (0..=256).collect(); + assert!(matches!( + long.mt_serialize::<u8>(&mut Vec::new()), + Err(SerializeError::TooBig(_)) + )); +} |