]> git.proxmox.com Git - rustc.git/blame - vendor/hashbrown-0.11.2/tests/serde.rs
New upstream version 1.62.1+dfsg1
[rustc.git] / vendor / hashbrown-0.11.2 / tests / serde.rs
CommitLineData
5099ac24
FG
1#![cfg(feature = "serde")]
2
3use core::hash::BuildHasherDefault;
4use fnv::FnvHasher;
5use hashbrown::{HashMap, HashSet};
6use serde_test::{assert_tokens, Token};
7
8// We use FnvHash for this test because we rely on the ordering
9type FnvHashMap<K, V> = HashMap<K, V, BuildHasherDefault<FnvHasher>>;
10type FnvHashSet<T> = HashSet<T, BuildHasherDefault<FnvHasher>>;
11
12#[test]
13fn map_serde_tokens_empty() {
14 let map = FnvHashMap::<char, u32>::default();
15
16 assert_tokens(&map, &[Token::Map { len: Some(0) }, Token::MapEnd]);
17}
18
19#[test]
20fn map_serde_tokens() {
21 let mut map = FnvHashMap::default();
22 map.insert('b', 20);
23 map.insert('a', 10);
24 map.insert('c', 30);
25
26 assert_tokens(
27 &map,
28 &[
29 Token::Map { len: Some(3) },
30 Token::Char('a'),
31 Token::I32(10),
32 Token::Char('c'),
33 Token::I32(30),
34 Token::Char('b'),
35 Token::I32(20),
36 Token::MapEnd,
37 ],
38 );
39}
40
41#[test]
42fn set_serde_tokens_empty() {
43 let set = FnvHashSet::<u32>::default();
44
45 assert_tokens(&set, &[Token::Seq { len: Some(0) }, Token::SeqEnd]);
46}
47
48#[test]
49fn set_serde_tokens() {
50 let mut set = FnvHashSet::default();
51 set.insert(20);
52 set.insert(10);
53 set.insert(30);
54
55 assert_tokens(
56 &set,
57 &[
58 Token::Seq { len: Some(3) },
59 Token::I32(30),
60 Token::I32(20),
61 Token::I32(10),
62 Token::SeqEnd,
63 ],
64 );
65}