class GraphTest(unittest.TestCase): def setUp(self): self.g = Graph(flag_dag=True) self.g.add_vertex(0) self.g.add_vertex(1) self.g.add_vertex(2) self.g.add_edge(GraphEdge(2, 3, 1)) self.g.add_vertex(3) self.g.add_edge(GraphEdge(3, 1, 1)) self.g.add_vertex(4) self.g.add_edge(GraphEdge(4, 1, 1)) self.g.add_edge(GraphEdge(4, 0, 1)) self.g.add_vertex(5) self.g.add_edge(GraphEdge(5, 2, 1)) self.g.add_edge(GraphEdge(5, 0, 1)) def test_vertices(self): self.assertEqual(self.g.vertices(), [0, 1, 2, 3, 4, 5]) def test_edges(self): edges = [ GraphEdge(2, 3, 1), GraphEdge(3, 1, 1), GraphEdge(4, 1, 1), GraphEdge(4, 0, 1), GraphEdge(5, 2, 1), GraphEdge(5, 0, 1) ] self.assertEqual(self.g.edges(), edges) def test_topological_sorting(self): self.assertEqual(self.g.topological_sort(), deque([5, 4, 2, 3, 1, 0])) def tearDown(self): pass
v_names.append(int(vertex_name)) v_values.append(int(vertex_value)) if vertex_neighbour_1 != "E": v_destination_1.append(int(vertex_neighbour_1)) else: v_destination_1.append(-1) if vertex_neighbour_2 != "E": v_destination_2.append(int(vertex_neighbour_2)) else: v_destination_2.append(-1) # create graph g = Graph(flag_dag=True) for name in v_names: g.add_vertex(name) if v_destination_1[name] != -1: g.add_edge(GraphEdge(name, v_destination_1[name], v_values[v_destination_1[name]])) if v_destination_2[name] != -1: g.add_edge(GraphEdge(name, v_destination_2[name], v_values[v_destination_2[name]])) #print(g.edges(), file=sys.stderr) #print(g.vertices(), file=sys.stderr) #print(g.find_longest_path(0), file=sys.stderr) max_dist = max([value for key, value in g.find_longest_path(0).items()]) + v_values[0] # Write an action using print # To debug: print("Debug messages...", file=sys.stderr) print(max_dist)