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