MCPcopy Index your code
hub / github.com/douchuan/algorithm / transitive_closure

Function transitive_closure

tests/test_directed_graph.rs:138–167  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

136
137#[test]
138fn 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
169fn create_digraph(i: &str) -> Box<dyn IGraph> {
170 Box::new(Digraph::from(i))

Callers

nothing calls this directly

Calls 2

create_digraphFunction · 0.85
VMethod · 0.45

Tested by

no test coverage detected