@@ -18,10 +18,18 @@ fn create_graph() -> VecGraph<usize> {
18
18
VecGraph :: new ( 7 , vec ! [ ( 0 , 1 ) , ( 1 , 2 ) , ( 1 , 3 ) , ( 3 , 4 ) , ( 5 , 1 ) ] )
19
19
}
20
20
21
+ fn create_graph_with_back_refs ( ) -> VecGraph < usize , true > {
22
+ // Same as above
23
+ VecGraph :: new ( 7 , vec ! [ ( 0 , 1 ) , ( 1 , 2 ) , ( 1 , 3 ) , ( 3 , 4 ) , ( 5 , 1 ) ] )
24
+ }
25
+
21
26
#[ test]
22
27
fn num_nodes ( ) {
23
28
let graph = create_graph ( ) ;
24
29
assert_eq ! ( graph. num_nodes( ) , 7 ) ;
30
+
31
+ let graph = create_graph_with_back_refs ( ) ;
32
+ assert_eq ! ( graph. num_nodes( ) , 7 ) ;
25
33
}
26
34
27
35
#[ test]
@@ -34,11 +42,36 @@ fn successors() {
34
42
assert_eq ! ( graph. successors( 4 ) , & [ ] as & [ usize ] ) ;
35
43
assert_eq ! ( graph. successors( 5 ) , & [ 1 ] ) ;
36
44
assert_eq ! ( graph. successors( 6 ) , & [ ] as & [ usize ] ) ;
45
+
46
+ let graph = create_graph_with_back_refs ( ) ;
47
+ assert_eq ! ( graph. successors( 0 ) , & [ 1 ] ) ;
48
+ assert_eq ! ( graph. successors( 1 ) , & [ 2 , 3 ] ) ;
49
+ assert_eq ! ( graph. successors( 2 ) , & [ ] as & [ usize ] ) ;
50
+ assert_eq ! ( graph. successors( 3 ) , & [ 4 ] ) ;
51
+ assert_eq ! ( graph. successors( 4 ) , & [ ] as & [ usize ] ) ;
52
+ assert_eq ! ( graph. successors( 5 ) , & [ 1 ] ) ;
53
+ assert_eq ! ( graph. successors( 6 ) , & [ ] as & [ usize ] ) ;
54
+ }
55
+
56
+ #[ test]
57
+ fn predecessors ( ) {
58
+ let graph = create_graph_with_back_refs ( ) ;
59
+ assert_eq ! ( graph. predecessors( 0 ) , & [ ] ) ;
60
+ assert_eq ! ( graph. predecessors( 1 ) , & [ 0 , 5 ] ) ;
61
+ assert_eq ! ( graph. predecessors( 2 ) , & [ 1 ] ) ;
62
+ assert_eq ! ( graph. predecessors( 3 ) , & [ 1 ] ) ;
63
+ assert_eq ! ( graph. predecessors( 4 ) , & [ 3 ] ) ;
64
+ assert_eq ! ( graph. predecessors( 5 ) , & [ ] ) ;
65
+ assert_eq ! ( graph. predecessors( 6 ) , & [ ] ) ;
37
66
}
38
67
39
68
#[ test]
40
69
fn dfs ( ) {
41
70
let graph = create_graph ( ) ;
42
71
let dfs: Vec < _ > = graph:: depth_first_search ( & graph, 0 ) . collect ( ) ;
43
72
assert_eq ! ( dfs, vec![ 0 , 1 , 3 , 4 , 2 ] ) ;
73
+
74
+ let graph = create_graph_with_back_refs ( ) ;
75
+ let dfs: Vec < _ > = graph:: depth_first_search ( & graph, 0 ) . collect ( ) ;
76
+ assert_eq ! ( dfs, vec![ 0 , 1 , 3 , 4 , 2 ] ) ;
44
77
}
0 commit comments