summaryrefslogtreecommitdiff
path: root/src/tests.rs
diff options
context:
space:
mode:
authorLizzy Fleckenstein <eliasfleckenstein@web.de>2023-02-10 13:50:58 +0100
committerLizzy Fleckenstein <eliasfleckenstein@web.de>2023-02-10 13:50:58 +0100
commit3ed5bfd5ac9f12f323bcdb36f8fb840855d02634 (patch)
tree82e2ed862a6de7c832a49ec37e0075dcb3bfdf78 /src/tests.rs
parent800bb04e808aa2881719857e5027d251afc047ac (diff)
downloadmt_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.rs30
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(_))
+ ));
+}