]> git.lizzy.rs Git - rust.git/blob - src/librustc_data_structures/graph/dominators/tests.rs
Rollup merge of #68504 - tmiasko:check-pass, r=alexcrichton
[rust.git] / src / librustc_data_structures / graph / dominators / tests.rs
1 use super::*;
2
3 use super::super::tests::TestGraph;
4
5 #[test]
6 fn diamond() {
7     let graph = TestGraph::new(0, &[(0, 1), (0, 2), (1, 3), (2, 3)]);
8
9     let dominators = dominators(&graph);
10     let immediate_dominators = &dominators.immediate_dominators;
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:
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     );
24
25     let dominators = dominators(&graph);
26     let immediate_dominators = &dominators.immediate_dominators;
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 }