crate::ix!();
impl TreeSubBranchOrderingMeasurer for Skeleton {
#[instrument(level = "trace", skip(self))]
fn measure_tree_sub_branch_orderings(&self) -> Vec<SubBranchOrdering> {
let mut results = Vec::with_capacity(self.nodes().len());
for node in self.nodes() {
let ord = node.ordering().cloned().unwrap_or(SubBranchOrdering::None);
results.push(ord);
}
results
}
}
#[cfg(test)]
mod skeleton_sub_branch_ordering_measurer_assessment {
use super::*;
#[traced_test]
fn check_ordering_is_unknown_for_all_nodes() {
let n0 = SkeletonNodeBuilder::default()
.id(0u16)
.child_ids(vec![1u16])
.name("root")
.original_key("root")
.build(NodeKind::Dispatch)
.unwrap();
let n1 = SkeletonNodeBuilder::default()
.id(1u16)
.name("child")
.original_key("child")
.build(NodeKind::LeafHolder)
.unwrap();
let skel = SkeletonBuilder::default()
.nodes(vec![n0, n1])
.root_id(Some(0u16))
.build()
.unwrap();
let orderings = skel.measure_tree_sub_branch_orderings();
assert_eq!(orderings.len(), 2);
for o in orderings {
match o {
SubBranchOrdering::None => {},
_ => panic!("Expected None ordering for Skeleton node"),
}
}
}
}