summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2020-02-23 11:00:45 +0100
committerMatthias Beyer <mail@beyermatthias.de>2020-02-23 11:00:45 +0100
commit3cc8bc8ec78b093f69da46a238070a7e56e00a0e (patch)
treec933368d86255019e4a8ad6816a6a3ac29fc94cd
parent452c26cc37ea2b59660b98252f83353bb5c9d0be (diff)
Add tests whether insertion and linking works
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
-rw-r--r--lib/etc/libimagutil/src/tree.rs45
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());
+ }
+
+}