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
예제 #29
0
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