• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..--

patches/25-Apr-2025-236235

src/25-Apr-2025-2,9861,943

.cargo-checksum.jsonD25-Apr-2025984 11

Android.bpD25-Apr-2025854 3228

Cargo.tomlD25-Apr-20251.3 KiB5043

LICENSED25-Apr-202511.8 KiB230194

LICENSE-APACHED25-Apr-20259.5 KiB177150

LICENSE-MITD25-Apr-20251,023 2421

METADATAD25-Apr-2025413 1817

MODULE_LICENSE_MITD25-Apr-20250

README.mdD25-Apr-20252.5 KiB8567

TEST_MAPPINGD25-Apr-2025481 2322

cargo_embargo.jsonD25-Apr-202525 43

README.md

1# serde\_test   [![Build Status]][actions] [![Latest Version]][crates.io]
2
3[Build Status]: https://img.shields.io/github/actions/workflow/status/serde-rs/test/ci.yml?branch=master
4[actions]: https://github.com/serde-rs/test/actions?query=branch%3Amaster
5[Latest Version]: https://img.shields.io/crates/v/serde_test.svg
6[crates.io]: https://crates.io/crates/serde\_test
7
8This crate provides a convenient concise way to write unit tests for
9implementations of [`Serialize`] and [`Deserialize`].
10
11[`Serialize`]: serde::ser::Serialize
12[`Deserialize`]: serde::de::Deserialize
13
14The `Serialize` impl for a value can be characterized by the sequence of
15[`Serializer`] calls that are made in the course of serializing the value, so
16`serde_test` provides a [`Token`] abstraction which corresponds roughly to
17`Serializer` method calls. There is an [`assert_ser_tokens`] function to test
18that a value serializes to a particular sequence of method calls, an
19[`assert_de_tokens`] function to test that a value can be deserialized from a
20particular sequence of method calls, and an [`assert_tokens`] function to test
21both directions. There are also functions to test expected failure conditions.
22
23[`Serializer`]: serde::ser::Serializer
24
25Here is an example from the [`linked-hash-map`] crate.
26
27[`linked-hash-map`]: https://github.com/contain-rs/linked-hash-map
28
29```rust
30use linked_hash_map::LinkedHashMap;
31use serde_test::{assert_tokens, Token};
32
33#[test]
34fn test_ser_de_empty() {
35    let map = LinkedHashMap::<char, u32>::new();
36
37    assert_tokens(
38        &map,
39        &[
40            Token::Map { len: Some(0) },
41            Token::MapEnd,
42        ],
43    );
44}
45
46#[test]
47fn test_ser_de() {
48    let mut map = LinkedHashMap::new();
49    map.insert('b', 20);
50    map.insert('a', 10);
51    map.insert('c', 30);
52
53    assert_tokens(
54        &map,
55        &[
56            Token::Map { len: Some(3) },
57            Token::Char('b'),
58            Token::I32(20),
59            Token::Char('a'),
60            Token::I32(10),
61            Token::Char('c'),
62            Token::I32(30),
63            Token::MapEnd,
64        ],
65    );
66}
67```
68
69<br>
70
71#### License
72
73<sup>
74Licensed under either of <a href="LICENSE-APACHE">Apache License, Version
752.0</a> or <a href="LICENSE-MIT">MIT license</a> at your option.
76</sup>
77
78<br>
79
80<sub>
81Unless you explicitly state otherwise, any contribution intentionally submitted
82for inclusion in this crate by you, as defined in the Apache-2.0 license, shall
83be dual licensed as above, without any additional terms or conditions.
84</sub>
85