def test_closest_nodes_only_routing(empty_routing_table):
    target = NodeIDFactory()
    nodes = [NodeIDFactory() for _ in range(10)]
    for node in nodes:
        empty_routing_table.update(node)

    closest_nodes = list(iter_closest_nodes(target, empty_routing_table, []))
    assert closest_nodes == sorted(nodes, key=lambda node: compute_distance(target, node))
def test_lookup_generator_mixed(empty_routing_table):
    target = NodeIDFactory()
    nodes = sorted(
        [NodeIDFactory() for _ in range(10)],
        key=lambda node: compute_distance(node, target)
    )
    nodes_in_routing_table = nodes[:3] + nodes[6:8]
    nodes_in_additional = nodes[3:6] + nodes[8:]
    for node in nodes_in_routing_table:
        empty_routing_table.update(node)
    closest_nodes = list(iter_closest_nodes(target, empty_routing_table, nodes_in_additional))
    assert closest_nodes == nodes
Пример #3
0
def test_distance(left_node_id, right_node_id, distance):
    assert compute_distance(left_node_id, right_node_id) == distance
    assert compute_distance(right_node_id, left_node_id) == distance
def test_closest_nodes_only_additional(empty_routing_table):
    target = NodeIDFactory()
    nodes = [NodeIDFactory() for _ in range(10)]
    closest_nodes = list(iter_closest_nodes(target, empty_routing_table, nodes))
    assert closest_nodes == sorted(nodes, key=lambda node: compute_distance(target, node))
Пример #5
0
 def dist(node: NodeID) -> float:
     if node is not None:
         return compute_distance(target, node)
     else:
         return math.inf