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