Explorar o código

Added more tests for the deserializer.

Matthew Carr %!s(int64=3) %!d(string=hai) anos
pai
achega
8af725424f
Modificáronse 1 ficheiros con 89 adicións e 23 borrados
  1. 89 23
      crates/node/src/serde_blocktree/de.rs

+ 89 - 23
crates/node/src/serde_blocktree/de.rs

@@ -404,6 +404,8 @@ mod test {
         Result,
         Deserializer
     };
+    #[allow(unused_imports)]
+    use std::collections::HashMap;
     
     #[test]
     fn new() -> Result<()> {
@@ -432,29 +434,6 @@ mod test {
         Ok(())
     }
 
-    #[test]
-    fn deserialize_struct() -> Result<()> {
-        #[derive(Debug, PartialEq, Deserialize)]
-        struct Order {
-            customer: String,
-            item_id: u16,
-            quantity: u8
-        }
-        let expected = Order {
-            customer: "Bob".to_string(),
-            item_id: 256,
-            quantity: 255
-        };
-        let vec: Vec<u8> = vec![
-            0x03, 0x00, 0x00, 0x00, 'B' as u8, 'o' as u8, 'b' as u8,
-            0x00, 0x01,
-            0xFF 
-        ];
-        let result = from_vec(&vec);
-        assert_eq!(expected, result?);
-        Ok(())
-    }
-
     #[test]
     fn deserialize_false() -> Result<()> {
         let vec: Vec<u8> = vec![0x00];
@@ -566,6 +545,93 @@ mod test {
         Ok(())
     }
 
+    #[test]
+    fn deserialize_string() -> Result<()> {
+        let vec: Vec<u8> = vec![
+            0x06, 0x00, 0x00, 0x00,
+            'l' as u8, 'o' as u8, 'c' as u8, 'a' as u8, 's' as u8, 'h' as u8
+        ];
+        let result: Result<String> = from_vec(&vec);
+        assert_eq!("locash", result?);
+        Ok(())
+    }
+
+    #[test]
+    fn deserialize_byte_buf() -> Result<()> {
+        let vec: Vec<u8> = vec![0x04, 0x00, 0x00, 0x00, 0x42, 0x91, 0xBE, 0xEF];
+        let result: Result<Vec<u8>> = from_vec(&vec);
+        assert_eq!(&vec[4..], result?);
+        Ok(())
+    }
+
+    #[test]
+    fn deserialize_none() -> Result<()> {
+        let vec: Vec<u8> = vec![0x00];
+        let result: Result<Option<u8>> = from_vec(&vec);
+        assert_eq!(None, result?);
+        Ok(())
+    }
+
+    #[test]
+    fn deserialize_some() -> Result<()> {
+        let vec: Vec<u8> = vec![0x01, 0xD5];
+        let result: Result<Option<u8>> = from_vec(&vec);
+        assert_eq!(Some(0xD5u8), result?);
+        Ok(())
+    }
+
+    #[test]
+    fn deserialize_tuple() -> Result<()> {
+        let expected = ("orb".to_string(), 12u16);
+        let vec: Vec<u8> = vec![
+            0x03, 0x00, 0x00, 0x00, 'o' as u8, 'r' as u8, 'b' as u8,
+            0x0C, 0x00
+        ];
+        let result = from_vec(&vec);
+        assert_eq!(expected, result?);
+        Ok(())
+    }
+
+    #[test]
+    fn deserialize_map() -> Result<()> {
+        let expected: HashMap<String, u8> = HashMap::from([
+            ("blue".to_string(), 5), ("red".to_string(), 7)
+        ]);
+        let vec: Vec<u8> = vec![
+            0x02, 0x00, 0x00, 0x00, // Number of entries in the map.
+            0x04, 0x00, 0x00, 0x00, 'b' as u8, 'l' as u8, 'u' as u8, 'e' as u8, // First key.
+            0x05, // First value.
+            0x03, 0x00, 0x00, 0x00, 'r' as u8, 'e' as u8, 'd' as u8, // Second key.
+            0x07, // Second value.
+        ];
+        let result = from_vec(&vec);
+        assert_eq!(expected, result?);
+        Ok(())
+    }
+
+    #[test]
+    fn deserialize_struct() -> Result<()> {
+        #[derive(Debug, PartialEq, Deserialize)]
+        struct Order {
+            customer: String,
+            item_id: u16,
+            quantity: u8
+        }
+        let expected = Order {
+            customer: "Bob".to_string(),
+            item_id: 256,
+            quantity: 255
+        };
+        let vec: Vec<u8> = vec![
+            0x03, 0x00, 0x00, 0x00, 'B' as u8, 'o' as u8, 'b' as u8,
+            0x00, 0x01,
+            0xFF 
+        ];
+        let result = from_vec(&vec);
+        assert_eq!(expected, result?);
+        Ok(())
+    }
+
     #[test]
     fn deserialize_enum() -> Result<()> {
         #[derive(Debug, PartialEq, Deserialize)]