()
| 136 | |
| 137 | #[test] |
| 138 | fn transitive_closure() { |
| 139 | let graph = create_digraph(TINY_DG); |
| 140 | let tc = TransitiveClosure::new(graph.as_ref()); |
| 141 | let expect = vec![ |
| 142 | vec![1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0], // 0 |
| 143 | vec![0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], // 1 |
| 144 | vec![1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0], // 2 |
| 145 | vec![1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0], // 3 |
| 146 | vec![1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0], // 4 |
| 147 | vec![1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0], // 5 |
| 148 | vec![1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1], // 6 |
| 149 | vec![1; 13], // 7 |
| 150 | vec![1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1], // 8 |
| 151 | vec![1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1], // 9 |
| 152 | vec![1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1], // 10 |
| 153 | vec![1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1], // 11 |
| 154 | vec![1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1], // 12 |
| 155 | ]; |
| 156 | for v in 0..graph.V() { |
| 157 | for w in 0..graph.V() { |
| 158 | assert_eq!( |
| 159 | expect[v][w], |
| 160 | if tc.reachable(v, w) { 1 } else { 0 }, |
| 161 | "v = {}, w = {}, ", |
| 162 | v, |
| 163 | w |
| 164 | ); |
| 165 | } |
| 166 | } |
| 167 | } |
| 168 | |
| 169 | fn create_digraph(i: &str) -> Box<dyn IGraph> { |
| 170 | Box::new(Digraph::from(i)) |
nothing calls this directly
no test coverage detected