diff --git a/Cargo.toml b/Cargo.toml index ca164fc..15b1c3b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,9 +17,9 @@ readme = "README.md" [features] nightly = [] -serde_impl = ["serde", "serde_json"] +serde_impl = ["serde", "serde_test"] [dependencies] clippy = { version = "0.*", optional = true } serde = { version = "^0.7", optional = true } -serde_json = { version = "^0.7", optional = true } +serde_test = { version = "^0.7", optional = true } diff --git a/tests/serde.rs b/tests/serde.rs index 0b4c6df..48ba51c 100644 --- a/tests/serde.rs +++ b/tests/serde.rs @@ -1,44 +1,41 @@ #![cfg(feature = "serde_impl")] extern crate linked_hash_map; -extern crate serde; -extern crate serde_json; - use linked_hash_map::LinkedHashMap; +extern crate serde_test; +use serde_test::{Token, assert_tokens}; + #[test] -fn test_ser_empty() { - let map = LinkedHashMap::::new(); - let j = serde_json::to_string(&map).unwrap(); - let expected = "{}"; - assert_eq!(j, expected); +fn test_ser_de_empty() { + let map = LinkedHashMap::::new(); + + assert_tokens(&map, &[ + Token::MapStart(Some(0)), + Token::MapEnd, + ]); } #[test] -fn test_ser() { +fn test_ser_de() { let mut map = LinkedHashMap::new(); - map.insert("b", 20); - map.insert("a", 10); - map.insert("c", 30); + map.insert('b', 20); + map.insert('a', 10); + map.insert('c', 30); - let j = serde_json::to_string(&map).unwrap(); - let expected = r#"{"b":20,"a":10,"c":30}"#; - assert_eq!(j, expected); -} + assert_tokens(&map, &[ + Token::MapStart(Some(3)), + Token::MapSep, + Token::Char('b'), + Token::I32(20), -#[test] -fn test_de_empty() { - let j = "{}"; - let map: LinkedHashMap = serde_json::from_str(j).unwrap(); - assert_eq!(map.len(), 0); -} + Token::MapSep, + Token::Char('a'), + Token::I32(10), -#[test] -fn test_de() { - let j = r#"{"b":20,"a":10,"c":30}"#; - let map: LinkedHashMap = serde_json::from_str(j).unwrap(); - let items: Vec<_> = map.iter().map(|(k, v)| (k.clone(), *v)).collect(); - assert_eq!(items, [("b".to_owned(), 20), - ("a".to_owned(), 10), - ("c".to_owned(), 30)]); + Token::MapSep, + Token::Char('c'), + Token::I32(30), + Token::MapEnd, + ]); }