#![cfg(feature = "serde_impl")] use fxhash::FxBuildHasher; use hashlink::{LinkedHashMap, LinkedHashSet}; use serde_test::{assert_tokens, Token}; #[test] fn map_serde_tokens_empty() { let map = LinkedHashMap::::new(); assert_tokens(&map, &[Token::Map { len: Some(0) }, Token::MapEnd]); } #[test] fn map_serde_tokens() { let mut map = LinkedHashMap::new(); map.insert('a', 10); map.insert('b', 20); map.insert('c', 30); assert_tokens( &map, &[ Token::Map { len: Some(3) }, Token::Char('a'), Token::I32(10), Token::Char('b'), Token::I32(20), Token::Char('c'), Token::I32(30), Token::MapEnd, ], ); } #[test] fn map_serde_tokens_empty_generic() { let map = LinkedHashMap::::with_hasher(FxBuildHasher::default()); assert_tokens(&map, &[Token::Map { len: Some(0) }, Token::MapEnd]); } #[test] fn map_serde_tokens_generic() { let mut map = LinkedHashMap::with_hasher(FxBuildHasher::default()); map.insert('a', 10); map.insert('b', 20); map.insert('c', 30); assert_tokens( &map, &[ Token::Map { len: Some(3) }, Token::Char('a'), Token::I32(10), Token::Char('b'), Token::I32(20), Token::Char('c'), Token::I32(30), Token::MapEnd, ], ); } #[test] fn set_serde_tokens_empty() { let set = LinkedHashSet::::new(); assert_tokens(&set, &[Token::Seq { len: Some(0) }, Token::SeqEnd]); } #[test] fn set_serde_tokens() { let mut set = LinkedHashSet::new(); set.insert(10); set.insert(20); set.insert(30); assert_tokens( &set, &[ Token::Seq { len: Some(3) }, Token::I32(10), Token::I32(20), Token::I32(30), Token::SeqEnd, ], ); } #[test] fn set_serde_tokens_generic() { let mut set = LinkedHashSet::with_hasher(FxBuildHasher::default()); set.insert('a'); set.insert('b'); set.insert('c'); assert_tokens( &set, &[ Token::Seq { len: Some(3) }, Token::Char('a'), Token::Char('b'), Token::Char('c'), Token::SeqEnd, ], ); }