]> git.proxmox.com Git - rustc.git/blame - vendor/hashbrown/tests/serde.rs
New upstream version 1.40.0+dfsg1
[rustc.git] / vendor / hashbrown / tests / serde.rs
CommitLineData
48663c56
XL
1#![cfg(feature = "serde")]
2
e74abb32 3use core::hash::BuildHasherDefault;
48663c56 4use hashbrown::{HashMap, HashSet};
e74abb32 5use rustc_hash::FxHasher;
48663c56
XL
6use serde_test::{assert_tokens, Token};
7
e74abb32
XL
8// We use FxHash for this test because we rely on the ordering
9type FxHashMap<K, V> = HashMap<K, V, BuildHasherDefault<FxHasher>>;
10type FxHashSet<T> = HashSet<T, BuildHasherDefault<FxHasher>>;
11
48663c56
XL
12#[test]
13fn map_serde_tokens_empty() {
e74abb32 14 let map = FxHashMap::<char, u32>::default();
48663c56
XL
15
16 assert_tokens(&map, &[Token::Map { len: Some(0) }, Token::MapEnd]);
17}
18
19#[test]
20fn map_serde_tokens() {
e74abb32 21 let mut map = FxHashMap::default();
48663c56
XL
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('b'),
33 Token::I32(20),
34 Token::Char('c'),
35 Token::I32(30),
36 Token::MapEnd,
37 ],
38 );
39}
40
41#[test]
42fn set_serde_tokens_empty() {
e74abb32 43 let set = FxHashSet::<u32>::default();
48663c56
XL
44
45 assert_tokens(&set, &[Token::Seq { len: Some(0) }, Token::SeqEnd]);
46}
47
48#[test]
49fn set_serde_tokens() {
e74abb32 50 let mut set = FxHashSet::default();
48663c56
XL
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(20),
60 Token::I32(10),
61 Token::I32(30),
62 Token::SeqEnd,
63 ],
64 );
65}