Exemple #1
0
    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))
Exemple #2
0
    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))
Exemple #3
0
    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))
Exemple #4
0
    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))