1 #![cfg(feature = "serde_impl")]
2
3 use fxhash::FxBuildHasher;
4 use hashlink::{LinkedHashMap, LinkedHashSet};
5 use serde_test::{assert_tokens, Token};
6
7 #[test]
map_serde_tokens_empty()8 fn map_serde_tokens_empty() {
9 let map = LinkedHashMap::<char, u32>::new();
10
11 assert_tokens(&map, &[Token::Map { len: Some(0) }, Token::MapEnd]);
12 }
13
14 #[test]
map_serde_tokens()15 fn map_serde_tokens() {
16 let mut map = LinkedHashMap::new();
17 map.insert('a', 10);
18 map.insert('b', 20);
19 map.insert('c', 30);
20
21 assert_tokens(
22 &map,
23 &[
24 Token::Map { len: Some(3) },
25 Token::Char('a'),
26 Token::I32(10),
27 Token::Char('b'),
28 Token::I32(20),
29 Token::Char('c'),
30 Token::I32(30),
31 Token::MapEnd,
32 ],
33 );
34 }
35
36 #[test]
map_serde_tokens_empty_generic()37 fn map_serde_tokens_empty_generic() {
38 let map = LinkedHashMap::<char, u32, FxBuildHasher>::with_hasher(FxBuildHasher::default());
39
40 assert_tokens(&map, &[Token::Map { len: Some(0) }, Token::MapEnd]);
41 }
42
43 #[test]
map_serde_tokens_generic()44 fn map_serde_tokens_generic() {
45 let mut map = LinkedHashMap::with_hasher(FxBuildHasher::default());
46 map.insert('a', 10);
47 map.insert('b', 20);
48 map.insert('c', 30);
49
50 assert_tokens(
51 &map,
52 &[
53 Token::Map { len: Some(3) },
54 Token::Char('a'),
55 Token::I32(10),
56 Token::Char('b'),
57 Token::I32(20),
58 Token::Char('c'),
59 Token::I32(30),
60 Token::MapEnd,
61 ],
62 );
63 }
64
65 #[test]
set_serde_tokens_empty()66 fn set_serde_tokens_empty() {
67 let set = LinkedHashSet::<u32>::new();
68
69 assert_tokens(&set, &[Token::Seq { len: Some(0) }, Token::SeqEnd]);
70 }
71
72 #[test]
set_serde_tokens()73 fn set_serde_tokens() {
74 let mut set = LinkedHashSet::new();
75 set.insert(10);
76 set.insert(20);
77 set.insert(30);
78
79 assert_tokens(
80 &set,
81 &[
82 Token::Seq { len: Some(3) },
83 Token::I32(10),
84 Token::I32(20),
85 Token::I32(30),
86 Token::SeqEnd,
87 ],
88 );
89 }
90
91 #[test]
set_serde_tokens_generic()92 fn set_serde_tokens_generic() {
93 let mut set = LinkedHashSet::with_hasher(FxBuildHasher::default());
94 set.insert('a');
95 set.insert('b');
96 set.insert('c');
97
98 assert_tokens(
99 &set,
100 &[
101 Token::Seq { len: Some(3) },
102 Token::Char('a'),
103 Token::Char('b'),
104 Token::Char('c'),
105 Token::SeqEnd,
106 ],
107 );
108 }
109