capability_skeleton/
tree_sub_branch_ordering_measurer.rs

1// ---------------- [ File: capability-skeleton/src/tree_sub_branch_ordering_measurer.rs ]
2crate::ix!();
3
4impl TreeSubBranchOrderingMeasurer for Skeleton {
5    #[instrument(level = "trace", skip(self))]
6    fn measure_tree_sub_branch_orderings(&self) -> Vec<SubBranchOrdering> {
7        let mut results = Vec::with_capacity(self.nodes().len());
8        for node in self.nodes() {
9            let ord = node.ordering().cloned().unwrap_or(SubBranchOrdering::None);
10            results.push(ord);
11        }
12        results
13    }
14}
15
16#[cfg(test)]
17mod skeleton_sub_branch_ordering_measurer_assessment {
18    use super::*;
19
20    #[traced_test]
21    fn check_ordering_is_unknown_for_all_nodes() {
22        let n0 = SkeletonNodeBuilder::default()
23            .id(0u16)
24            .child_ids(vec![1u16])
25            .name("root")
26            .original_key("root")
27            .build(NodeKind::Dispatch)
28            .unwrap();
29        let n1 = SkeletonNodeBuilder::default()
30            .id(1u16)
31            .name("child")
32            .original_key("child")
33            .build(NodeKind::LeafHolder)
34            .unwrap();
35
36        let skel = SkeletonBuilder::default()
37            .nodes(vec![n0, n1])
38            .root_id(Some(0u16))
39            .build()
40            .unwrap();
41
42        let orderings = skel.measure_tree_sub_branch_orderings();
43        assert_eq!(orderings.len(), 2);
44        for o in orderings {
45            match o {
46                SubBranchOrdering::None => {},
47                _ => panic!("Expected None ordering for Skeleton node"),
48            }
49        }
50    }
51}