diff --git a/Cargo.toml b/Cargo.toml index 71451ee..9b03d94 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -21,3 +21,4 @@ serde = { version = "1.0.209", optional = true } [dev-dependencies] serde = "1.0.209" serde_json = "1.0.127" +serde_test = "1.0.177" diff --git a/src/serde.rs b/src/serde.rs index 129fbcd..40f20d9 100644 --- a/src/serde.rs +++ b/src/serde.rs @@ -27,7 +27,7 @@ impl<'a, T: Serialize> Serialize for SerNode<'a, T> { where S: serde::Serializer, { - let mut state = serializer.serialize_struct("SerNode", 2)?; + let mut state = serializer.serialize_struct("Node", 2)?; state.serialize_field("value", &self.value)?; state.serialize_field("children", &self.children)?; state.end() @@ -93,7 +93,7 @@ where type Value = DeserNode; fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result { - formatter.write_str("struct DeserNode") + formatter.write_str("struct Node") } fn visit_map(self, mut map: M) -> Result @@ -138,11 +138,7 @@ where where D: Deserializer<'de>, { - deserializer.deserialize_struct( - "DeserNode", - &["value", "children"], - DeserNodeVisitor::new(), - ) + deserializer.deserialize_struct("Node", &["value", "children"], DeserNodeVisitor::new()) } } diff --git a/tests/serde.rs b/tests/serde.rs index e6f8771..f6fd836 100644 --- a/tests/serde.rs +++ b/tests/serde.rs @@ -1,6 +1,7 @@ #![cfg(feature = "serde")] use ego_tree::{tree, Tree}; +use serde_test::{assert_tokens, Token}; #[test] fn test_serde_round_trip() { @@ -11,3 +12,24 @@ fn test_serde_round_trip() { println!("{re_tree}"); assert_eq!(tree, re_tree); } + +#[test] +fn test_internal_serde_repr() { + let tree = tree!("a"); + + assert_tokens( + &tree, + &[ + Token::Struct { + name: "Node", + len: 2, + }, + Token::Str("value"), + Token::Str("a"), + Token::Str("children"), + Token::Seq { len: Some(0) }, + Token::SeqEnd, + Token::StructEnd, + ], + ); +}