Skip to content

Commit

Permalink
walk_tree: more tests
Browse files Browse the repository at this point in the history
tests for graphs with higher degrees
  • Loading branch information
wagnerf42 committed Apr 16, 2021
1 parent 55fcf16 commit de6ad75
Showing 1 changed file with 32 additions and 0 deletions.
32 changes: 32 additions & 0 deletions src/iter/test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2230,3 +2230,35 @@ fn walk_flat_tree_postfix() {
crate::iter::walk_tree_postfix(99, |&e| if e > 0 { Some(e - 1) } else { None }).collect();
assert!(v.into_iter().eq(0..100));
}

#[test]
fn walk_tree_prefix_degree5() {
let depth = 5;
let nodes_number = (1 - 5i32.pow(depth)) / (1 - 5);
let nodes = (0..nodes_number).collect::<Vec<_>>();
let v: Vec<i32> = crate::iter::walk_tree_prefix(nodes.as_slice(), |&r| {
r.split_first()
.into_iter()
.filter_map(|(_, r)| if r.is_empty() { None } else { Some(r) })
.flat_map(|r| r.chunks(r.len() / 5))
})
.filter_map(|r| r.first().copied())
.collect();
assert_eq!(v, nodes);
}

#[test]
fn walk_tree_postfix_degree5() {
let depth = 5;
let nodes_number = (1 - 5i32.pow(depth)) / (1 - 5);
let nodes = (0..nodes_number).collect::<Vec<_>>();
let v: Vec<i32> = crate::iter::walk_tree_postfix(nodes.as_slice(), |&r| {
r.split_last()
.into_iter()
.filter_map(|(_, r)| if r.is_empty() { None } else { Some(r) })
.flat_map(|r| r.chunks(r.len() / 5))
})
.filter_map(|r| r.last().copied())
.collect();
assert_eq!(v, nodes)
}

0 comments on commit de6ad75

Please sign in to comment.