def test_add_edge_edges(): ''' add_edge should connect existing nodes in the graph, causing neighbors to return the connected edges. add_edge should not overwrite existing edges and return False if the user tries. add_edge should create nodes if they do not already exist. ''' g = UndirectedGraph() # Edges can connect existing nodes assert g.add_node('a') assert g.add_node('b') assert g.add_edge('a', 'b') assert len(list(g.edges())) == 2 assert ('a', 'b', 1) in g.edges() assert ('b', 'a', 1) in g.edges() # Adding an edge that already exists should be rejected, and return False assert g.add_edge('a', 'b', 2) == False assert len(list(g.edges())) == 2 assert ('a', 'b', 1) in g.edges() assert ('b', 'a', 1) in g.edges() # Adding an edge with a non-existing node works just fine assert g.add_edge('b', 'c', 2) assert len(list(g.edges())) == 4 assert ('a', 'b', 1) in g.edges() assert ('b', 'a', 1) in g.edges() assert ('b', 'c', 2) in g.edges() assert ('c', 'b', 2) in g.edges()
def test_simple_integration(): ''' test a simple use case, retesting assumptions at each step. ''' g = UndirectedGraph() assert g.add_node('a') assert g.contains('a') assert len(list(g.nodes())) == 1 assert 'a' in g.nodes() assert len(list(g.neighbors('a'))) == 0 assert g.add_node('b') assert g.contains('b') assert len(list(g.nodes())) == 2 assert 'a' in g.nodes() assert 'b' in g.nodes() assert len(list(g.neighbors('a'))) == 0 assert len(list(g.neighbors('b'))) == 0 assert g.add_node('c') assert g.contains('c') assert len(list(g.nodes())) == 3 assert 'a' in g.nodes() assert 'b' in g.nodes() assert 'c' in g.nodes() assert len(list(g.neighbors('a'))) == 0 assert len(list(g.neighbors('b'))) == 0 assert len(list(g.neighbors('c'))) == 0 g.add_edge('a', 'b') edges = list(g.edges()) assert len(edges) == 2 assert ('a', 'b', 1) in edges assert ('b', 'a', 1) in edges assert g.contains('a') assert g.contains('b') assert g.contains('c') assert len(list(g.nodes())) == 3 assert 'a' in g.nodes() assert 'b' in g.nodes() assert 'c' in g.nodes() assert len(list(g.neighbors('a'))) == 1 assert ('b', 1) in g.neighbors('a') assert len(list(g.neighbors('b'))) == 1 assert ('a', 1) in g.neighbors('b') assert len(list(g.neighbors('c'))) == 0 g.add_edge('a', 'c') edges = list(g.edges()) assert len(edges) == 4 assert ('a', 'b', 1) in edges assert ('b', 'a', 1) in edges assert ('a', 'c', 1) in edges assert ('c', 'a', 1) in edges assert g.contains('a') assert g.contains('b') assert g.contains('c') assert len(list(g.nodes())) == 3 assert 'a' in g.nodes() assert 'b' in g.nodes() assert 'c' in g.nodes() assert len(list(g.neighbors('a'))) == 2 assert ('b', 1) in g.neighbors('a') assert ('c', 1) in g.neighbors('a') assert len(list(g.neighbors('b'))) == 1 assert ('a', 1) in g.neighbors('b') assert len(list(g.neighbors('c'))) == 1 assert ('a', 1) in g.neighbors('c') edges = list(g.edges()) assert ('a', 'b', 1) in edges assert ('b', 'a', 1) in edges assert ('a', 'c', 1) in edges assert ('c', 'a', 1) in edges