mirror of
https://github.com/pezkuwichain/serde.git
synced 2026-06-12 06:11:03 +00:00
Examples for serde_test methods
This commit is contained in:
@@ -15,6 +15,34 @@ use token::Token;
|
|||||||
use std::fmt::Debug;
|
use std::fmt::Debug;
|
||||||
|
|
||||||
/// Runs both `assert_ser_tokens` and `assert_de_tokens`.
|
/// 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])
|
pub fn assert_tokens<'de, T>(value: &T, tokens: &'de [Token])
|
||||||
where
|
where
|
||||||
T: Serialize + Deserialize<'de> + PartialEq + Debug,
|
T: Serialize + Deserialize<'de> + PartialEq + Debug,
|
||||||
@@ -24,6 +52,34 @@ where
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Asserts that `value` serializes to the given `tokens`.
|
/// 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<T>(value: &T, tokens: &[Token])
|
pub fn assert_ser_tokens<T>(value: &T, tokens: &[Token])
|
||||||
where
|
where
|
||||||
T: Serialize,
|
T: Serialize,
|
||||||
@@ -95,6 +151,34 @@ where
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Asserts that the given `tokens` deserialize into `value`.
|
/// 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])
|
pub fn assert_de_tokens<'de, T>(value: &T, tokens: &'de [Token])
|
||||||
where
|
where
|
||||||
T: Deserialize<'de> + PartialEq + Debug,
|
T: Deserialize<'de> + PartialEq + Debug,
|
||||||
@@ -111,6 +195,33 @@ where
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Asserts that the given `tokens` yield `error` when deserializing.
|
/// 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::<S>(
|
||||||
|
/// &[
|
||||||
|
/// 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)
|
pub fn assert_de_tokens_error<'de, T>(tokens: &'de [Token], error: &str)
|
||||||
where
|
where
|
||||||
T: Deserialize<'de>,
|
T: Deserialize<'de>,
|
||||||
|
|||||||
Reference in New Issue
Block a user