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)
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)