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())
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)
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]))