diff options
Diffstat (limited to 'test/core/graph.py')
| -rw-r--r-- | test/core/graph.py | 52 |
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])}) |