def test_graph_with_cycle(self): graph = PertGraph() graph._add_node(key='A', dependencies=['C']) graph._add_node(key='B', dependencies=['A']) graph._add_node(key='C', dependencies=['B']) self.assertRaises(ValueError, ChronologicalLayout, graph)
def test_connected_graph(self): graph = PertGraph() graph._add_node(key='A', dependencies=[]) graph._add_node(key='B', dependencies=['A']) graph._add_node(key='C', dependencies=['A']) graph_connectivity = GraphConnectivityDFS(graph) self.assertEqual(True, graph_connectivity.is_connected())
def test_non_cyclic_graph(self): graph = PertGraph() graph._add_node(key='A', dependencies=[]) graph._add_node(key='B', dependencies=['A']) graph._add_node(key='C', dependencies=['A']) graph._add_node(key='D', dependencies=['B', 'C']) engine = CycleDetectorDFS(graph) self.assertEqual(False, engine.is_cyclic())
def test_cyclic_graph_1(self): graph = PertGraph() graph._add_node(key='A', dependencies=['C']) graph._add_node(key='B', dependencies=['A']) graph._add_node(key='C', dependencies=['B']) engine = CycleDetectorDFS(graph) self.assertEqual(True, engine.is_cyclic()) self.assertEqual(['A', 'B', 'C', 'A'], engine.get_cycle())
def test_three_nodes_in_order(self): graph = PertGraph() graph._add_node(key='A', dependencies=[]) graph._add_node(key='B', dependencies=['A']) graph._add_node(key='C', dependencies=['B']) engine = ChronologicalLayout(graph) engine.get_layout() self.assertEqual(['A'], engine._gates[0]) self.assertEqual(['B'], engine._gates[1]) self.assertEqual(['C'], engine._gates[2])
def main(): print('jira_pert is running...\n') options = parse_arguments() epic_key = options.key jira_api = JiraAPIv2() features = jira_api.get_issues_in_epic(epic_key) graph = PertGraph(features) graph.print() diagram = PertDiagram(graph) diagram.plot()