• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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