]> git.lizzy.rs Git - mt_ser.git/blobdiff - src/tests.rs
Implement UTF-8 decode and move packets to different crate
[mt_ser.git] / src / tests.rs
diff --git a/src/tests.rs b/src/tests.rs
new file mode 100644 (file)
index 0000000..b013643
--- /dev/null
@@ -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(_))
+    ));
+}