Example #1
0
def test_valid_with_weights():
    name1 = Vertex._make_test_vertex()
    name2 = Vertex._make_test_vertex()
    s = StringIO("2\n{0}\n{1}\n{0}|{1}|5\n{1}|{0}|2".format(name1, name2))
    g = graph_from_file(s)
    assert g.size() == 2
    assert g.is_connected()
Example #2
0
def test_has_cycle_two_vertices_linked():
    a = Vertex(Vertex._make_test_vertex())
    b = Vertex(Vertex._make_test_vertex())
    a.add_edge(Edge(b))
    b.add_edge(Edge(a))
    g = Graph([a, b])
    assert g.has_cycle()
Example #3
0
def test_top_sort_cycle():
    a = Vertex(Vertex._make_test_vertex())
    b = Vertex(Vertex._make_test_vertex())
    a.add_edge(Edge(b))
    b.add_edge(Edge(a))
    g = Graph([a, b])
    assert_raises(ValueError, g.top_sort)
Example #4
0
def test_extra_pipes():
    name1 = Vertex._make_test_vertex()
    name2 = Vertex._make_test_vertex()
    s = StringIO("2\n{0}\n{1}\n{0}|{1}|5|2\n{1}|{0}|2|5".format(name1, name2))
    g = graph_from_file(s)
    assert g.size() == 2
    assert g.is_connected()
Example #5
0
def test_is_connected_two_doubly_connected():
    a = Vertex(Vertex._make_test_vertex())
    b = Vertex(Vertex._make_test_vertex())
    a.add_edge(Edge(b))
    b.add_edge(Edge(a))
    g = Graph([a, b])
    assert g.is_connected()
Example #6
0
def test_no_edges():
    name1 = Vertex._make_test_vertex()
    name2 = Vertex._make_test_vertex()
    s = StringIO("2\n{}\n{}".format(name1, name2))
    g = graph_from_file(s)
    assert g.size() == 2
    assert not g.is_connected()
Example #7
0
def test_top_sort_chain():
    a = Vertex(Vertex._make_test_vertex())
    b = Vertex(Vertex._make_test_vertex())
    c = Vertex(Vertex._make_test_vertex())
    a.add_edge(Edge(b))
    b.add_edge(Edge(c))
    g = Graph([a, b, c])
    assert g.top_sort() == [a, b, c]
Example #8
0
def test_find_path_ignores_weights():
    a = Vertex(Vertex._make_test_vertex())
    b = Vertex(Vertex._make_test_vertex())
    a.add_edge(Edge(b, 1))
    c = Vertex(Vertex._make_test_vertex())
    a.add_edge(Edge(c, 100))
    b.add_edge(Edge(c, 1))
    assert find_path(a, c) == [a, c]
Example #9
0
def test_vertex_valid_edges():
    """Test Vertex creation with a list of already-existing Edges."""
    b = Vertex(Vertex._make_test_vertex())
    c = Vertex(Vertex._make_test_vertex())
    d = Edge(b)
    e = Edge(c)
    a = Vertex(Vertex._make_test_vertex(), [d, e])
    assert a.edges == [d, e]
Example #10
0
def test_has_cycle_indirect():
    a = Vertex(Vertex._make_test_vertex())
    b = Vertex(Vertex._make_test_vertex())
    c = Vertex(Vertex._make_test_vertex())
    a.add_edge(Edge(b))
    b.add_edge(Edge(c))
    c.add_edge(Edge(a))
    g = Graph([a, b, c])
    assert g.has_cycle()
Example #11
0
def test_is_connected_three_vert_two_connections():
    a = Vertex(Vertex._make_test_vertex())
    b = Vertex(Vertex._make_test_vertex())
    c = Vertex(Vertex._make_test_vertex())
    a.add_edge(Edge(b))
    b.add_edge(Edge(c))
    c.add_edge(Edge(a))
    g = Graph([a, b, c])
    assert g.is_connected()
Example #12
0
def test_has_cycle_implicit():
    """A Vertex is accessible to the Graph but not explicitly part of it."""
    a = Vertex(Vertex._make_test_vertex())
    b = Vertex(Vertex._make_test_vertex())
    c = Vertex(Vertex._make_test_vertex())
    a.add_edge(Edge(b))
    b.add_edge(Edge(c))
    c.add_edge(Edge(a))
    g = Graph([a, b])
    assert g.has_cycle()
Example #13
0
def test_edge_weight():
    a = Vertex(Vertex._make_test_vertex())
    b = Edge(a, 10)
    assert b.weight == 10
Example #14
0
def test_vertex_repr():
    s = Vertex._make_test_vertex()
    a = Vertex(s)
    assert a.__repr__() == "Vertex: {}".format(s)
Example #15
0
def test_make_test_vertex():
    s = Vertex._make_test_vertex()
    a = Vertex(s)
    assert a.name == s
Example #16
0
def test_graph_duplicate_vertex():
    a = Vertex(Vertex._make_test_vertex())
    g = Graph([a, a])
    assert g.size() == 1
Example #17
0
def test_graph_add_new_vertex_new():
    a = Vertex(Vertex._make_test_vertex())
    g = Graph([a])
    g.add_vertex(Vertex(Vertex._make_test_vertex()))
    assert g.size() == 2
Example #18
0
def test_graph_normal_set():
    a = Vertex(Vertex._make_test_vertex())
    b = Vertex(Vertex._make_test_vertex())
    g = Graph([a, b])
    assert g.size() == 2
Example #19
0
def test_top_sort_two_single_vertices():
    a = Vertex(Vertex._make_test_vertex())
    b = Vertex(Vertex._make_test_vertex())
    g = Graph([a, b])
    assert g.top_sort() in [[a, b], [b, a]]
Example #20
0
def test_top_sort_single():
    a = Vertex(Vertex._make_test_vertex())
    g = Graph([a])
    assert g.top_sort() == [a]
Example #21
0
def test_is_connected_single():
    g = Graph([Vertex(Vertex._make_test_vertex())])
    assert g.is_connected()
Example #22
0
def test_is_connected_two_single():
    a = Vertex(Vertex._make_test_vertex())
    b = Vertex(Vertex._make_test_vertex())
    g = Graph([a, b])
    assert not g.is_connected()
Example #23
0
def test_has_cycle_single_no_loop():
    a = Vertex(Vertex._make_test_vertex())
    g = Graph([a])
    assert not g.has_cycle()
Example #24
0
def test_has_cycle_self_loop():
    a = Vertex(Vertex._make_test_vertex())
    a.add_edge(Edge(a))
    g = Graph([a])
    assert g.has_cycle()
Example #25
0
def test_edge_invalid_weight():
    a = Vertex(Vertex._make_test_vertex())
    assert_raises(ValueError, Edge, a, "test")
Example #26
0
def test_top_sort_two_linked_vertices():
    a = Vertex(Vertex._make_test_vertex())
    b = Vertex(Vertex._make_test_vertex())
    a.add_edge(Edge(b))
    g = Graph([a, b])
    assert g.top_sort() == [a, b]
Example #27
0
def test_add_edge_self_loop():
    a = Vertex(Vertex._make_test_vertex())
    a.add_edge(Edge(a))
    assert len(a.edges) == 1
    assert a in [e.vertex for e in a.edges]
Example #28
0
def test_graph_add_invalid_vertex():
    g = Graph([Vertex(Vertex._make_test_vertex())])
    assert_raises(TypeError, g.add_vertex, "String name")
Example #29
0
def test_size():
    g = Graph([Vertex(Vertex._make_test_vertex())])
    assert g.size() == len(g.vertices)
Example #30
0
def test_is_connected_two_vert_one_edge():
    a = Vertex(Vertex._make_test_vertex())
    b = Vertex(Vertex._make_test_vertex())
    a.add_edge(Edge(b))
    g = Graph([a, b])
    assert not g.is_connected()