def test_create_graph(self):
     graph_definition = [[1, 2], [2, 3], [3, 1]]
     num_vertices = 3
     direction = 'forward'
     expected_graph = [[1], [2], [0]]
     graph = create_graph(graph_definition, num_vertices, direction)
     self.assertListEqual(expected_graph, graph)
 def test_finish_order_reversed(self):
     graph_definition = [[1, 2], [2, 3], [2, 4], [3, 1], [4, 5], [5, 1]]
     num_vertices = 5
     direction = 'reverse'
     graph = create_graph(graph_definition, num_vertices, direction)
     expected_finish_order = [1, 3, 4, 2, 0]
     visited, finish_order, visited_together = dfs(graph, 0)
     self.assertListEqual(expected_finish_order, finish_order)
 def test_dfs_loop(self):
     graph_definition = [[1, 2], [2, 3], [3, 1], [2, 4], [4, 5], [5, 6],
                         [6, 4]]
     num_vertices = 6
     direction = 'forward'
     graph = create_graph(graph_definition, num_vertices, direction)
     finish_order, component_sizes = dfs_loop(graph, [4, 3, 2, 1, 0, 5])
     expected_finish_order = [3, 5, 4, 1, 0, 2]
     expected_component_sizes = [3, 0, 3, 0, 0, 0]
     self.assertListEqual(expected_finish_order, finish_order)
     self.assertListEqual(expected_component_sizes, component_sizes)