示例#1
0
def test_write():
    g = Graph()

    g.add_node("A")
    g.add_node("B")
    g.add_node("C")
    g.add_node("D")

    g.add_edge("A", "B", "edge_data")
    g.add_edge("A", "C", "edge_data")
    g.add_edge("A", "D", "edge_data")
    g.add_edge("B", "D", "edge_data")
    g.add_edge("C", "D", "edge_data")
    g.write('test_graph')
示例#2
0
def test_connected_components():
    g = Graph()
    g.add_node("A")
    g.add_node("B")
    g.add_node("C")
    g.add_node("D")

    g.add_edge("A", "B", "edge_data")
    g.add_edge("A", "C", "edge_data")
    g.add_edge("A", "D", "edge_data")
    g.add_edge("B", "D", "edge_data")
    g.add_edge("C", "D", "edge_data")

    g.add_node("E")
    g.add_node("F")
    g.add_node("G")
    g.add_node("W")

    g.add_edge("E", "F", "edge_data")
    g.add_edge("E", "G", "edge_data")
    g.add_edge("E", "W", "edge_data")
    g.add_edge("F", "W", "edge_data")
    g.add_edge("G", "W", "edge_data")

    groups = g.connected_components()
    if not len(groups) == 2:
        assert False
    for group in groups:
        if "A" in group:
            if not set(['B', 'C', 'D']).issubset(group):
                assert False
        elif "E" in group:
            if not set(['F', 'G', 'W']).issubset(group):
                assert False
        if len(group) != 4:
            assert False
    assert True
示例#3
0
def test_arcs():
    g = Graph()

    g.add_node("A")
    g.add_node("B")
    g.add_node("C")
    g.add_node("D")

    g.add_edge("A", "B", "edge_data")
    g.add_edge("A", "C", "edge_data")
    g.add_edge("A", "D", "edge_data")
    g.add_edge("B", "D", "edge_data")
    g.add_edge("C", "D", "edge_data")

    # inarcs
    if len(g.in_arcs("A")) or len(g.in_arcs_data("A")):
        assert False

    if len(g.in_arcs("B")) != 1 or len(g.in_arcs_data("B")) != 1:
        assert False

    if len(g.in_arcs("C")) != 1 or len(g.in_arcs_data("C")) != 1:
        assert False

    if len(g.in_arcs("D")) != 3 or len(g.in_arcs_data("D")) != 3:
        assert False

    # outarcs
    if len(g.out_arcs("D")) or len(g.out_arcs_data("D")):
        assert False

    if len(g.out_arcs("B")) != 1 or len(g.out_arcs_data("B")) != 1:
        assert False

    if len(g.out_arcs("C")) != 1 or len(g.out_arcs_data("C")) != 1:
        assert False

    if len(g.out_arcs("A")) != 3 or len(g.out_arcs_data("A")) != 3:
        assert False

    assert True
示例#4
0
def test_multi():
    g = Graph()

    g.add_node("A")
    g.add_node("B")
    g.add_node("C")

    g.add_edge("A", "B", "a-b data")
    g.add_edge("B", "C", "b-c data")
    g.add_edge("A", "B", "other data")
    assert g.number_of_multi_edges("A", "B") == 2
示例#5
0
def test_substitute():
    g = Graph()
    g.add_node("A")
    g.add_node("B")
    g.add_node("C")

    g.add_edge("A", "B", "a-b data")
    g.add_edge("B", "C", "b-c data")

    s = Graph()
    s.add_node("B")
    s.add_node("D")
    s.add_edge("B", "D", "b-d data")

    g.substitute("B", s)
    assert len(g.node_list()) == 4
    assert set(g.node_list()) == {'A', 'B', 'C', 'D'}
示例#6
0
def test_bfs_full():
    g = Graph()
    g.add_node("A")
    g.add_node("B")
    g.add_node("C")
    g.add_node("D")
    g.add_node("E")
    g.add_node("F")

    g.add_edge("A", "B", "edge_data")
    g.add_edge("A", "D", "edge_data")
    g.add_edge("B", "C", "edge_data")
    g.add_edge("B", "D", "edge_data")
    bfs = g.bfs_full()
    assert len(bfs)
    assert bfs == ['A', 'E', 'F', 'B', 'D', 'C']
示例#7
0
def test_bfs():
    g = Graph()
    g.add_node("A")
    g.add_node("B")
    g.add_node("C")
    g.add_node("D")
    g.add_node("E")
    g.add_node("F")

    g.add_edge("A", "B", "edge_data")
    g.add_edge("B", "C", "edge_data")
    g.add_edge("C", "D", "edge_data")
    g.add_edge("B", "D", "edge_data")
    bfs = g.bfs("A")
    # print(bfs)
    assert bfs == ["A", "B", "C", "D"]