def test_get_neighbors(): graph = Graph() eggs = graph.add_node('eggs') chicken = graph.add_node('chicken') graph.add_edge(eggs, chicken, 10) neighbors = graph.get_neighbors(eggs) assert chicken in neighbors
def test_size_two(): g = Graph() g.add_node("spam") g.add_node("eggs") actual = g.size() expected = 2 assert actual == expected
def test_dfs(): graph = Graph() a = graph.add_node("a") b = graph.add_node("b") c = graph.add_node("c") d = graph.add_node("d") e = graph.add_node("e") f = graph.add_node("f") g = graph.add_node("g") h = graph.add_node("h") graph.add_edge(a, b) graph.add_edge(b, c) graph.add_edge(c, g) graph.add_edge(a, d) graph.add_edge(d, e) graph.add_edge(d, h) graph.add_edge(d, f) graph.add_edge(h, f) actual = graph.depth_first(a) expected = ["a", "b", "c", "g", "d", "e", "h", "f"] assert actual == expected
def test_size_graph(): graph = Graph() graph.add_node("horse") graph.add_node("lamb") actual = graph.size() expected = 2 assert actual == expected
def test_add_node2(): graph = Graph() graph.add_node("spam") actual = graph.get_nodes() expected = 1 assert len(actual) == expected assert isinstance(actual[0], Vertex) assert actual[0].value == "spam"
def test_not_connected(): g = Graph() pandora = g.add_node("Pandora") arendelle = g.add_node("Arendelle") assert g.connected(pandora, arendelle) is False assert g.connected(arendelle, pandora) is False
def test_one_way_connected(): g = Graph() pandora = g.add_node("Pandora") arendelle = g.add_node("Arendelle") g.add_edge(pandora, arendelle) assert g.connected(pandora, arendelle) is True assert g.connected(arendelle, pandora) is False
def test_size_one(): graph = Graph() graph.add_node("spam") expected = 1 actual = graph.size() assert actual == expected
def test_add_edge_with_weight(): graph = Graph() start = graph.add_node("start") end = graph.add_node("end") weight = 10 graph.add_edge(start, end, weight)
def test_depth_traversal_two(): graph = Graph() city = graph.add_node('Boston') town = graph.add_node('Seattle') place = graph.add_node('LA') graph.add_edge(city, town, 82) graph.add_edge(town, place, 90) graph.add_edge(city, place, 42) actual = depth_traversal(city, graph) expected = [city, place, town] assert actual == expected
def test_size_two(): graph = Graph() graph.add_node("spam") graph.add_node("bacon") expected = 2 actual = graph.size() assert actual == expected
def test_get_nodes(): graph = Graph() graph.add_node("banana") graph.add_node("apple") expected = 2 actual = len(graph.get_nodes()) assert actual == expected
def test_get_neighbors_returns_edges_with_custom_weight(): graph = Graph() banana = graph.add_node("banana") apple = graph.add_node("apple") graph.add_edge(apple, banana, 44) neighbors = graph.get_neighbors(apple) neighbor_edge = neighbors[0] assert neighbor_edge.weight == 44
def test_get_nodes(): g = Graph() g.add_node("spam") g.add_node("eggs") actual = g.get_nodes() expected = 2 assert len(actual) == expected assert isinstance(actual[0], Vertex) assert isinstance(actual[1], Vertex) assert actual[0].value == "spam" assert actual[1].value == "eggs"
def test_add_node(): graph = Graph() expected_value = 'noodle' actual = graph.add_node('noodle') assert actual.value == expected_value
def test_add_node_returns_vertex(): graph = Graph() vertex = graph.add_node("spam") assert isinstance(vertex, Vertex)
def test_add_edge_no_weight(): g = Graph() sv = g.add_node("spam") ev = g.add_node("eggs") ret_val = g.add_edge(sv, ev) assert ret_val is None
def test_get_neighbors_returns_edges_with_default_weight(): graph = Graph() banana = graph.add_node("banana") apple = graph.add_node("apple") graph.add_edge(apple, banana) neighbors = graph.get_neighbors(apple) actual = neighbors[0].weight expected = 0 assert actual == expected
def test_add_node_return_has_correct_value(): graph = Graph() expected = "spam" # a vertex's value that comes back actual = graph.add_node("spam").value assert actual == expected
def test_get_neighbors_none(): graph = Graph() banana = graph.add_node("banana") neighbors = graph.get_neighbors(banana) assert len(neighbors) == 0
def test_add_edge_sunny(): graph = Graph() start = graph.add_node("start") end = graph.add_node("end") graph.add_edge(start, end) # no fail means a pass # can be more explicit if you like try: graph.add_edge(start, end) except KeyError: pytest.fail("KeyError should not be thrown")
def test_add_edge_interloper_end(): graph = Graph() end = Vertex("end") start = graph.add_node("start") with pytest.raises(KeyError): graph.add_edge(start, end)
def test_get_neighbors_returns_edges(): graph = Graph() banana = graph.add_node("banana") apple = graph.add_node("apple") graph.add_edge(apple, banana) neighbors = graph.get_neighbors(apple) assert len(neighbors) == 1 neighbor = neighbors[0] assert isinstance(neighbor, Edge) assert neighbor.vertex.value == 'banana'
def test_depth_traversal_one(): graph = Graph() boston = graph.add_node('Boston') seattle = graph.add_node('Seattle') la = graph.add_node('LA') sf = graph.add_node('SF') chi = graph.add_node('CHI') ny = graph.add_node('NY') graph.add_edge(boston, ny, 82) graph.add_edge(boston, chi, 90) graph.add_edge(ny, chi, 42) graph.add_edge(ny, seattle, 200) graph.add_edge(ny, la, 225) graph.add_edge(ny, sf, 230) graph.add_edge(chi, seattle, 175) graph.add_edge(seattle, sf, 85) graph.add_edge(sf, la, 85) actual = depth_traversal(boston, graph) expected = [boston, chi, seattle, sf, la, ny] assert actual == expected
def test_get_n_solo(): g = Graph() sv = g.add_node("spam") g.add_edge(sv, sv) neighbors = g.get_neighbors(sv) assert len(neighbors) == 1 se = neighbors[0] assert se.vertex.value == "spam" assert se.weight == 0
def test_get_neighbors(): g = Graph() sv = g.add_node("spam") ev = g.add_node("eggs") g.add_edge(sv, ev, 5) neighbors = g.get_neighbors(sv) assert len(neighbors) == 1 se = neighbors[0] assert se.vertex.value == "eggs" assert se.weight == 5
def test_business_one(): graph = Graph('bidirectional') boston = graph.add_node('Boston') seattle = graph.add_node('Seattl') la = graph.add_node('LA') sf = graph.add_node('SF') chi = graph.add_node('CHI') ny = graph.add_node('NY') graph.add_edge(boston, ny, 82) graph.add_edge(boston, chi, 90) graph.add_edge(ny, chi, 42) graph.add_edge(ny, seattle, 200) graph.add_edge(ny, la, 225) graph.add_edge(ny, sf, 230) graph.add_edge(chi, seattle, 175) graph.add_edge(seattle, sf, 85) graph.add_edge(sf, la, 85) cities = [boston, ny,la] actual = business_trip(graph, cities) expected = (True, 307) assert actual == expected
def flights_fixture(): flights = Graph() pandora = flights.add_node("Pandora") arendelle = flights.add_node("Arendelle") metroville = flights.add_node("Metroville") narnia = flights.add_node("Narnia") naboo = flights.add_node("Naboo") monstropolis = flights.add_node("Monstropolis") flights.add_edge(pandora, arendelle, 150) flights.add_edge(pandora, metroville, 82) flights.add_edge(arendelle, metroville, 99) flights.add_edge(arendelle, monstropolis, 42) flights.add_edge(metroville, narnia, 37) flights.add_edge(metroville, naboo, 26) flights.add_edge(metroville, monstropolis, 105) flights.add_edge(monstropolis, naboo, 73) flights.add_edge(narnia, naboo, 250) flights.add_edge(arendelle, pandora, 150) flights.add_edge(metroville, pandora, 82) flights.add_edge(metroville, arendelle, 99) flights.add_edge(monstropolis, arendelle, 42) flights.add_edge(narnia, metroville, 37) flights.add_edge(naboo, metroville, 26) flights.add_edge(monstropolis, metroville, 105) flights.add_edge(naboo, monstropolis, 73) flights.add_edge(naboo, narnia, 250) return flights
def test_get_neighbors_49(): g = Graph() pv = g.add_node("Pandora") av = g.add_node("Arendelle") mv = g.add_node("Metroville") mov = g.add_node("Monstropolis") nv = g.add_node("Naboo") narv = g.add_node("Narnia") g.add_edge(pv, av, 150) g.add_edge(pv, mv, 82) g.add_edge(av, pv, 150) g.add_edge(av, mov, 42) g.add_edge(av, mv, 99) g.add_edge(mv, av, 99) g.add_edge(mv, pv, 82) g.add_edge(mv, mov, 105) g.add_edge(mv, narv, 37) g.add_edge(mv, nv, 26) g.add_edge(mov, av, 42) g.add_edge(mov, mv, 105) g.add_edge(mov, nv, 73) g.add_edge(nv, mov, 73) g.add_edge(nv, narv, 250) g.add_edge(nv, mv, 26) g.add_edge(narv, mv, 37) g.add_edge(narv, nv, 250) actual = business_trip(g, ["Metroville", "Pandora", "Monstropolis", "Naboo"]) expected = False, "0$" assert actual == expected
def test_get_neighbors_45(): g = Graph() pv = g.add_node("Pandora") av = g.add_node("Arendelle") mv = g.add_node("Metroville") mov = g.add_node("Monstropolis") nv = g.add_node("Naboo") narv = g.add_node("Narnia") g.add_edge(pv, av, 150) g.add_edge(pv, mv, 82) g.add_edge(av, mov, 42) g.add_edge(av, mv, 99) g.add_edge(mv, mov, 105) g.add_edge(mv, narv, 37) g.add_edge(mv, nv, 26) g.add_edge(nv, mov, 73) g.add_edge(nv, narv, 250) neighbors = g.get_neighbors(pv) assert len(neighbors) == 2 se = neighbors[0] me = neighbors[1] assert se.vertex.value == "Arendelle" assert me.vertex.value == "Metroville" assert se.weight == 150 assert me.weight == 82