diff --git a/serde_test/src/assert.rs b/serde_test/src/assert.rs index 6b580aed..2af2ebf5 100644 --- a/serde_test/src/assert.rs +++ b/serde_test/src/assert.rs @@ -15,6 +15,34 @@ use token::Token; use std::fmt::Debug; /// Runs both `assert_ser_tokens` and `assert_de_tokens`. +/// +/// ```rust +/// # #[macro_use] +/// # extern crate serde_derive; +/// # +/// # extern crate serde; +/// # extern crate serde_test; +/// # +/// # use serde_test::{assert_tokens, Token}; +/// # +/// # fn main() { +/// #[derive(Serialize, Deserialize, PartialEq, Debug)] +/// struct S { +/// a: u8, +/// b: u8, +/// } +/// +/// let s = S { a: 0, b: 0 }; +/// assert_tokens(&s, &[ +/// Token::Struct { name: "S", len: 2 }, +/// Token::Str("a"), +/// Token::U8(0), +/// Token::Str("b"), +/// Token::U8(0), +/// Token::StructEnd, +/// ]); +/// # } +/// ``` pub fn assert_tokens<'de, T>(value: &T, tokens: &'de [Token]) where T: Serialize + Deserialize<'de> + PartialEq + Debug, @@ -24,6 +52,34 @@ where } /// Asserts that `value` serializes to the given `tokens`. +/// +/// ```rust +/// # #[macro_use] +/// # extern crate serde_derive; +/// # +/// # extern crate serde; +/// # extern crate serde_test; +/// # +/// # use serde_test::{assert_ser_tokens, Token}; +/// # +/// # fn main() { +/// #[derive(Serialize, Deserialize, PartialEq, Debug)] +/// struct S { +/// a: u8, +/// b: u8, +/// } +/// +/// let s = S { a: 0, b: 0 }; +/// assert_ser_tokens(&s, &[ +/// Token::Struct { name: "S", len: 2 }, +/// Token::Str("a"), +/// Token::U8(0), +/// Token::Str("b"), +/// Token::U8(0), +/// Token::StructEnd, +/// ]); +/// # } +/// ``` pub fn assert_ser_tokens(value: &T, tokens: &[Token]) where T: Serialize, @@ -95,6 +151,34 @@ where } /// Asserts that the given `tokens` deserialize into `value`. +/// +/// ```rust +/// # #[macro_use] +/// # extern crate serde_derive; +/// # +/// # extern crate serde; +/// # extern crate serde_test; +/// # +/// # use serde_test::{assert_de_tokens, Token}; +/// # +/// # fn main() { +/// #[derive(Serialize, Deserialize, PartialEq, Debug)] +/// struct S { +/// a: u8, +/// b: u8, +/// } +/// +/// let s = S { a: 0, b: 0 }; +/// assert_de_tokens(&s, &[ +/// Token::Struct { name: "S", len: 2 }, +/// Token::Str("a"), +/// Token::U8(0), +/// Token::Str("b"), +/// Token::U8(0), +/// Token::StructEnd, +/// ]); +/// # } +/// ``` pub fn assert_de_tokens<'de, T>(value: &T, tokens: &'de [Token]) where T: Deserialize<'de> + PartialEq + Debug, @@ -111,6 +195,33 @@ where } /// Asserts that the given `tokens` yield `error` when deserializing. +/// +/// ```rust +/// # #[macro_use] +/// # extern crate serde_derive; +/// # +/// # extern crate serde; +/// # extern crate serde_test; +/// # +/// # use serde_test::{assert_de_tokens_error, Token}; +/// # +/// # fn main() { +/// #[derive(Serialize, Deserialize, PartialEq, Debug)] +/// #[serde(deny_unknown_fields)] +/// struct S { +/// a: u8, +/// b: u8, +/// } +/// +/// assert_de_tokens_error::( +/// &[ +/// Token::Struct { name: "S", len: 1 }, +/// Token::Str("x"), +/// ], +/// "unknown field `x`, expected `a` or `b`", +/// ); +/// # } +/// ``` pub fn assert_de_tokens_error<'de, T>(tokens: &'de [Token], error: &str) where T: Deserialize<'de>,