36 lines
1.2 KiB
Rust
36 lines
1.2 KiB
Rust
use ego_tree::tree;
|
|
|
|
#[test]
|
|
fn prepend_subtree() {
|
|
let mut tree = tree!('a' => { 'b', 'c' => { 'd', 'e' } });
|
|
let node_id = tree.root().first_child().unwrap().id();
|
|
let mut node = tree.get_mut(node_id).unwrap();
|
|
assert_eq!(node.value(), &'b');
|
|
|
|
let subtree = tree!('f' => { 'g', 'h' => { 'i', 'j' } });
|
|
let mut root_subtree = node.prepend_subtree(subtree);
|
|
assert_eq!(root_subtree.parent().unwrap().value(), &'b');
|
|
assert_eq!(
|
|
root_subtree.parent().unwrap().parent().unwrap().value(),
|
|
&'a'
|
|
);
|
|
|
|
let new_tree =
|
|
tree!('a' => { 'b' => { 'f' => { 'g', 'h' => { 'i', 'j' } } }, 'c' => { 'd', 'e' } });
|
|
assert_eq!(format!("{:#?}", tree), format!("{:#?}", new_tree));
|
|
}
|
|
|
|
#[test]
|
|
fn append_subtree() {
|
|
let mut tree = tree!('a' => { 'b', 'c' });
|
|
let mut node = tree.root_mut();
|
|
assert_eq!(node.value(), &'a');
|
|
|
|
let subtree = tree!('d' => { 'e', 'f' });
|
|
let mut root_subtree = node.append_subtree(subtree);
|
|
assert_eq!(root_subtree.parent().unwrap().value(), &'a');
|
|
|
|
let new_tree = tree!('a' => { 'b', 'c', 'd' => { 'e', 'f' } });
|
|
assert_eq!(format!("{:#?}", tree), format!("{:#?}", new_tree));
|
|
}
|