示例#1
0
def test_find_closest_randomized():
    RANGES = (-1000, 1000)
    DATA_SIZE = 6000
    data = [(uniform(*RANGES), uniform(*RANGES)) for _ in xrange(DATA_SIZE)]
    tree = KDTree(data)
    new_point = (uniform(*RANGES), uniform(*RANGES))
    KDTree.find_closest = counted(KDTree.find_closest)
    result = tree.find_closest(new_point)
    result_distance = KDTree._get_distance(result, new_point)
    distances = [KDTree._get_distance(point, new_point) for point in data]
    assert_equals(result_distance, min(distances))
    # Number of calls will be inconsistent, but should not check all points
    print "Number of calls: ", tree.find_closest.calls
    assert tree.find_closest.calls < len(data)
示例#2
0
def test_find_closest_identical_point():
    tree = KDTree([(10, 12), (70, 70), (35, 45)])
    new_point = (10, 12)
    KDTree.find_closest = counted(KDTree.find_closest)
    result = tree.find_closest(new_point)
    result_distance = KDTree._get_distance(result, new_point)
    assert_equals(result, (10, 12))
    assert_equals(result_distance, 0)
    assert_equals(tree.find_closest.calls, 2)