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