示例#1
0
def test_find_closest_very_close_point():
    tree = KDTree([(10, 12), (70, 70), (35, 45)])
    new_point = (8, 10)
    KDTree.find_closest = counted(KDTree.find_closest)
    result = tree.find_closest(new_point)
    assert_equals(result, (10, 12))
    assert_equals(tree.find_closest.calls, 2)
示例#2
0
def test_find_closest_negative_numbers():
    tree = KDTree([(10, 12), (70, -70), (-35, 45)])
    new_point = (-40, 60)
    KDTree.find_closest = counted(KDTree.find_closest)
    result = tree.find_closest(new_point)
    assert_equals(result, (-35, 45))
    assert_equals(tree.find_closest.calls, 2)
示例#3
0
def test_find_closest_distant_point():
    tree = KDTree([(10, 12), (70, 70), (35, 45)])
    new_point = (0, 10000)
    KDTree.find_closest = counted(KDTree.find_closest)
    result = tree.find_closest(new_point)
    assert_equals(result, (70, 70))
    assert_equals(tree.find_closest.calls, 3)
示例#4
0
def test_find_closest_same_dimension():
    tree = KDTree([(30, 40), (30, 4), (30, 60)])
    new_point = (30, 55)
    KDTree.find_closest = counted(KDTree.find_closest)
    result = tree.find_closest(new_point)
    assert_equals(result, (30, 60))
    assert_equals(tree.find_closest.calls, 3)
示例#5
0
def test_find_closest_three_points():
    tree = KDTree([(10, 12), (70, 70), (35, 45)])
    new_point = (50, 50)
    KDTree.find_closest = counted(KDTree.find_closest)
    result = tree.find_closest(new_point)
    assert_equals(result, (35, 45))
    assert_equals(tree.find_closest.calls, 3)
示例#6
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)
示例#7
0
def test_find_closest_3k():
    data = [
        (30, 40, 10), (5, 25, 2), (10, 12, 30), (70, 70, 10), (50, 30, 5), 
        (35, 45, 15)]
    tree = KDTree(data)
    new_point = (34, 100, 50)
    KDTree.find_closest = counted(KDTree.find_closest)
    result = tree.find_closest(new_point)
    assert_equals(result, (70, 70, 10))
    assert_equals(tree.find_closest.calls, 5)
示例#8
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)