Crate serde_test
source ·Expand description
This crate provides a convenient concise way to write unit tests for
implementations of Serialize
and Deserialize
.
The Serialize
impl for a value can be characterized by the sequence of
Serializer
calls that are made in the course of serializing the value,
so serde_test
provides a Token
abstraction which corresponds roughly
to Serializer
method calls. There is an assert_ser_tokens
function to
test that a value serializes to a particular sequence of method calls, an
assert_de_tokens
function to test that a value can be deserialized from
a particular sequence of method calls, and an assert_tokens
function to
test both directions. There are also functions to test expected failure
conditions.
Here is an example from the linked-hash-map
crate.
extern crate linked_hash_map;
use linked_hash_map::LinkedHashMap;
extern crate serde_test;
use serde_test::{Token, assert_tokens};
#[test]
fn test_ser_de_empty() {
let map = LinkedHashMap::<char, u32>::new();
assert_tokens(&map, &[
Token::Map { len: Some(0) },
Token::MapEnd,
]);
}
#[test]
fn test_ser_de() {
let mut map = LinkedHashMap::new();
map.insert('b', 20);
map.insert('a', 10);
map.insert('c', 30);
assert_tokens(&map, &[
Token::Map { len: Some(3) },
Token::Char('b'),
Token::I32(20),
Token::Char('a'),
Token::I32(10),
Token::Char('c'),
Token::I32(30),
Token::MapEnd,
]);
}
Structs
Enums
Traits
Trait to determine whether a value is represented in human-readable or
compact form.
Functions
Asserts that the given
tokens
deserialize into value
.Asserts that the given
tokens
yield error
when deserializing.Asserts that
value
serializes to the given tokens
.Asserts that
value
serializes to the given tokens
, and then yields
error
.Runs both
assert_ser_tokens
and assert_de_tokens
.