diff options
author | Matthias Beyer <mail@beyermatthias.de> | 2020-02-28 22:25:56 +0100 |
---|---|---|
committer | Matthias Beyer <mail@beyermatthias.de> | 2020-06-01 13:58:24 +0200 |
commit | 69f747ee8fd7be9a18f867a492f632b867316258 (patch) | |
tree | 7c5a32e5a9dd00f399e2319df59a5fc77ccc1351 | |
parent | f58ebaca1650dfc6ac8e74eee946825ceff7402d (diff) |
Add mailtree testing functions
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
-rw-r--r-- | lib/domain/libimagmail/src/mailtree.rs | 95 |
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()); + } + +} + |