#![cfg(feature = "serde")]
use ego_tree::tree;
use serde_test::{assert_tokens, Token};
#[test]
fn test_internal_serde_repr_trivial() {
let tree = tree!("a");
assert_tokens(
&tree,
&[
Token::Struct {
name: "Node",
len: 2,
},
Token::BorrowedStr("value"),
Token::BorrowedStr("a"),
Token::BorrowedStr("children"),
Token::Seq { len: Some(0) },
Token::SeqEnd,
Token::StructEnd,
],
);
}
#[test]
fn test_internal_serde_repr() {
let tree = tree!("a" => {"b", "c" => {"d", "e"}, "f"});
assert_tokens(
&tree,
&[
Token::Struct {
name: "Node",
len: 2,
},
Token::BorrowedStr("value"),
Token::BorrowedStr("a"),
Token::BorrowedStr("children"),
Token::Seq { len: Some(3) },
Token::Struct {
name: "Node",
len: 2,
},
Token::BorrowedStr("value"),
Token::BorrowedStr("b"),
Token::BorrowedStr("children"),
Token::Seq { len: Some(0) },
Token::SeqEnd,
Token::StructEnd,
Token::Struct {
name: "Node",
len: 2,
},
Token::BorrowedStr("value"),
Token::BorrowedStr("c"),
Token::BorrowedStr("children"),
Token::Seq { len: Some(2) },
Token::Struct {
name: "Node",
len: 2,
},
Token::BorrowedStr("value"),
Token::BorrowedStr("d"),
Token::BorrowedStr("children"),
Token::Seq { len: Some(0) },
Token::SeqEnd,
Token::StructEnd,
Token::Struct {
name: "Node",
len: 2,
},
Token::BorrowedStr("value"),
Token::BorrowedStr("e"),
Token::BorrowedStr("children"),
Token::Seq { len: Some(0) },
Token::SeqEnd,
Token::StructEnd,
Token::SeqEnd,
Token::StructEnd,
Token::Struct {
name: "Node",
len: 2,
},
Token::BorrowedStr("value"),
Token::BorrowedStr("f"),
Token::BorrowedStr("children"),
Token::Seq { len: Some(0) },
Token::SeqEnd,
Token::StructEnd,
Token::SeqEnd,
Token::StructEnd,
],
);
}