1
1
#![ cfg( feature = "serde" ) ]
2
2
3
- use ego_tree:: { tree, Tree } ;
3
+ use ego_tree:: tree;
4
4
use serde_test:: { assert_tokens, Token } ;
5
5
6
6
#[ 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
+ ) ;
14
25
}
15
26
16
27
#[ test]
17
28
fn test_internal_serde_repr ( ) {
18
- let tree = tree ! ( "a" ) ;
29
+ let tree = tree ! ( "a" => { "b" , "c" => { "d" , "e" } , "f" } ) ;
19
30
20
31
assert_tokens (
21
32
& tree,
@@ -24,12 +35,62 @@ fn test_internal_serde_repr() {
24
35
name : "Node" ,
25
36
len : 2 ,
26
37
} ,
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" ) ,
30
67
Token :: Seq { len : Some ( 0 ) } ,
31
68
Token :: SeqEnd ,
32
69
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 ,
33
94
] ,
34
95
) ;
35
96
}
0 commit comments