Exemple #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()
Exemple #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()
Exemple #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)
Exemple #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()
Exemple #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()
Exemple #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()
Exemple #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]
Exemple #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]
Exemple #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]
Exemple #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()
Exemple #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()
Exemple #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()
Exemple #13
0
def test_edge_weight():
    a = Vertex(Vertex._make_test_vertex())
    b = Edge(a, 10)
    assert b.weight == 10
Exemple #14
0
def test_vertex_repr():
    s = Vertex._make_test_vertex()
    a = Vertex(s)
    assert a.__repr__() == "Vertex: {}".format(s)
Exemple #15
0
def test_make_test_vertex():
    s = Vertex._make_test_vertex()
    a = Vertex(s)
    assert a.name == s
Exemple #16
0
def test_graph_duplicate_vertex():
    a = Vertex(Vertex._make_test_vertex())
    g = Graph([a, a])
    assert g.size() == 1
Exemple #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
Exemple #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
Exemple #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]]
Exemple #20
0
def test_top_sort_single():
    a = Vertex(Vertex._make_test_vertex())
    g = Graph([a])
    assert g.top_sort() == [a]
Exemple #21
0
def test_is_connected_single():
    g = Graph([Vertex(Vertex._make_test_vertex())])
    assert g.is_connected()
Exemple #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()
Exemple #23
0
def test_has_cycle_single_no_loop():
    a = Vertex(Vertex._make_test_vertex())
    g = Graph([a])
    assert not g.has_cycle()
Exemple #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()
Exemple #25
0
def test_edge_invalid_weight():
    a = Vertex(Vertex._make_test_vertex())
    assert_raises(ValueError, Edge, a, "test")
Exemple #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]
Exemple #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]
Exemple #28
0
def test_graph_add_invalid_vertex():
    g = Graph([Vertex(Vertex._make_test_vertex())])
    assert_raises(TypeError, g.add_vertex, "String name")
Exemple #29
0
def test_size():
    g = Graph([Vertex(Vertex._make_test_vertex())])
    assert g.size() == len(g.vertices)
Exemple #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()