Beispiel #1
0
def test_remove_node():
    node1 = Node(1)
    node2 = Node(2)
    test_net = Network({1: node1, 2: node2})

    # remove an existing node
    assert len(test_net.nodes()) is 2
    test_net.remove_node(1)
    assert len(test_net.nodes()) is 1
    assert node2.node_id in test_net.network_dict

    # remove a node that doesn't exist
    test_net.remove_node(3)
    assert len(test_net.nodes()) is 1
    assert node2.node_id in test_net.network_dict
def test_shortest_path():
    test_node1 = Node(node_id=1, adjacency_dict={2: {'weight': 10, 'status': True}})
    test_node2 = Node(node_id=2, adjacency_dict={3: {'weight': 5, 'status': True}})
    test_node3 = Node(node_id=3, adjacency_dict={4: {'weight': 3, 'status': True}})
    test_node4 = Node(node_id=4, adjacency_dict={1: {'weight': 6, 'status': True}})
    test_node5 = Node(node_id=5, adjacency_dict={1: {'weight': 1, 'status': True},
                                                 3: {'weight': 2, 'status': True}})
    test_net = Network({test_node1.node_id: test_node1,
                        test_node2.node_id: test_node2,
                        test_node3.node_id: test_node3,
                        test_node4.node_id: test_node4,
                        test_node5.node_id: test_node5})

    dijkstra = Dijkstra(graph=test_net, source=test_node1.node_id)
    path, weight = dijkstra.shortest_path(destination=test_node3.node_id)
    assert path == [1, 5, 3]
    assert weight is 3

    test_net.remove_node(test_node5.node_id)
    dijkstra = Dijkstra(graph=test_net, source=test_node1.node_id)
    path, weight = dijkstra.shortest_path(destination=test_node3.node_id)
    assert path == [1, 4, 3]
    assert weight is 9

    test_net.remove_node(test_node4.node_id)
    dijkstra = Dijkstra(graph=test_net, source=test_node1.node_id)
    path, weight = dijkstra.shortest_path(destination=test_node3.node_id)
    assert path == [1, 2, 3]
    assert weight is 15

    test_net.remove_node(test_node2.node_id)
    dijkstra = Dijkstra(graph=test_net, source=test_node1.node_id)
    path, weight = dijkstra.shortest_path(destination=test_node3.node_id)
    assert path is None
    assert weight == float('inf')
    node_8.node_id: node_8,
    node_9.node_id: node_9,
    node_10.node_id: node_10
})

# demonstrates __str__() function works
print(network_1)

# demonstrates remove_edge function works
print('\t---REMOVE EDGE---')
network_1.remove_edge(1, 2)
print(network_1)

# demonstrates remove_node function works
print('\t---REMOVE NODE---')
network_1.remove_node(3)
print(network_1)

# demonstrates add edge function works
print('\t---ADD EDGE---')
network_1.add_edge(1, 2, 15)
print(network_1)

# demonstrates the add node function works
print('\t---ADD NODE---')
network_1.add_node(
    Node(
        11, 'K', {
            1: {
                'weight': 3,
                'status': True