]>
Commit | Line | Data |
---|---|---|
48663c56 XL |
1 | #![cfg(feature = "serde")] |
2 | ||
e74abb32 | 3 | use core::hash::BuildHasherDefault; |
48663c56 | 4 | use hashbrown::{HashMap, HashSet}; |
e74abb32 | 5 | use rustc_hash::FxHasher; |
48663c56 XL |
6 | use serde_test::{assert_tokens, Token}; |
7 | ||
e74abb32 XL |
8 | // We use FxHash for this test because we rely on the ordering |
9 | type FxHashMap<K, V> = HashMap<K, V, BuildHasherDefault<FxHasher>>; | |
10 | type FxHashSet<T> = HashSet<T, BuildHasherDefault<FxHasher>>; | |
11 | ||
48663c56 XL |
12 | #[test] |
13 | fn 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] | |
20 | fn 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] | |
42 | fn 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] | |
49 | fn 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 | } |