def test_graph_from_edges_string(): edges_strings = [ "A - B - C ; D - C", "A - B ; B - C ; D - C", "A -> B -> C ; D -> C", "A-B;B-C;D-C", "A->B;B->C;D-C;", ] for edges_string in edges_strings: G = graph_from_edges_string(edges_string) assert set(G.nodes) == {"A", "B", "C", "D"} assert set(G.edges) == {("A", "B"), ("B", "C"), ("D", "C")} edges2 = edges_from_graph(G) G2 = graph_from_edges(*edges2) assert set(G2.nodes) == set(G.nodes) assert set(G2.edges) == set(G.edges) edges_strings = ["1 - 2 - 3 ; 4 - 3", "1 - 2 ; 2 - 3 ; 4 - 3"] for edges_string in edges_strings: G = graph_from_edges_string(edges_string) assert set(G.nodes) == {1, 2, 3, 4} assert set(G.edges) == {(1, 2), (2, 3), (4, 3)} edges2 = edges_from_graph(G) G2 = graph_from_edges(*edges2) assert set(G2.nodes) == set(G.nodes) assert set(G2.edges) == set(G.edges)
def test_remove_node_keep_connections(): G = graph_from_edges_string("A - B - C; D - C") G = remove_node_keep_connections(G, "B") assert set(G.edges) == {("A", "C"), ("D", "C")} assert set(G.nodes) == {"A", "C", "D"} G = graph_from_edges_string("A - B - C; D - C") G = remove_node_keep_connections(G, "A") assert set(G.edges) == {("B", "C"), ("D", "C")} assert set(G.nodes) == {"B", "C", "D"} G = graph_from_edges_string("A - B - C - E; D - C - E") G = remove_node_keep_connections(G, "C") assert set(G.edges) == {("A", "B"), ("B", "E"), ("D", "E")} assert set(G.nodes) == {"A", "B", "D", "E"} G = graph_from_edges_string("A - B - C - D; C - E") G = remove_node_keep_connections(G, "C") assert set(G.edges) == {("A", "B"), ("B", "D"), ("B", "E")} assert set(G.nodes) == {"A", "B", "D", "E"} G = graph_from_edges_string("A - C - D; B - C - E") G = remove_node_keep_connections(G, "C") assert set(G.edges) == {("A", "D"), ("A", "E"), ("B", "D"), ("B", "E")} assert set(G.nodes) == {"A", "B", "D", "E"}
def test_insert_node_above(): G = graph_from_edges_string("1 - 2 - 3") G2 = insert_node_above(G, 1, 0) assert G is G2 assert set(G2.nodes) == {0, 1, 2, 3} assert set(G2.edges) == {(0, 1), (1, 2), (2, 3)} G = insert_node_above(G, 2, 22) assert set(G.nodes) == {0, 1, 2, 3, 22} assert set(G.edges) == {(0, 1), (1, 22), (22, 2), (2, 3)} G = graph_from_edges_string("1 - 2 - 3; 4 - 3") G = insert_node_above(G, 3, 33) assert set(G.edges) == {(1, 2), (2, 33), (4, 33), (33, 3)} assert set(G.nodes) == {1, 2, 3, 4, 33}
def test_get_connected_graph(): G = graph_from_edges_string("A - B ; B - C") Gs = get_connected_graphs(G) assert len(Gs) == 1 assert Gs[0] == G def gequal(g1, g2): if set(g1.nodes) != set(g2.nodes): return False if set(g1.edges) != set(g2.edges): return False return True G = graph_from_edges_string("A - B; C - D") Gs = get_connected_graphs(G) assert len(Gs) == 2 g1, g2 = graph_from_edges_string("A - B"), graph_from_edges_string("C - D") G1, G2 = Gs assert (gequal(g1, G1) and gequal(g2, G2)) or (gequal(g1, G2) and gequal(g2, G1))
def test_has_cycle(): G = graph_from_edges_string("A - B - C; D - C") assert not has_cycle(G) G = graph_from_edges_string("A - B - C - A") assert has_cycle(G)