def test_double_loop_C(self): edges = [(1, 2), (2, 1), (2, 3), (3, 1), (3, "C")] g = Graph(int) for e in edges: g.add_edge(Edge(*e)) dom = dominator_tree(g) expected = [{(LOOPS, 1), (1, 2), (2, 3), (3, "C")}] self.assertTrue(any(dom.edges == e for e in expected), "not found " + value2json(dom.edges))
def test_single(self): edges = [(1, 1)] g = Graph(int) for e in edges: g.add_edge(Edge(*e)) dom = dominator_tree(g) expected = [{(ROOTS, 1)}] self.assertTrue(any(dom.edges == e for e in expected), "not found " + value2json(dom.edges))
def test_dominator(self): edges = [(1, 2), (1, 3), (1, 4), (4, 5), (2, 10), (3, 10), (5, 10)] g = Graph(int) for e in edges: g.add_edge(Edge(*e)) dom = dominator_tree(g) expected = {(ROOTS, 1), (1, 2), (1, 3), (1, 4), (1, 10), (4, 5)} self.assertEqual(dom.edges, expected, "not found " + value2json(dom.edges))
def test_from_two_loops(self): edges = [(1, 2), (2, 1), (3, 4), (4, 3), (1, "A"), (3, "A")] g = Graph(int) for e in edges: g.add_edge(Edge(*e)) dom = dominator_tree(g) expected = [{(LOOPS, 2), (LOOPS, 4), (2, 1), (4, 3), (1, "A")}, {(LOOPS, 1), (LOOPS, 3), (1, 2), (3, 4), (1, "A")}] self.assertTrue(any(dom.edges == e for e in expected), "not found " + value2json(dom.edges))