From 5cc4a2b6deeb5b38dfbd6bd580148709c86dc142 Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Wed, 29 Jun 2016 00:06:39 -0700 Subject: [PATCH 1/2] Switch to serde_test and drop dependency on serde_json --- Cargo.toml | 4 ++-- tests/serde.rs | 55 ++++++++++++++++++++++++-------------------------- 2 files changed, 28 insertions(+), 31 deletions(-) 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..db89dc9 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() { +fn test_ser_de_empty() { let map = LinkedHashMap::::new(); - let j = serde_json::to_string(&map).unwrap(); - let expected = "{}"; - assert_eq!(j, expected); + + 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".to_string(), 20); + map.insert("a".to_string(), 10); + map.insert("c".to_string(), 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::Str("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::Str("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::Str("c"), + Token::I32(30), + Token::MapEnd, + ]); } From 8e7389a33a9807710f1463f5c74ab9a008331f24 Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Wed, 29 Jun 2016 09:18:35 -0700 Subject: [PATCH 2/2] Change serde test to use char instead of String --- tests/serde.rs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tests/serde.rs b/tests/serde.rs index db89dc9..48ba51c 100644 --- a/tests/serde.rs +++ b/tests/serde.rs @@ -8,7 +8,7 @@ use serde_test::{Token, assert_tokens}; #[test] fn test_ser_de_empty() { - let map = LinkedHashMap::::new(); + let map = LinkedHashMap::::new(); assert_tokens(&map, &[ Token::MapStart(Some(0)), @@ -19,22 +19,22 @@ fn test_ser_de_empty() { #[test] fn test_ser_de() { let mut map = LinkedHashMap::new(); - map.insert("b".to_string(), 20); - map.insert("a".to_string(), 10); - map.insert("c".to_string(), 30); + map.insert('b', 20); + map.insert('a', 10); + map.insert('c', 30); assert_tokens(&map, &[ Token::MapStart(Some(3)), Token::MapSep, - Token::Str("b"), + Token::Char('b'), Token::I32(20), Token::MapSep, - Token::Str("a"), + Token::Char('a'), Token::I32(10), Token::MapSep, - Token::Str("c"), + Token::Char('c'), Token::I32(30), Token::MapEnd, ]);