Skip to content

Commit e975c79

Browse files
cfvescovoLoZack19
andcommitted
Fix tests for serde feature
Correct some typos too Co-authored-by: Giovanni Zaccaria <[email protected]>
1 parent 08ae4d9 commit e975c79

File tree

3 files changed

+77
-26
lines changed

3 files changed

+77
-26
lines changed

Cargo.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,4 @@ serde = { version = "1.0.209", optional = true }
2020

2121
[dev-dependencies]
2222
serde = "1.0.209"
23-
serde_json = "1.0.127"
2423
serde_test = "1.0.177"

src/lib.rs

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -38,20 +38,11 @@
3838
use std::fmt::{self, Debug, Display, Formatter};
3939
use std::num::NonZeroUsize;
4040

41-
/// Implement serde traits for Tree
42-
///
43-
/// ```
44-
/// use ego_tree::{tree, Tree};
45-
///
46-
/// let tree = tree!("a" => {"b", "c" => {"d", "e"}, "f"});
47-
/// let repr = serde_json::to_string(&tree).unwrap();
48-
/// let re_tree: Tree<&str> = serde_json::from_str(&repr).unwrap();
49-
/// ```
50-
///
41+
/// Implement serde::Serialize and serde::Deserialize traits for Tree
5142
///
5243
/// # Warning
5344
/// Serialize and Deserialize implementations are recursive. They require an amount of stack memory
54-
/// propotional to the tree depth.
45+
/// proportional to the tree depth.
5546
#[cfg(feature = "serde")]
5647
pub mod serde;
5748

@@ -72,7 +63,7 @@ pub struct NodeId(NonZeroUsize);
7263
impl NodeId {
7364
// Safety: `n` must not equal `usize::MAX`.
7465
// (This is never the case for `Vec::len()`, that would mean it owns
75-
// the entire address space without leaving space for even the its pointer.)
66+
// the entire address space without leaving space even for its pointer.)
7667
unsafe fn from_index(n: usize) -> Self {
7768
NodeId(NonZeroUsize::new_unchecked(n + 1))
7869
}
@@ -92,7 +83,7 @@ struct Node<T> {
9283
}
9384

9485
fn _static_assert_size_of_node() {
95-
// "Instanciating" the generic `transmute` function without calling it
86+
// "Instantiating" the generic `transmute` function without calling it
9687
// still triggers the magic compile-time check
9788
// that input and output types have the same `size_of()`.
9889
let _ = std::mem::transmute::<Node<()>, [usize; 5]>;

tests/serde.rs

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

3-
use ego_tree::{tree, Tree};
3+
use ego_tree::tree;
44
use serde_test::{assert_tokens, Token};
55

66
#[test]
7-
fn test_serde_round_trip() {
8-
let tree = tree!("a" => {"b", "c" => {"d", "e"}, "f"});
9-
let repr = serde_json::to_string(&tree).unwrap();
10-
println!("{repr}");
11-
let re_tree: Tree<&str> = serde_json::from_str(&repr).unwrap();
12-
println!("{re_tree}");
13-
assert_eq!(tree, re_tree);
7+
fn test_internal_serde_repr_trivial() {
8+
let tree = tree!("a");
9+
10+
assert_tokens(
11+
&tree,
12+
&[
13+
Token::Struct {
14+
name: "Node",
15+
len: 2,
16+
},
17+
Token::BorrowedStr("value"),
18+
Token::BorrowedStr("a"),
19+
Token::BorrowedStr("children"),
20+
Token::Seq { len: Some(0) },
21+
Token::SeqEnd,
22+
Token::StructEnd,
23+
],
24+
);
1425
}
1526

1627
#[test]
1728
fn test_internal_serde_repr() {
18-
let tree = tree!("a");
29+
let tree = tree!("a" => {"b", "c" => {"d", "e"}, "f"});
1930

2031
assert_tokens(
2132
&tree,
@@ -24,12 +35,62 @@ fn test_internal_serde_repr() {
2435
name: "Node",
2536
len: 2,
2637
},
27-
Token::Str("value"),
28-
Token::Str("a"),
29-
Token::Str("children"),
38+
Token::BorrowedStr("value"),
39+
Token::BorrowedStr("a"),
40+
Token::BorrowedStr("children"),
41+
Token::Seq { len: Some(3) },
42+
Token::Struct {
43+
name: "Node",
44+
len: 2,
45+
},
46+
Token::BorrowedStr("value"),
47+
Token::BorrowedStr("b"),
48+
Token::BorrowedStr("children"),
49+
Token::Seq { len: Some(0) },
50+
Token::SeqEnd,
51+
Token::StructEnd,
52+
Token::Struct {
53+
name: "Node",
54+
len: 2,
55+
},
56+
Token::BorrowedStr("value"),
57+
Token::BorrowedStr("c"),
58+
Token::BorrowedStr("children"),
59+
Token::Seq { len: Some(2) },
60+
Token::Struct {
61+
name: "Node",
62+
len: 2,
63+
},
64+
Token::BorrowedStr("value"),
65+
Token::BorrowedStr("d"),
66+
Token::BorrowedStr("children"),
3067
Token::Seq { len: Some(0) },
3168
Token::SeqEnd,
3269
Token::StructEnd,
70+
Token::Struct {
71+
name: "Node",
72+
len: 2,
73+
},
74+
Token::BorrowedStr("value"),
75+
Token::BorrowedStr("e"),
76+
Token::BorrowedStr("children"),
77+
Token::Seq { len: Some(0) },
78+
Token::SeqEnd,
79+
Token::StructEnd,
80+
Token::SeqEnd,
81+
Token::StructEnd,
82+
Token::Struct {
83+
name: "Node",
84+
len: 2,
85+
},
86+
Token::BorrowedStr("value"),
87+
Token::BorrowedStr("f"),
88+
Token::BorrowedStr("children"),
89+
Token::Seq { len: Some(0) },
90+
Token::SeqEnd,
91+
Token::StructEnd,
92+
Token::SeqEnd,
93+
Token::StructEnd,
3394
],
3495
);
3596
}

0 commit comments

Comments
 (0)