about summary refs log tree commit diff stats
path: root/test/core/graph.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/core/graph.py')
-rw-r--r--test/core/graph.py52
1 files changed, 45 insertions, 7 deletions
diff --git a/test/core/graph.py b/test/core/graph.py
index eb896cfe..40f34f5c 100644
--- a/test/core/graph.py
+++ b/test/core/graph.py
@@ -32,10 +32,48 @@ g1.add_edge(5, 2)
 g1.add_edge(2, 6)
 
 
-dominators = g1.compute_dominators()
-assert(dominators[1] == set([1]))
-assert(dominators[2] == set([1, 2]))
-assert(dominators[3] == set([1, 2, 3]))
-assert(dominators[4] == set([1, 2, 4]))
-assert(dominators[5] == set([1, 2, 5]))
-assert(dominators[6] == set([1, 2, 6]))
+dominators = g1.compute_dominators(1)
+assert(dominators == {1: set([1]),
+                      2: set([1, 2]),
+                      3: set([1, 2, 3]),
+                      4: set([1, 2, 4]),
+                      5: set([1, 2, 5]),
+                      6: set([1, 2, 6])})
+
+# Regression test with multiple heads
+g2 = DiGraph()
+g2.add_edge(1, 2)
+g2.add_edge(2, 3)
+g2.add_edge(3, 4)
+g2.add_edge(5, 6)
+g2.add_edge(6, 3)
+
+dominators = g2.compute_dominators(5)
+assert(dominators == {3: set([3, 5, 6]),
+                      4: set([3, 4, 5, 6]),
+                      5: set([5]),
+                      6: set([5, 6])})
+
+
+postdominators = g1.compute_postdominators(6)
+assert(postdominators == {1: set([1, 2, 6]),
+                          2: set([2, 6]),
+                          3: set([2, 3, 5, 6]),
+                          4: set([2, 4, 5, 6]),
+                          5: set([2, 5, 6]),
+                          6: set([6])})
+
+postdominators = g1.compute_postdominators(5)
+assert(postdominators == {1: set([1, 2, 5]),
+                          2: set([2, 5]),
+                          3: set([3, 5]),
+                          4: set([4, 5]),
+                          5: set([5])})
+
+postdominators = g2.compute_postdominators(4)
+assert(postdominators == {1: set([1, 2, 3, 4]),
+                          2: set([2, 3, 4]),
+                          3: set([3, 4]),
+                          4: set([4]),
+                          5: set([3, 4, 5, 6]),
+                          6: set([3, 4, 6])})