Assert tokens are empty after reaching error

This commit is contained in:
David Tolnay
2016-06-28 22:23:38 -07:00
parent 6d64104375
commit 093201abfb
4 changed files with 7 additions and 12 deletions
+5 -1
View File
@@ -22,13 +22,14 @@ pub fn assert_ser_tokens<T>(value: &T, tokens: &[Token])
assert_eq!(ser.next_token(), None);
}
// Expect an error deserializing tokens into a T
// Expect an error serializing T
pub fn assert_ser_tokens_error<T>(value: &T, tokens: &[Token], error: Error)
where T: Serialize + PartialEq + Debug,
{
let mut ser = Serializer::new(tokens.iter());
let v: Result<(), Error> = Serialize::serialize(value, &mut ser);
assert_eq!(v.as_ref(), Err(&error));
assert_eq!(ser.next_token(), None);
}
pub fn assert_de_tokens<T>(value: &T, tokens: Vec<Token<'static>>)
@@ -47,4 +48,7 @@ pub fn assert_de_tokens_error<T>(tokens: Vec<Token<'static>>, error: Error)
let mut de = Deserializer::new(tokens.into_iter());
let v: Result<T, Error> = Deserialize::deserialize(&mut de);
assert_eq!(v, Err(error));
// There may be one token left if a peek caused the error
de.next_token();
assert_eq!(de.next_token(), None);
}