|
@@ -404,6 +404,8 @@ mod test {
|
|
Result,
|
|
Result,
|
|
Deserializer
|
|
Deserializer
|
|
};
|
|
};
|
|
|
|
+ #[allow(unused_imports)]
|
|
|
|
+ use std::collections::HashMap;
|
|
|
|
|
|
#[test]
|
|
#[test]
|
|
fn new() -> Result<()> {
|
|
fn new() -> Result<()> {
|
|
@@ -432,29 +434,6 @@ mod test {
|
|
Ok(())
|
|
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]
|
|
#[test]
|
|
fn deserialize_false() -> Result<()> {
|
|
fn deserialize_false() -> Result<()> {
|
|
let vec: Vec<u8> = vec![0x00];
|
|
let vec: Vec<u8> = vec![0x00];
|
|
@@ -566,6 +545,93 @@ mod test {
|
|
Ok(())
|
|
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]
|
|
#[test]
|
|
fn deserialize_enum() -> Result<()> {
|
|
fn deserialize_enum() -> Result<()> {
|
|
#[derive(Debug, PartialEq, Deserialize)]
|
|
#[derive(Debug, PartialEq, Deserialize)]
|