summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2020-02-28 22:25:56 +0100
committerMatthias Beyer <mail@beyermatthias.de>2020-06-01 13:58:24 +0200
commit69f747ee8fd7be9a18f867a492f632b867316258 (patch)
tree7c5a32e5a9dd00f399e2319df59a5fc77ccc1351
parentf58ebaca1650dfc6ac8e74eee946825ceff7402d (diff)
Add mailtree testing functions
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
-rw-r--r--lib/domain/libimagmail/src/mailtree.rs95
1 files changed, 95 insertions, 0 deletions
diff --git a/lib/domain/libimagmail/src/mailtree.rs b/lib/domain/libimagmail/src/mailtree.rs
index 944a0c4b..570fcda6 100644
--- a/lib/domain/libimagmail/src/mailtree.rs
+++ b/lib/domain/libimagmail/src/mailtree.rs
@@ -249,3 +249,98 @@ impl<'a> Iterator for Traverse<'a> {
}
}
+#[cfg(test)]
+mod tests {
+ use super::*;
+
+ #[test]
+ fn test_traverse_with() {
+ let data = String::from("test");
+ let mut arena = Arena::new();
+ let root = arena.new_node(data);
+ let mailtree = Mailtree {
+ arena,
+ root: root.clone()
+ };
+
+ let t = Traverse::with(&mailtree);
+
+ assert_eq!(t.next_node, Some(root));
+ assert_eq!(t.next_indent, 0);
+ }
+
+ fn make_testing_mailtree(data: String) -> (NodeId, Mailtree) {
+ let mut arena = Arena::new();
+ let root = arena.new_node(data);
+
+ (root.clone(), Mailtree { arena, root: root })
+ }
+
+ #[test]
+ fn test_traverse_get_node() {
+ let (root_id, mt) = make_testing_mailtree(String::from("test"));
+ let t = Traverse::with(&mt);
+ let root = t.get_node(root_id);
+ assert!(root.is_some());
+ assert_eq!(root.unwrap(), "test");
+ }
+
+ #[test]
+ fn test_traverse_get_current_node() {
+ let (_, mt) = make_testing_mailtree(String::from("test"));
+ let t = Traverse::with(&mt);
+ let node = t.get_current_node();
+
+ assert!(node.is_some());
+ let node = node.unwrap();
+
+ assert_eq!(node.get(), "test");
+ assert!(node.parent().is_none());
+ assert!(node.first_child().is_none());
+ assert!(node.last_child().is_none());
+ assert!(node.previous_sibling().is_none());
+ assert!(node.next_sibling().is_none());
+ assert!(!node.is_removed());
+ }
+
+ #[test]
+ fn test_traverse_current_node_next_sibling() {
+ let (_, mt) = make_testing_mailtree(String::from("test"));
+ let t = Traverse::with(&mt);
+ assert!(t.current_node_next_sibling().is_none());
+ }
+
+ #[test]
+ fn test_traverse_current_node_first_child() {
+ let (_, mt) = make_testing_mailtree(String::from("test"));
+ let t = Traverse::with(&mt);
+ assert!(t.current_node_first_child().is_none());
+ }
+
+ #[test]
+ fn test_traverse_current_node_parent() {
+ let (_, mt) = make_testing_mailtree(String::from("test"));
+ let t = Traverse::with(&mt);
+ assert!(t.current_node_parent().is_none());
+ }
+
+
+ //
+ // non-simple tests
+ //
+
+ #[test]
+ fn test_iteration() {
+ let data = ["1", "2", "3", "4"];
+ let (_, mt) = Mailtree::fill_from_iter(data.iter().map(ToString::to_string)).unwrap();
+ let mut t = Traverse::with(&mt);
+
+ assert_eq!(t.next().unwrap(), (0, String::from("1")));
+ assert_eq!(t.next().unwrap(), (1, String::from("2")));
+ assert_eq!(t.next().unwrap(), (2, String::from("3")));
+ assert_eq!(t.next().unwrap(), (3, String::from("4")));
+ assert!(t.next().is_none());
+ }
+
+}
+