def test_add_edge_neighbors(): ''' 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 = DirectedGraph() # Edges can connect existing nodes assert g.add_node('a') assert g.add_node('b') assert g.add_edge('a', 'b') # Default weight is 1 assert ('b', 1) in g.neighbors('a') # Adding an edge that already exists should be rejected, and return False assert g.add_edge('a', 'b', 2) == False assert ('b', 1) in g.neighbors('a') # Adding an edge with a non-existing node works just fine assert g.add_edge('b', 'c', 2) assert ('b', 1) in g.neighbors('a') assert ('c', 2) in g.neighbors('b')
def test_simple_integration(): ''' test a simple use case, retesting assumptions at each step. ''' g = DirectedGraph() 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) == 1 assert ('a', 'b', 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'))) == 0 assert len(list(g.neighbors('c'))) == 0 g.add_edge('a', 'c') edges = list(g.edges()) assert len(edges) == 2 assert ('a', 'b', 1) in edges assert ('a', 'c', 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'))) == 0 assert len(list(g.neighbors('c'))) == 0 edges = list(g.edges()) assert ('a', 'b', 1) in edges assert ('a', 'c', 1) in edges