Esempio n. 1
0
    def test_multigraph_read_adj_list01(self) -> None:
        g = MultiGraph()
        read_adj_list(os.path.join(os.getcwd(), TEST_DIR, GRAPH_FILE01), g)

        v1_loop_edge = g[1].loop_edge
        assert v1_loop_edge is not None
        assert v1_loop_edge.multiplicity == 2, "v1 should have 2 loops"
        assert g[1].degree == 6, "deg(v1) should be 6"
        assert len(g[2].incident_edges()) == 2, (
            "v2 should have 4 incident edges, 3 of which are parallel and stored in one "
            " Edge object.")
        assert g[2].degree == 4, "v2 should have degree 4"
        assert g[3].degree == 3, "v3 should have degree 3"
        assert (
            g.get_edge(3, 2).multiplicity == 3
        ), "there should be 2 parallel edges between (2, 3) [3 edges total]"
        assert (
            g.get_edge(2, 3).multiplicity == 3
        ), "there should be 2 parallel edges between (2, 3) [3 edges total]"
        assert g[4].degree == 1, "v4 should have degree 1"
        assert g[
            5].degree == 0, "v5 should have degree 0 (i.e. isolated vertex)"

        with pytest.raises(KeyError):
            assert g.get_edge(
                1, 5) is None, "There should be no edge connected to v5"

        assert g.get_edge(1, 4) is not None, "There should be an edge (1, 4)"
        assert g.get_edge(1, 2) is not None, "There should be an edge (1, 2)"
Esempio n. 2
0
    def test_digraph_read_adj_list(self) -> None:
        g = MultiDiGraph()
        read_adj_list(os.path.join(os.getcwd(), TEST_DIR, DIGRAPH_FILE01), g)

        assert g.vertex_count == 5, "graph should have 5 vertices"
        assert g[1].loop_edge is not None, "v1 should have a loop"
        assert (len(g[1].incident_edges_incoming()) == 2
                ), "v1 should have 2 incoming edges (including its loop)"
        assert len(g[1].incident_edges_outgoing()
                   ) == 3, "v1 edges_outgoing should have length 3"
        assert g[1].degree == 6, "deg(v1) should be 6"
        assert g[2].degree == 4, "deg(v2) should be 4"
        assert len(g[2].incident_edges_outgoing()
                   ) == 2, "v2 should have 2 outgoing edges"
        assert len(g[3].incident_edges_incoming()
                   ) == 2, "v3 should have 2 incoming edges"
        assert len(g[3].incident_edges_outgoing()
                   ) == 1, "v3 should have 1 outgoing edge"
        assert len(g[4].incident_edges_outgoing()
                   ) == 0, "v4 should have 0 outgoing edges"
        v5_loop_edge = g[5].loop_edge
        assert v5_loop_edge is not None
        assert v5_loop_edge.multiplicity == 2, "v5 should have 2 loops"
        assert (len(g[5].incident_edges_incoming()) == 1
                ), "v5 should have 1 incoming edge (self-loop)"

        with pytest.raises(KeyError):
            assert g.get_edge(4,
                              3) is None, "graph should not have edge (4, 3)"

        assert g.get_edge(3, 4) is not None, "graph should have edge (3, 4)"
Esempio n. 3
0
    def test_multigraph_read_adj_list02(self) -> None:
        g = MultiGraph()
        read_adj_list(os.path.join(os.getcwd(), TEST_DIR, GRAPH_FILE02), g)

        assert g.edge_count == len(
            g.edges()), "g should have no parallel edges"
        assert g.edge_count == 6, "graph should have 6 edges"
        assert g.vertex_count == 4, "graph should have 4 vertices"
        assert g[1].degree == g[2].degree, "v1 and v2 should have same degree"
        assert g[1].degree == 3, "v1 should have degree 3"
        assert g.get_edge(2, 4) is not None, "graph should have edge (2, 4)"
        assert g.get_edge(1, 3) is not None, "graph should have edge (1, 3)"
Esempio n. 4
0
    def test_multigraph_read_adj_list03(self) -> None:
        g = MultiGraph()
        read_adj_list(os.path.join(os.getcwd(), TEST_DIR, GRAPH_FILE03), g)

        assert g.edge_count == len(
            g.edges()), "g should have no parallel edges"
        assert g.edge_count == 14, "graph should have 14 edges"
        assert g.vertex_count == 8, "graph should have 8 vertices"
        assert g[1].degree < g[2].degree, "v1 and v2 should have same degree"
        assert g[1].degree == 3, "v1 should have degree 3"
        assert g[2].degree == 4, "v2 should have degree 4"
        assert g.get_edge(2, 4) is not None, "graph should have edge (2, 4)"

        with pytest.raises(KeyError):
            assert g.get_edge(2,
                              6) is None, "graph should not have edge (2, 6)"
Esempio n. 5
0
 def test_digraph_write_adj_list(self) -> None:
     g = MultiDiGraph()
     read_adj_list(os.path.join(os.getcwd(), TEST_DIR, DIGRAPH_FILE01), g)
     write_adj_list_to_file(
         os.path.join(os.getcwd(), TEST_DIR, DIGRAPH_OUTPUT_FILE), g)