|
1 | | -@testset "RTree" begin |
2 | 1 | @testset "SpatialElem" begin |
3 | 2 | @test SI.check_hasmbr(SI.Rect{Float64, 2}, SpatialElem{Float64, 2, Int, Int}) |
4 | 3 | @test_throws ArgumentError SI.check_hasmbr(SI.Rect{Float64, 2}, Int) |
|
10 | 9 | @test_throws ArgumentError SI.check_hasid(Int, SpatialElem{Float64, 2, Nothing, Int}) |
11 | 10 | end |
12 | 11 |
|
| 12 | +@testset "RTree" begin |
13 | 13 | @testset "Basic Operations" begin |
14 | 14 | tree_vars = [SI.RTreeStar, SI.RTreeLinear, SI.RTreeQuadratic] |
15 | 15 | @testset "RTree{Float,2,Int32,Int}(variant=$tree_var)" for tree_var in tree_vars |
16 | 16 | ambr = SI.Rect((0.0, 0.0), (0.0, 0.0)) |
17 | 17 | bmbr = SI.Rect((0.0, 1.0), (0.0, 1.0)) |
| 18 | + cmbr = SI.Rect((0.5, 0.5), (0.5, 0.6)) |
18 | 19 |
|
19 | 20 | tree = RTree{Float64, 2}(Int32, Int, variant=tree_var) |
20 | 21 | @test tree isa RTree{Float64, 2, SpatialElem{Float64, 2, Int32, Int}} |
|
32 | 33 | @test SI.check(tree) |
33 | 34 | @test_throws KeyError delete!(tree, SI.empty(SI.regiontype(tree)), 1) |
34 | 35 | @test SI.check(tree) |
| 36 | + @test iterate(tree) === nothing |
| 37 | + @test collect(tree) == eltype(tree)[] |
| 38 | + @test typeof(collect(tree)) === Vector{eltype(tree)} |
35 | 39 |
|
36 | 40 | @test insert!(tree, ambr, 1, 2) === tree |
37 | 41 | @test length(tree) == 1 |
|
43 | 47 | @test_throws KeyError delete!(tree, bmbr, 1) |
44 | 48 | @test_throws KeyError delete!(tree, ambr, 2) |
45 | 49 | @test SI.check(tree) |
| 50 | + @test collect(tree) == [SpatialElem(ambr, Int32(1), 2)] |
46 | 51 |
|
47 | 52 | @test insert!(tree, bmbr, 2, 2) === tree |
48 | 53 | @test length(tree) == 2 |
49 | 54 | @test SI.height(tree) == 1 |
50 | 55 | @test isequal(SI.mbr(tree.root), SI.combine(ambr, bmbr)) |
51 | 56 | @test SI.check(tree) |
| 57 | + @test length(collect(tree)) == 2 |
52 | 58 | @test_throws KeyError delete!(tree, bmbr, 1) |
53 | 59 | @test_throws KeyError delete!(tree, ambr, 2) |
54 | 60 | @test_throws KeyError delete!(tree, SI.empty(SI.regiontype(tree)), 1) |
55 | 61 | @test delete!(tree, ambr, 1) === tree |
56 | 62 | @test length(tree) == 1 |
57 | 63 | @test SI.check(tree) |
| 64 | + |
| 65 | + insert!(tree, ambr, 1, 2) |
| 66 | + insert!(tree, cmbr, 2, 3) |
| 67 | + @test length(tree) == 3 |
| 68 | + @test_throws SpatialIndexException SI.check(tree) # duplicate ID=2 (b and c) |
| 69 | + @test delete!(tree, cmbr, 2) === tree |
| 70 | + @test length(tree) == 2 |
| 71 | + # prepare tree with a(id=1), b(id=2), c(id=3) |
| 72 | + @test insert!(tree, cmbr, 3, 3) === tree |
| 73 | + @test length(tree) == 3 |
| 74 | + @test SI.check(tree) |
58 | 75 | end |
59 | 76 |
|
60 | 77 | @testset "RTree{Int,3,String,Nothing}(variant=$tree_var) (no id)" for tree_var in tree_vars |
|
141 | 158 | end |
142 | 159 | end |
143 | 160 | end |
| 161 | + |
| 162 | + @testset "iterate" begin |
| 163 | + all_elems = collect(tree) |
| 164 | + @test length(all_elems) == length(tree) |
| 165 | + @test eltype(all_elems) === eltype(tree) |
| 166 | + end |
144 | 167 | end |
145 | 168 |
|
146 | 169 | @testset "bulk load" begin |
|
0 commit comments