#[test] fn pass_string() { let buf = [0xaa, 0x6c, 0x65, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65]; let cur = Cursor::new(&buf[..]);
letmut de = Deserializer::new(cur); let actual: String = Deserialize::deserialize(&mut de).unwrap();
assert_eq!("le message".to_string(), actual);
}
#[test] fn pass_tuple() { let buf = [0x92, 0x2a, 0xce, 0x0, 0x1, 0x88, 0x94]; let cur = Cursor::new(&buf[..]);
letmut de = Deserializer::new(cur); let actual: (u32, u32) = Deserialize::deserialize(&mut de).unwrap();
assert_eq!((42, 100500), actual);
}
#[ignore] #[test] fn fail_tuple_len_mismatch() { let buf = [0x92, 0x2a, 0xce, 0x0, 0x1, 0x88, 0x94]; let cur = Cursor::new(&buf[..]);
letmut de = Deserializer::new(cur); let actual: Result<(u32,), Error> = Deserialize::deserialize(&mutde);
match actual.err().unwrap() {
Error::LengthMismatch(1) => (),
other => panic!("unexpected result: {other:?}"),
}
}
#[test] fn pass_option_some() { let buf = [0x1f];
letmut de = Deserializer::new(&buf[..]); let actual: Option<u8> = Deserialize::deserialize(&mut de).unwrap();
assert_eq!(Some(31), actual);
}
#[test] fn pass_option_none() { let buf = [0xc0];
letmut de = Deserializer::new(&buf[..]); let actual: Option<u8> = Deserialize::deserialize(&mut de).unwrap();
assert_eq!(None, actual);
}
#[test] fn pass_nested_option_some() { let buf = [0x1f];
letmut de = Deserializer::new(&buf[..]); let actual: Option<Option<u8>> = Deserialize::deserialize(&mut de).unwrap();
assert_eq!(Some(Some(31)), actual);
}
#[test] fn pass_nested_option_none() { let buf = [0xc0];
letmut de = Deserializer::new(&buf[..]); let actual: Option<Option<u8>> = Deserialize::deserialize(&mut de).unwrap();
assert_eq!(None, actual);
}
#[test] fn fail_option_u8_from_reserved() { let buf = [0xc1]; let cur = Cursor::new(&buf[..]);
letmut de = Deserializer::new(cur); let actual: Result<Option<u8>, Error> = Deserialize::deserialize(&mut de); match actual.err() {
Some(Error::TypeMismatch(Marker::Reserved)) => (),
other => panic!("unexpected result: {other:?}"),
}
}
#[test] fn pass_vector() { let buf = [0x92, 0x00, 0xcc, 0x80]; let cur = Cursor::new(&buf[..]);
letmut de = Deserializer::new(cur); let actual: Vec<u8> = Deserialize::deserialize(&mut de).unwrap();
assert_eq!(vec![0, 128], actual);
}
#[test] fn pass_map() { use std::collections::HashMap;
let buf = [ 0x82, // 2 (size) 0xa3, 0x69, 0x6e, 0x74, // 'int' 0xcc, 0x80, // 128 0xa3, 0x6b, 0x65, 0x79, // 'key' 0x2a, // 42
]; let cur = Cursor::new(&buf[..]);
letmut de = Deserializer::new(cur); let actual = Deserialize::deserialize(&mut de).unwrap(); letmut expected = HashMap::new();
expected.insert("int".to_string(), 128);
expected.insert("key".to_string(), 42);
assert_eq!(expected, actual);
}
// TODO: Merge three of them. #[test] fn pass_bin8_into_bytebuf() { use serde_bytes::ByteBuf;
let buf = [0xc4, 0x02, 0xcc, 0x80]; let cur = Cursor::new(&buf[..]);
letmut de = Deserializer::new(cur); let actual: ByteBuf = Deserialize::deserialize(&mut de).unwrap();
assert_eq!([0xcc, 0x80], actual[..]);
}
#[test] fn pass_bin16_into_bytebuf() { use serde_bytes::ByteBuf;
let buf = [0xc5, 0x00, 0x02, 0xcc, 0x80]; let cur = Cursor::new(&buf[..]);
letmut de = Deserializer::new(cur); let actual: ByteBuf = Deserialize::deserialize(&mut de).unwrap();
assert_eq!([0xcc, 0x80], actual[..]);
}
#[test] fn pass_bin32_into_bytebuf() { use serde_bytes::ByteBuf;
let buf = [0xc6, 0x00, 0x00, 0x00, 0x02, 0xcc, 0x80]; let cur = Cursor::new(&buf[..]);
letmut de = Deserializer::new(cur); let actual: ByteBuf = Deserialize::deserialize(&mut de).unwrap();
assert_eq!([0xcc, 0x80], actual[..]);
}
#[test] fn pass_bin8_into_bytebuf_regression_growing_buffer() { use serde_bytes::ByteBuf;
// Try to deserialize large buf and a small buf let buf = [0x92, 0xc4, 0x04, 0x71, 0x75, 0x75, 0x78, 0xc4, 0x03, 0x62, 0x61, 0x72]; let cur = Cursor::new(&buf[..]);
letmut de = Deserializer::new(cur); let (large, small): (ByteBuf, ByteBuf) = Deserialize::deserialize(&mut de).unwrap(); let (large, small): (Vec<u8>, Vec<u8>) = (large.into_vec(), small.into_vec());
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.