Ejemplo n.º 1
0
    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]]
Ejemplo n.º 2
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")
Ejemplo n.º 3
0
    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"]
Ejemplo n.º 4
0
 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")
     ]