fn main() {
#[cfg(feature = "experimental")]
{
use nary_tree::{RemoveBehavior, TreeBuilder};
let mut tree = TreeBuilder::new().with_root(0).build();
let mut root = tree.root_mut().unwrap();
{
let mut one = root.append(1);
let mut two = one.append(2);
two.append(3);
two.append(4);
}
{
let mut five = root.append(5);
five.append(6).append(7);
five.append(8);
}
println!("{}", tree);
let three_id = tree.find(&3).unwrap()[0];
let five_id = tree.find(&5).unwrap()[0];
tree.remove(three_id, RemoveBehavior::DropChildren);
tree.remove(five_id, RemoveBehavior::DropChildren);
println!("{}", tree);
let two = tree.get(tree.find(&2).unwrap()[0]).unwrap();
assert_eq!(two.first_child().unwrap().data(), &4);
let four = tree.get(tree.find(&4).unwrap()[0]).unwrap();
assert!(four.prev_sibling().is_none());
assert_eq!(tree.root().unwrap().last_child().unwrap().data(), &1);
println!("capacity before compact: {}", tree.capacity());
assert!(tree.capacity() >= 9);
tree.compact();
println!("{}", tree);
let two = tree.get(tree.find(&2).unwrap()[0]).unwrap();
assert_eq!(two.first_child().unwrap().data(), &4);
let four = tree.get(tree.find(&4).unwrap()[0]).unwrap();
assert!(four.prev_sibling().is_none());
assert_eq!(tree.root().unwrap().last_child().unwrap().data(), &1);
println!("capacity after compact: {}", tree.capacity());
assert!(tree.capacity() == 4);
}
}