Esempio n. 1
0
def test_add_edge_between_nonexistent_vertices():
    """Test whether method DirectedGraph.add_edge() works correctly."""
    g = DirectedGraph()
    v0 = Vertex(0, {})
    v1 = Vertex(1, {})

    # neither vertex are put into the directed graph, so it is impossible
    # to add an edge to connect them. ATM the exception thrown by the
    # add_edge method is not very specific, it might need to be improved.
    with pytest.raises(Exception):
        g.add_edge(from_id=v0.id, to_id=v1.id)
Esempio n. 2
0
def test_get_unvisited_neighbor__none_available():
    start_v = Vertex('1')
    end_v = Vertex('2')
    start_v.connect(end_vertex=end_v)

    end_v.visited = True
    assert start_v.get_unvisited_neighbor() is None
Esempio n. 3
0
def test_has_neighbor():
    start_v = Vertex('1')
    assert start_v.has_neighbor() is False

    # Add a neighbor
    start_v.connect(end_vertex=Vertex('2'))
    assert start_v.has_neighbor()
Esempio n. 4
0
def test_has_and_set_predecessor():
    end_v = Vertex('2')
    assert end_v.has_predecessor() is False

    start_v = Vertex('1')  # The predecessor
    end_v.set_predecessor(start_v)
    assert end_v.has_predecessor()
Esempio n. 5
0
def test_add_neigbor():
    """Check the methods add_neighbor and get_neighbours."""
    v = Vertex(1, {})
    assert not v.get_neighbours()

    v2 = Vertex(2, {})
    v.add_neighbor(v2, 100)
    assert v2 in v.get_neighbours()
Esempio n. 6
0
def test_get_weight():
    """Check the method get_weight."""
    v = Vertex(1, {})

    v2 = Vertex(2, {})
    v.add_neighbor(v2, 100)
    assert v.get_weight(v2) == 100

    # v3 is not in any relatioship with v
    with pytest.raises(Exception):
        v3 = Vertex(3, {})
        assert v.get_weight(v3) == 100
Esempio n. 7
0
def test_find_common_reachable_vertex_empty_graph():
    """Test if method DirectedGraph.find_common_reachable_vertices() works correctly."""
    list_vertices = DirectedGraph.find_common_reachable_vertices(input_vertices=None)
    assert list_vertices is None

    list_vertices = DirectedGraph.find_common_reachable_vertices(input_vertices=[])
    assert list_vertices is None

    v0 = Vertex(0, {})
    list_vertices = DirectedGraph.find_common_reachable_vertices(input_vertices=[v0])
    assert list_vertices is not None
    assert list_vertices[0] == v0
Esempio n. 8
0
def test_get_unvisited_neighbor__valid_result():
    start_v = Vertex('1')
    end_v = Vertex('2')
    start_v.connect(end_vertex=end_v)

    result = start_v.get_unvisited_neighbor()
    assert result == end_v
Esempio n. 9
0
def test_string_representation_4():
    """Check special method __str__ for vertices with properies."""
    v = Vertex(1, {})
    v.set_prop_value("name", "value")
    s = str(v)
    assert s == """
            Vertex: 1
            Neighbours: []
            Properties: {'name': 'value'}
            """

    v = Vertex(2, {})
    v.set_prop_value("other", "XXX")
    s = str(v)
    assert s == """
Esempio n. 10
0
def test_properties():
    """Check methods get_prop_value and set_prop_value."""
    v = Vertex(1, {})

    with pytest.raises(Exception):
        assert v.get_prop_value("something") is None

    v.set_prop_value("name", "value")
    assert v.get_prop_value("name") == "value"

    with pytest.raises(Exception):
        # this statement still should raise an exception
        assert v.get_prop_value("something") is None
Esempio n. 11
0
def test_string_representation_5():
    """Check special method __str__ for vertices with neighbours."""
    v = Vertex(100, {})
    v2 = Vertex(2, {})
    v.add_neighbor(v2, 200)
    s = str(v)
    assert s == """
            Vertex: 100
            Neighbours: [2]
            Properties: {}
            """

    v3 = Vertex(3, {})
    v.add_neighbor(v3, 300)
    s = str(v)
    assert s == """
            Vertex: 100
            Neighbours: [2, 3]
            Properties: {}
            """ or s == """
Esempio n. 12
0
def test_connect__edge_vertext():
    start_v = Vertex('1')
    end_v = Vertex('2')
    start_v.connect(end_vertex=end_v, edge_weight=5)
    edge = start_v.edgelist[0]
    assert edge.vertex == end_v
Esempio n. 13
0
def connected_vertex():
    start_v = Vertex('1')
    end_v = Vertex('2')
    start_v.connect(end_vertex=end_v, edge_weight=5)  # Add edge
    return start_v
Esempio n. 14
0
def test_connect__creates_Edge_in_edgelist():
    start_v = Vertex('1')
    end_v = Vertex('2')
    start_v.connect(end_vertex=end_v, edge_weight=5)
    assert len(start_v.edgelist) == 1
Esempio n. 15
0
def test_connect__default_weight_is_0():
    start_v = Vertex('1')
    end_v = Vertex('2')
    start_v.connect(end_vertex=end_v)
    assert start_v.edgelist[0].weight == 0
Esempio n. 16
0
def test_connect__success_returns_True():
    start_v = Vertex('1')
    end_v = Vertex('2')
    assert start_v.connect(end_vertex=end_v, edge_weight=5)
Esempio n. 17
0
def test_init__predecessor_is_None():
    v = Vertex('vertex')
    assert v.predecessor is None
Esempio n. 18
0
def test_init__cost_is_0():
    v = Vertex('vertex')
    assert v.cost == 0
Esempio n. 19
0
def test_init__prev_vertex_is_None():
    v = Vertex('vertex')
    assert v.prev_vertex is None
Esempio n. 20
0
def test_connect__dupe_edge_returns_False():
    start_v = Vertex('1')
    end_v = Vertex('2')
    start_v.connect(end_vertex=end_v, edge_weight=5)  # Add edge
    result = start_v.connect(end_vertex=end_v, edge_weight=5)  # Add again
    assert result is False
Esempio n. 21
0
def test_connect__same_vertices_returns_False():
    start_v = Vertex('1')
    assert start_v.connect(end_vertex=start_v, edge_weight=5) is False
Esempio n. 22
0
def test_get_cost():
    end_v = Vertex('2')
    assert end_v.cost == 0
Esempio n. 23
0
def test_string_representation_2():
    """Check special method __str__ for simple vertex."""
    v = Vertex(100, {})
    s = str(v)
    assert s == """
Esempio n. 24
0
def test_init__label():
    v = Vertex('vertex')
    assert v.label == 'vertex'
Esempio n. 25
0
def test_has_predecessor__DNE_returns_False():
    end_v = Vertex('2')
    assert end_v.has_predecessor() is False
Esempio n. 26
0
def test_get_predecessor():
    end_v = Vertex('2')
    start_v = Vertex('1')  # The predecessor
    end_v.set_predecessor(start_v)
    assert end_v.get_predecessor() == start_v
Esempio n. 27
0
def test_connect__same_vertices__no_edge_added():
    start_v = Vertex('1')
    start_v.connect(end_vertex=start_v, edge_weight=5)
    assert len(start_v.edgelist) == 0
Esempio n. 28
0
def test_init__visited_is_False():
    v = Vertex('vertex')
    assert v.visited is False
Esempio n. 29
0
def test_set_cost():
    end_v = Vertex('2')
    end_v.set_cost(20)
    assert end_v.cost == 20
Esempio n. 30
0
def test_init__edgelist_is_empty():
    v = Vertex('vertex')
    assert v.edgelist == []