166 lines
3.5 KiB
Rust
166 lines
3.5 KiB
Rust
use ego_tree::{tree, Tree};
|
|
|
|
#[test]
|
|
fn root() {
|
|
let macro_tree = tree!('a');
|
|
let manual_tree = Tree::new('a');
|
|
assert_eq!(manual_tree, macro_tree);
|
|
}
|
|
|
|
#[test]
|
|
fn single_child() {
|
|
let macro_tree = tree!('a' => { 'b' });
|
|
|
|
let mut manual_tree = Tree::new('a');
|
|
manual_tree.root_mut().append('b');
|
|
|
|
assert_eq!(manual_tree, macro_tree);
|
|
}
|
|
|
|
#[test]
|
|
fn single_child_comma() {
|
|
let macro_tree = tree! {
|
|
'a' => {
|
|
'b',
|
|
}
|
|
};
|
|
|
|
let mut manual_tree = Tree::new('a');
|
|
manual_tree.root_mut().append('b');
|
|
|
|
assert_eq!(manual_tree, macro_tree);
|
|
}
|
|
|
|
#[test]
|
|
fn leaves() {
|
|
let macro_tree = tree!('a' => { 'b', 'c', 'd' });
|
|
|
|
let mut manual_tree = Tree::new('a');
|
|
manual_tree.root_mut().append('b');
|
|
manual_tree.root_mut().append('c');
|
|
manual_tree.root_mut().append('d');
|
|
|
|
assert_eq!(manual_tree, macro_tree);
|
|
}
|
|
|
|
#[test]
|
|
fn leaves_comma() {
|
|
let macro_tree = tree! {
|
|
'a' => {
|
|
'b',
|
|
'c',
|
|
'd',
|
|
}
|
|
};
|
|
|
|
let mut manual_tree = Tree::new('a');
|
|
manual_tree.root_mut().append('b');
|
|
manual_tree.root_mut().append('c');
|
|
manual_tree.root_mut().append('d');
|
|
|
|
assert_eq!(manual_tree, macro_tree);
|
|
}
|
|
|
|
#[test]
|
|
fn nested_single_child() {
|
|
let macro_tree = tree!('a' => { 'b' => { 'c' } });
|
|
|
|
let mut manual_tree = Tree::new('a');
|
|
manual_tree.root_mut().append('b').append('c');
|
|
|
|
assert_eq!(manual_tree, macro_tree);
|
|
}
|
|
|
|
#[test]
|
|
fn nested_single_child_comma() {
|
|
let macro_tree = tree! {
|
|
'a' => {
|
|
'b' => {
|
|
'c',
|
|
},
|
|
}
|
|
};
|
|
|
|
let mut manual_tree = Tree::new('a');
|
|
manual_tree.root_mut().append('b').append('c');
|
|
|
|
assert_eq!(manual_tree, macro_tree);
|
|
}
|
|
|
|
#[test]
|
|
fn nested_leaves() {
|
|
let macro_tree = tree!('a' => { 'b' => { 'c', 'd', 'e' } });
|
|
|
|
let mut manual_tree = Tree::new('a');
|
|
{
|
|
let mut root = manual_tree.root_mut();
|
|
let mut node = root.append('b');
|
|
node.append('c');
|
|
node.append('d');
|
|
node.append('e');
|
|
}
|
|
|
|
assert_eq!(manual_tree, macro_tree);
|
|
}
|
|
|
|
#[test]
|
|
fn nested_leaves_comma() {
|
|
let macro_tree = tree! {
|
|
'a' => {
|
|
'b' => {
|
|
'c',
|
|
'd',
|
|
'e',
|
|
},
|
|
}
|
|
};
|
|
|
|
let mut manual_tree = Tree::new('a');
|
|
{
|
|
let mut root = manual_tree.root_mut();
|
|
let mut node = root.append('b');
|
|
node.append('c');
|
|
node.append('d');
|
|
node.append('e');
|
|
}
|
|
|
|
assert_eq!(manual_tree, macro_tree);
|
|
}
|
|
|
|
#[test]
|
|
fn nested_nested() {
|
|
let macro_tree = tree!('a' => { 'b' => { 'c' => { 'd' } } });
|
|
|
|
let mut manual_tree = Tree::new('a');
|
|
manual_tree.root_mut().append('b').append('c').append('d');
|
|
|
|
assert_eq!(manual_tree, macro_tree);
|
|
}
|
|
|
|
#[test]
|
|
fn mixed() {
|
|
let macro_tree = tree! {
|
|
'a' => {
|
|
'b',
|
|
'd' => { 'e', 'f' },
|
|
'g' => { 'h' => { 'i' } },
|
|
'j',
|
|
}
|
|
};
|
|
|
|
let mut manual_tree = Tree::new('a');
|
|
{
|
|
let mut node = manual_tree.root_mut();
|
|
node.append('b');
|
|
{
|
|
let mut d = node.append('d');
|
|
d.append('e');
|
|
d.append('f');
|
|
}
|
|
node.append('g').append('h').append('i');
|
|
node.append('j');
|
|
}
|
|
|
|
assert_eq!(manual_tree, macro_tree);
|
|
}
|