def test_adjacency_matrix(self): ug = UndirectedGraph("A", "B", "C", "D") ug.add_new_edge("A", "B") ug.add_new_edge("B", "C") ug.add_new_edge("C", "D") assert ug.adjacency_matrix == [[0, 1, 0, 0], [1, 0, 1, 0], [0, 1, 0, 1], [0, 0, 1, 0]]
def test_create(self): ug = UndirectedGraph("A", "B", "C") ug.add_new_edge("A", "B") ug.add_new_edge("B", "C") assert [v.name for v in ug.vertexes] == ["A", "B", "C"] assert ug.adjacency_dict == { vt("A"): [vt("B")], vt("B"): [vt("A"), vt("C")], vt("C"): [vt("B")] } with pytest.raises(exceptions.VertexNotExistError): ug.get_vertex_by_name("E") with pytest.raises(exceptions.VertexNotExistError): ug.add_new_edge("C", "E")
def test_traverse(self): vertexes_names = [] def traverse_visit_callback(vertex): vertexes_names.append(vertex.name) un = UndirectedGraph("A", "B", "C", "D") un.add_new_edge("A", "B") un.add_new_edge("B", "C") un.add_new_edge("C", "D") # bfs un.bfs_traverse("A", traverse_visit_callback) assert vertexes_names == ["A", "B", "C", "D"] vertexes_names = [] # dfs un.dfs_traverse("A", traverse_visit_callback) assert vertexes_names == ["A", "B", "C", "D"]
def test_find_shortest_path(self): dg = UndirectedGraph("A", "B", "C", "D") dg.add_new_edge("A", "B") dg.add_new_edge("B", "D") dg.add_new_edge("B", "C") dg.add_new_edge("A", "C") dg.add_new_edge("C", "D") result = dg.find_shortest_path("A", "D") assert result == [vt("A"), vt("B"), vt("D")] or result == [ vt("A"), vt("C"), vt("D") ]