Ejemplo n.º 1
0
class BipartiteTestCase(TestCase):
    def setUp(self):
        self.graph_builder = GraphBuilder(6, graph_node=EnhancedNode)
        self.graph_builder.connect(0, 4)
        self.graph_builder.connect(0, 5)
        self.graph_builder.connect(1, 3)
        self.graph_builder.connect(2, 4)
        self.graph = self.graph_builder.build()

    def test_bipartite(self):
        bp_checker = BiPartiteChecker(self.graph)
        self.assertTrue(bp_checker.is_graph_bipartite())

    def test_bipartite_another(self):
        self.graph_builder.connect(0, 1)
        self.graph = self.graph_builder.build()
        bp_checker = BiPartiteChecker(self.graph)
        self.assertTrue(bp_checker.is_graph_bipartite())

    def test_non_bipartite(self):
        self.graph_builder.connect(0, 1)
        self.graph_builder.connect(0, 3)
        self.graph = self.graph_builder.build()
        bp_checker = BiPartiteChecker(self.graph)
        self.assertFalse(bp_checker.is_graph_bipartite())
Ejemplo n.º 2
0
class CycleDetectionTest(TestCase):
    def setUp(self):
        self.graph_builder = GraphBuilder(5)
        self.graph_builder.connect(1, 0)
        self.graph_builder.connect(2, 0)
        self.graph_builder.connect(0, 3)
        self.graph_builder.connect(3, 4)
        self.graph = self.graph_builder.build()

    def test_cycle(self):
        cd = CycleDetector(self.graph)
        self.assertEqual(cd.is_cycle_detected(), False)

    def test_cycle_exist(self):
        self.graph_builder.connect(1, 2)
        self.graph = self.graph_builder.build()
        cd = CycleDetector(self.graph)
        self.assertEqual(cd.is_cycle_detected(), True)
Ejemplo n.º 3
0
class ConnectedComponentsTestCase(TestCase):
    def setUp(self):
        self.graph_builder = GraphBuilder(13, graph_node=EnhancedNode)
        self.graph_builder.connect(0, 1)
        self.graph_builder.connect(0, 2)
        self.graph_builder.connect(0, 6)
        self.graph_builder.connect(0, 5)
        self.graph_builder.connect(5, 3)
        self.graph_builder.connect(5, 4)
        self.graph_builder.connect(3, 4)
        self.graph_builder.connect(7, 8)
        self.graph_builder.connect(9, 10)
        self.graph_builder.connect(9, 11)
        self.graph_builder.connect(9, 12)
        self.graph_builder.connect(11, 12)
        self.graph = self.graph_builder.build()

    def test_connected_components(self):
        cc = ConnectedComponents(self.graph)

        nodes = self.graph_builder.get_nodes_with_ids([0, 1])
        self.assertTrue(cc.is_connected(nodes[0], nodes[1]))

        nodes = self.graph_builder.get_nodes_with_ids([0, 7])
        self.assertFalse(cc.is_connected(nodes[0], nodes[1]))

        nodes = self.graph_builder.get_nodes_with_ids([0, 3])
        self.assertTrue(cc.is_connected(nodes[0], nodes[1]))

        nodes = self.graph_builder.get_nodes_with_ids([10, 12])
        self.assertTrue(cc.is_connected(nodes[0], nodes[1]))

        nodes = self.graph_builder.get_nodes_with_ids([6, 11])
        self.assertFalse(cc.is_connected(nodes[0], nodes[1]))