Beispiel #1
0
    def test_add_edges_from(self) -> None:
        g = DiGraph()
        g.add_edges_from([
            (1, 2, 4.5, {
                "color": "blue",
                "mass": 42
            }),
            (4, 3, 9.5),
            (5, 6, {
                "color": "red",
                "mass": 99
            }),
            (8, 7),
            (7, 8),
        ])

        assert g.edge_count == 5, "digraph should have 5 edges"
        assert g.get_edge(
            1, 2).weight == 4.5, "edge (1, 2) should have weight 4.5"
        assert g.get_edge(
            1, 2
        )["color"] == "blue", "edge (1, 2) should have 'color' set to 'blue'"
        assert g.get_edge(
            1, 2)["mass"] == 42, "edge (1, 2) should have 'mass' set to 42"
        assert not g.get_edge(4, 3).has_attributes_dict(
        ), "edge (3, 4) should not have attributes dict"
        assert (g.get_edge(5, 6).weight == edge_module.DEFAULT_WEIGHT
                ), "edge should have default weight"
        assert g.get_edge(7, 8) != g.get_edge(
            8, 7), "order of vertices should specify different edges"
    def test_vertices_topological_order(self) -> None:
        g = DiGraph([("s", "t"), ("t", "u"), ("u", "v")])

        results: SearchResults[DiVertex, DiEdge] = dfs(g)
        topo_sorted = results.vertices_topological_order()
        assert topo_sorted[0] == "s", "first element of path graph topo sort should be s"
        assert topo_sorted[1] == "t", "second element of path graph topo sort should be t"
        assert topo_sorted[2] == "u", "third element of path graph topo sort should be u"
        assert topo_sorted[3] == "v", "fourth element of path graph topo sort should be v"

        g = DiGraph()
        g.add_edges_from([("s", "v"), ("s", "w"), ("v", "t"), ("w", "t")])

        results: SearchResults[DiVertex, DiEdge] = dfs(g)
        topo_sorted = results.vertices_topological_order()
        assert topo_sorted[0] == "s", "first element of topo sort should be s"
        assert topo_sorted[1] == "v" or topo_sorted[1] == "w", (
            "second element of topo sort " "should be v or w"
        )
        assert topo_sorted[3] == "t", "fourth element topo sort should be t"