Skip to content

Commit fea18e3

Browse files
committed
tests for periodic tree
1 parent 2317e22 commit fea18e3

2 files changed

Lines changed: 30 additions & 24 deletions

File tree

test/test_inrange.jl

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,9 +93,10 @@ end
9393
end
9494

9595
@testset "skip_self keyword" begin
96-
for T in (KDTree, BallTree, BruteTree)
96+
for T in (KDTree, BallTree, BruteTree, PeriodicTree)
9797
data = rand(3, 20)
98-
tree = T(data)
98+
base_tree = T === PeriodicTree ? KDTree(data) : T(data)
99+
tree = T === PeriodicTree ? PeriodicTree(base_tree, zeros(3), ones(3)) : base_tree
99100
# radius 0 includes only identical points
100101
idxs = inrange(tree, data, 0.0; skip_self=true)
101102
counts = inrangecount(tree, data, 0.0; skip_self=true)

test/test_knn.jl

Lines changed: 27 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -98,29 +98,34 @@ end
9898
@test distance [0.02239688629947563, 0.13440059522389006]
9999

100100
@testset "skip_self keyword" begin
101-
data = rand(3, 25)
102-
tree = KDTree(data)
103-
idxs_skip, dists_skip = knn(tree, data, 1, true; skip_self=true)
104-
@test all(i -> idxs_skip[i][1] != i, eachindex(idxs_skip))
105-
expected_idxs = Vector{Int}(undef, size(data, 2))
106-
expected_dists = Vector{Float64}(undef, size(data, 2))
107-
for i in 1:size(data, 2)
108-
single_idx, single_dist = knn(tree, data[:, i], 1, true, j -> j == i)
109-
expected_idxs[i] = single_idx[1]
110-
expected_dists[i] = single_dist[1]
101+
for tree_builder in (data -> KDTree(data),
102+
data -> BallTree(data),
103+
data -> BruteTree(data),
104+
data -> PeriodicTree(KDTree(data), zeros(3), ones(3)))
105+
data = rand(3, 25)
106+
tree = tree_builder(data)
107+
idxs_skip, dists_skip = knn(tree, data, 1, true; skip_self=true)
108+
@test all(i -> idxs_skip[i][1] != i, eachindex(idxs_skip))
109+
expected_idxs = Vector{Int}(undef, size(data, 2))
110+
expected_dists = Vector{Float64}(undef, size(data, 2))
111+
for i in 1:size(data, 2)
112+
single_idx, single_dist = knn(tree, data[:, i], 1, true, j -> j == i)
113+
expected_idxs[i] = single_idx[1]
114+
expected_dists[i] = single_dist[1]
115+
end
116+
@test [idxs_skip[i][1] for i in eachindex(idxs_skip)] == expected_idxs
117+
@test [dists_skip[i][1] for i in eachindex(dists_skip)] expected_dists
118+
119+
# Works for nn with batched queries too
120+
nn_idx, nn_dist = nn(tree, data; skip_self=true)
121+
@test nn_idx == expected_idxs
122+
@test nn_dist expected_dists
123+
124+
# skip_self combines with a custom skip predicate
125+
block_idx = 5
126+
idxs_blocked, _ = knn(tree, data, 1, true, j -> j == block_idx; skip_self=true)
127+
@test all(i -> idxs_blocked[i][1] != i && idxs_blocked[i][1] != block_idx, eachindex(idxs_blocked))
111128
end
112-
@test [idxs_skip[i][1] for i in eachindex(idxs_skip)] == expected_idxs
113-
@test [dists_skip[i][1] for i in eachindex(dists_skip)] expected_dists
114-
115-
# Works for nn with batched queries too
116-
nn_idx, nn_dist = nn(tree, data; skip_self=true)
117-
@test nn_idx == expected_idxs
118-
@test nn_dist expected_dists
119-
120-
# skip_self combines with a custom skip predicate
121-
block_idx = 5
122-
idxs_blocked, _ = knn(tree, data, 1, true, j -> j == block_idx; skip_self=true)
123-
@test all(i -> idxs_blocked[i][1] != i && idxs_blocked[i][1] != block_idx, eachindex(idxs_blocked))
124129
end
125130
end
126131

0 commit comments

Comments
 (0)