test deserialize_from

This commit is contained in:
Alexis Beingessner
2017-12-04 12:42:43 -05:00
parent e354dd0c7f
commit 34936be574
2 changed files with 19 additions and 3 deletions
+18 -2
View File
@@ -184,11 +184,27 @@ where
T: Deserialize<'de> + PartialEq + Debug,
{
let mut de = Deserializer::new(tokens);
match T::deserialize(&mut de) {
Ok(v) => assert_eq!(v, *value),
let mut deserialized_val = match T::deserialize(&mut de) {
Ok(v) => {
assert_eq!(v, *value);
v
}
Err(e) => panic!("tokens failed to deserialize: {}", e),
};
if de.remaining() > 0 {
panic!("{} remaining tokens", de.remaining());
}
// Do the same thing for deserialize_from. This isn't *great* because a no-op
// impl of deserialize_from can technically succeed here. Still, this should
// catch a lot of junk.
let mut de = Deserializer::new(tokens);
match deserialized_val.deserialize_from(&mut de) {
Ok(()) => {
assert_eq!(deserialized_val, *value);
}
Err(e) => panic!("tokens failed to deserialize_from: {}", e),
}
if de.remaining() > 0 {
panic!("{} remaining tokens", de.remaining());
}