示例#1
0
def test_reverse_dfs1():
    G = Graph()
    G.add_node(Node("test1"))
    G.add_node(Node('test2'))
    G.add_edge(Edge('test1', 'test2'))
    G.add_edge(Edge('test1', Node('test3')))
    expect = ['test1', 'test2', 'test3']
    assert [node.name for node in G.dfs()] == expect
    expect.reverse()
    assert [node.name for node in G.dfs(reverse=True)] == expect
示例#2
0
def test_create4():
    G = Graph()
    G.add_node(Node("test1"))
    G.add_node(Node('test2'))
    G.add_edge(Edge('test1', 'test2'))
    G.add_edge(Edge('test2', Node('test3')))
    assert not G.verify_edges()
    G.replace_node('test2', Node('test4'))
    expect = ['test1', 'test4', 'test3']
    assert [node.name for node in G.dfs()] == expect
    expect.reverse()
    assert [node.name for node in G.dfs(reverse=True)] == expect
    assert not G.verify_edges()
示例#3
0
def test_create1():
    G = Graph()
    G.add_node(Node("test1"))
    G.add_node(Node('test2'))
    G.add_edge(Edge('test1', 'test2'))
    G.add_edge(Edge('test2', Node('test3')))
    expect = ['test1', 'test2', 'test3']
    assert [node.name for node in G.dfs()] == expect
    expect.reverse()
    assert [node.name for node in G.dfs(reverse=True)] == expect
    assert G.num_in_edges('test1') == 0
    assert G.num_out_edges('test1') == 1
    assert not G.verify_edges()
示例#4
0
def test_create2():
    G = Graph()
    G.add_node(Node("test1"))
    G.add_node(Node('test2'))
    G.add_edge(Edge('test2', Node('test3')))
    assert [node.name for node in G.dfs()] == ['test1', 'test2', 'test3']
    assert not G.verify_edges()
示例#5
0
def test_match_and_remove():
    G = Graph()
    G.add_node(Node("test0"))
    G.add_node(Node("test1"))
    G.add_node(Node('test2'))
    G.add_edge(Edge('test0', 'test1'))
    G.add_edge(Edge('test1', 'test2'))
    G.add_edge(Edge('test1', Node('test3')))
    G.add_node(Node('test4'))
    G.add_edge(Edge('test2', 'test4'))
    G.add_edge(Edge('test3', 'test4'))
    G.add_edge(Edge('test4', Node('test5')))

    fragment = Graph()
    fragment.add_node(MatchNameNode("test1"))
    fragment.add_node(MatchNameNode('test2'))
    fragment.add_edge(Edge('test1', 'test2'))
    fragment.add_edge(Edge('test1', MatchNameNode('test3')))

    res = G.match_fragment(fragment)
    assert len(res) == 1
    assert res[0].num_nodes() == 3
    assert res[0].num_edges() == 2
    G.remove_fragment(res[0])
    assert [node.name for node in G.dfs()] == ['test0', 'test4', 'test5']
    assert not G.verify_edges()
示例#6
0
def test_create5():
    G = Graph()
    G.add_node(Node("test1"))
    G.add_node(Node('test2'))
    G.add_edge(Edge('test1', 'test2'))
    G.add_edge(Edge('test1', Node('test3')))
    G.add_node(Node('test4'))
    G.add_edge(Edge('test2', 'test4'))
    G.add_edge(Edge('test3', 'test4'))
    assert G.num_in_edges('test4') == 2
    assert G.num_out_edges('test1') == 2
    assert [node.name
            for node in G.dfs()] == ['test1', 'test2', 'test3', 'test4']
    assert not G.verify_edges()
示例#7
0
def test_insert():
    G = Graph()
    G.add_node(Node("test1"))
    G.add_node(Node('test2'))
    G.add_edge(Edge('test1', 'test2'))
    G.add_edge(Edge('test1', Node('test3')))
    G.add_node(Node('test4'))
    G.add_edge(Edge('test2', 'test4'))
    G.add_edge(Edge('test3', 'test4', to_idx=2))

    G.insert_node(Node('test5'), 'test2', 'test4')

    nodes = [node.name for node in G.dfs()]
    assert nodes == ['test1', 'test2', 'test5', 'test3', 'test4']
    suc = G.successor_names('test5')
    pred = G.predecessor_names('test5')
    assert len(suc) == 1 and 'test4' in suc
    assert len(pred) == 1 and 'test2' in pred
    assert not G.verify_edges()
示例#8
0
def test_remove_edge():
    G = Graph()
    G.add_node(Node("test1"))
    G.add_node(Node('test2'))
    G.add_edge(Edge('test1', 'test2'))
    G.add_edge(Edge('test2', Node('test3')))
    assert [node.name for node in G.dfs()] == ['test1', 'test2', 'test3']
    assert G.num_edges() == 2
    edge12 = G.edge('test1', 'test2')
    assert edge12.from_node.name == 'test1' and edge12.from_idx == 0
    assert edge12.to_node.name == 'test2' and edge12.to_idx == 0
    assert not G.verify_edges()
    G.remove_edge(edge12)
    assert G.num_edges() == 1
    assert G.num_in_edges('test1') == 0
    assert G.num_out_edges('test1') == 0
    assert G.num_in_edges('test2') == 0
    assert G.num_out_edges('test2') == 1
    assert G.num_in_edges('test3') == 1
    assert G.num_out_edges('test3') == 0
    assert not G.verify_edges()