]>
Commit | Line | Data |
---|---|---|
3157f602 XL |
1 | use super::*; |
2 | ||
416331ca XL |
3 | use super::super::tests::TestGraph; |
4 | ||
3157f602 XL |
5 | #[test] |
6 | fn diamond() { | |
c30ab7b3 | 7 | let graph = TestGraph::new(0, &[(0, 1), (0, 2), (1, 3), (2, 3)]); |
3157f602 XL |
8 | |
9 | let dominators = dominators(&graph); | |
416331ca | 10 | let immediate_dominators = &dominators.immediate_dominators; |
3157f602 XL |
11 | assert_eq!(immediate_dominators[0], Some(0)); |
12 | assert_eq!(immediate_dominators[1], Some(0)); | |
13 | assert_eq!(immediate_dominators[2], Some(0)); | |
14 | assert_eq!(immediate_dominators[3], Some(0)); | |
15 | } | |
16 | ||
17 | #[test] | |
18 | fn paper() { | |
19 | // example from the paper: | |
dfeec247 XL |
20 | let graph = TestGraph::new( |
21 | 6, | |
22 | &[(6, 5), (6, 4), (5, 1), (4, 2), (4, 3), (1, 2), (2, 3), (3, 2), (2, 1)], | |
23 | ); | |
3157f602 XL |
24 | |
25 | let dominators = dominators(&graph); | |
416331ca | 26 | let immediate_dominators = &dominators.immediate_dominators; |
3157f602 XL |
27 | assert_eq!(immediate_dominators[0], None); // <-- note that 0 is not in graph |
28 | assert_eq!(immediate_dominators[1], Some(6)); | |
29 | assert_eq!(immediate_dominators[2], Some(6)); | |
30 | assert_eq!(immediate_dominators[3], Some(6)); | |
31 | assert_eq!(immediate_dominators[4], Some(6)); | |
32 | assert_eq!(immediate_dominators[5], Some(6)); | |
33 | assert_eq!(immediate_dominators[6], Some(6)); | |
34 | } |