From 69f747ee8fd7be9a18f867a492f632b867316258 Mon Sep 17 00:00:00 2001 From: Matthias Beyer Date: Fri, 28 Feb 2020 22:25:56 +0100 Subject: Add mailtree testing functions Signed-off-by: Matthias Beyer --- lib/domain/libimagmail/src/mailtree.rs | 95 ++++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) 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()); + } + +} + -- cgit v1.2.3