Skip to content

Commit f094f01

Browse files
LoZack19cfvescovo
andcommitted
wip: introduce serde_test token matching
Co-authored-by: Carlo Federico Vescovo <[email protected]>
1 parent be6bbea commit f094f01

File tree

3 files changed

+26
-7
lines changed

3 files changed

+26
-7
lines changed

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,4 @@ serde = { version = "1.0.209", optional = true }
2121
[dev-dependencies]
2222
serde = "1.0.209"
2323
serde_json = "1.0.127"
24+
serde_test = "1.0.177"

src/serde.rs

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ impl<'a, T: Serialize> Serialize for SerNode<'a, T> {
2727
where
2828
S: serde::Serializer,
2929
{
30-
let mut state = serializer.serialize_struct("SerNode", 2)?;
30+
let mut state = serializer.serialize_struct("Node", 2)?;
3131
state.serialize_field("value", &self.value)?;
3232
state.serialize_field("children", &self.children)?;
3333
state.end()
@@ -93,7 +93,7 @@ where
9393
type Value = DeserNode<T>;
9494

9595
fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
96-
formatter.write_str("struct DeserNode")
96+
formatter.write_str("struct Node")
9797
}
9898

9999
fn visit_map<M>(self, mut map: M) -> Result<Self::Value, M::Error>
@@ -138,11 +138,7 @@ where
138138
where
139139
D: Deserializer<'de>,
140140
{
141-
deserializer.deserialize_struct(
142-
"DeserNode",
143-
&["value", "children"],
144-
DeserNodeVisitor::new(),
145-
)
141+
deserializer.deserialize_struct("Node", &["value", "children"], DeserNodeVisitor::new())
146142
}
147143
}
148144

tests/serde.rs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#![cfg(feature = "serde")]
22

33
use ego_tree::{tree, Tree};
4+
use serde_test::{assert_tokens, Token};
45

56
#[test]
67
fn test_serde_round_trip() {
@@ -11,3 +12,24 @@ fn test_serde_round_trip() {
1112
println!("{re_tree}");
1213
assert_eq!(tree, re_tree);
1314
}
15+
16+
#[test]
17+
fn test_internal_serde_repr() {
18+
let tree = tree!("a");
19+
20+
assert_tokens(
21+
&tree,
22+
&[
23+
Token::Struct {
24+
name: "Node",
25+
len: 2,
26+
},
27+
Token::Str("value"),
28+
Token::Str("a"),
29+
Token::Str("children"),
30+
Token::Seq { len: Some(0) },
31+
Token::SeqEnd,
32+
Token::StructEnd,
33+
],
34+
);
35+
}

0 commit comments

Comments
 (0)