use super::super::tests::TestGraph; use super::*; #[test] fn diamond_post_order() { let graph = TestGraph::new(0, &[(0, 1), (0, 2), (1, 3), (2, 3)]); let result = post_order_from(&graph, 0); assert_eq!(result, vec![3, 1, 2, 0]); } #[test] fn is_cyclic() { use super::super::is_cyclic; let diamond_acyclic = TestGraph::new(0, &[(0, 1), (0, 2), (1, 3), (2, 3)]); let diamond_cyclic = TestGraph::new(0, &[(0, 1), (1, 2), (2, 3), (3, 0)]); assert!(!is_cyclic(&diamond_acyclic)); assert!(is_cyclic(&diamond_cyclic)); } #[test] fn dfs() { let graph = TestGraph::new(0, &[(0, 1), (0, 2), (1, 3), (2, 3), (3, 0)]); let result: Vec = DepthFirstSearch::new(&graph).with_start_node(0).collect(); assert_eq!(result, vec![0, 2, 3, 1]); } #[test] fn dfs_debug() { let graph = TestGraph::new(0, &[(0, 1), (0, 2), (1, 3), (2, 3), (3, 0)]); let mut dfs = DepthFirstSearch::new(&graph).with_start_node(0); dfs.complete_search(); assert_eq!(format!("{{0, 1, 2, 3}}"), format!("{:?}", dfs)); }