diff options
author | Matthias Beyer <mail@beyermatthias.de> | 2020-02-23 11:00:45 +0100 |
---|---|---|
committer | Matthias Beyer <mail@beyermatthias.de> | 2020-02-23 11:00:45 +0100 |
commit | 3cc8bc8ec78b093f69da46a238070a7e56e00a0e (patch) | |
tree | c933368d86255019e4a8ad6816a6a3ac29fc94cd | |
parent | 452c26cc37ea2b59660b98252f83353bb5c9d0be (diff) |
Add tests whether insertion and linking works
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
-rw-r--r-- | lib/etc/libimagutil/src/tree.rs | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/lib/etc/libimagutil/src/tree.rs b/lib/etc/libimagutil/src/tree.rs index e8cc9136..10b10874 100644 --- a/lib/etc/libimagutil/src/tree.rs +++ b/lib/etc/libimagutil/src/tree.rs @@ -143,3 +143,48 @@ impl<'a, T, ID, IG> TreeBuilder<'a, T, ID, IG> return Ok(None) } } + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_insertion() { + let mut tree = Tree::new(); + (1..100).for_each(|i| { + tree.add_node(i); + }); + + assert!((1..100).all(|i| tree.elements.iter().any(|e| e.element == i))); + } + + #[test] + fn test_insertion_and_linking() { + let mut tree = Tree::new(); + (1..100).for_each(|i| tree.add_node(i)); + + struct IdGetterImpl; + impl IdGetter<usize> for IdGetterImpl { + type ID = usize; + + fn get_id_for_node(&self, node: &usize) -> Result<Self::ID> { + Ok(*node) + } + + fn get_id_for_parent_of(&self, node: &usize) -> Result<Option<Self::ID>> { + if *node > 1 { + Ok(Some(*node - 1)) + } else { + Ok(None) + } + } + } + + + let r = tree.build_tree::<usize, IdGetterImpl>(IdGetterImpl) + .build(); + + assert!(r.is_ok()); + } + +} |