|
11 | 11 | end |
12 | 12 |
|
13 | 13 | @testset "Basic Operations" begin |
14 | | - ambr = SI.Rect((0.0, 0.0), (0.0, 0.0)) |
15 | | - bmbr = SI.Rect((0.0, 1.0), (0.0, 1.0)) |
16 | | - tree = RTree{Float64, 2}(Int, Int) |
17 | | - |
18 | | - @test tree isa RTree{Float64, 2, SpatialElem{Float64, 2, Int, Int}} |
19 | | - @test SI.variant(tree) === SI.RTreeStar |
20 | | - @test eltype(tree) === SpatialElem{Float64, 2, Int, Int} |
21 | | - @test SI.regiontype(tree) === SI.Rect{Float64, 2} |
22 | | - @test SI.dimtype(tree) === Float64 |
23 | | - @test ndims(tree) === 2 |
24 | | - @test length(tree) == 0 |
25 | | - @test SI.height(tree) == 1 |
26 | | - @test isempty(tree) |
27 | | - @test isempty(tree, ambr) |
28 | | - @test isequal(SI.mbr(tree.root), SI.empty(SI.regiontype(tree))) |
29 | | - @test SI.check(tree) |
30 | | - @test_throws KeyError delete!(tree, SI.empty(SI.regiontype(tree)), 1) |
31 | | - @test SI.check(tree) |
32 | | - |
33 | | - @test insert!(tree, ambr, 1, 2) === tree |
34 | | - @test length(tree) == 1 |
35 | | - @test !isempty(tree) |
36 | | - @test !isempty(tree, ambr) |
37 | | - @test SI.height(tree) == 1 |
38 | | - @test isequal(SI.mbr(tree.root), ambr) |
39 | | - @test SI.check(tree) |
40 | | - @test_throws KeyError delete!(tree, bmbr, 1) |
41 | | - @test_throws KeyError delete!(tree, ambr, 2) |
42 | | - @test SI.check(tree) |
43 | | - |
44 | | - @test insert!(tree, bmbr, 2, 2) === tree |
45 | | - @test length(tree) == 2 |
46 | | - @test SI.height(tree) == 1 |
47 | | - @test isequal(SI.mbr(tree.root), SI.combine(ambr, bmbr)) |
48 | | - @test SI.check(tree) |
49 | | - @test_throws KeyError delete!(tree, bmbr, 1) |
50 | | - @test_throws KeyError delete!(tree, ambr, 2) |
51 | | - @test_throws KeyError delete!(tree, SI.empty(SI.regiontype(tree)), 1) |
52 | | - @test delete!(tree, ambr, 1) === tree |
53 | | - @test length(tree) == 1 |
54 | | - @test SI.check(tree) |
| 14 | + tree_vars = [SI.RTreeStar, SI.RTreeLinear, SI.RTreeQuadratic] |
| 15 | + @testset "RTree{Float,2,Int32,Int}(variant=$tree_var)" for tree_var in tree_vars |
| 16 | + ambr = SI.Rect((0.0, 0.0), (0.0, 0.0)) |
| 17 | + bmbr = SI.Rect((0.0, 1.0), (0.0, 1.0)) |
| 18 | + |
| 19 | + tree = RTree{Float64, 2}(Int32, Int, variant=tree_var) |
| 20 | + @test tree isa RTree{Float64, 2, SpatialElem{Float64, 2, Int32, Int}} |
| 21 | + @test SI.variant(tree) === tree_var |
| 22 | + |
| 23 | + @test eltype(tree) === SpatialElem{Float64, 2, Int32, Int} |
| 24 | + @test SI.regiontype(tree) === SI.Rect{Float64, 2} |
| 25 | + @test SI.dimtype(tree) === Float64 |
| 26 | + @test ndims(tree) === 2 |
| 27 | + @test length(tree) == 0 |
| 28 | + @test SI.height(tree) == 1 |
| 29 | + @test isempty(tree) |
| 30 | + @test isempty(tree, ambr) |
| 31 | + @test isequal(SI.mbr(tree.root), SI.empty(SI.regiontype(tree))) |
| 32 | + @test SI.check(tree) |
| 33 | + @test_throws KeyError delete!(tree, SI.empty(SI.regiontype(tree)), 1) |
| 34 | + @test SI.check(tree) |
| 35 | + |
| 36 | + @test insert!(tree, ambr, 1, 2) === tree |
| 37 | + @test length(tree) == 1 |
| 38 | + @test !isempty(tree) |
| 39 | + @test !isempty(tree, ambr) |
| 40 | + @test SI.height(tree) == 1 |
| 41 | + @test isequal(SI.mbr(tree.root), ambr) |
| 42 | + @test SI.check(tree) |
| 43 | + @test_throws KeyError delete!(tree, bmbr, 1) |
| 44 | + @test_throws KeyError delete!(tree, ambr, 2) |
| 45 | + @test SI.check(tree) |
| 46 | + |
| 47 | + @test insert!(tree, bmbr, 2, 2) === tree |
| 48 | + @test length(tree) == 2 |
| 49 | + @test SI.height(tree) == 1 |
| 50 | + @test isequal(SI.mbr(tree.root), SI.combine(ambr, bmbr)) |
| 51 | + @test SI.check(tree) |
| 52 | + @test_throws KeyError delete!(tree, bmbr, 1) |
| 53 | + @test_throws KeyError delete!(tree, ambr, 2) |
| 54 | + @test_throws KeyError delete!(tree, SI.empty(SI.regiontype(tree)), 1) |
| 55 | + @test delete!(tree, ambr, 1) === tree |
| 56 | + @test length(tree) == 1 |
| 57 | + @test SI.check(tree) |
| 58 | + end |
| 59 | + |
| 60 | + @testset "RTree{Int,3,String,Nothing}(variant=$tree_var) (no id)" for tree_var in tree_vars |
| 61 | + ambr = SI.Rect((0, 0, 0), (0, 0, 0)) |
| 62 | + bmbr = SI.Rect((0, 1, 1), (0, 1, 1)) |
| 63 | + tree = RTree{Int, 3}(String, variant=tree_var) |
| 64 | + @test tree isa RTree{Int, 3, SpatialElem{Int, 3, Nothing, String}} |
| 65 | + @test SI.variant(tree) === tree_var |
| 66 | + @test eltype(tree) === SpatialElem{Int, 3, Nothing, String} |
| 67 | + @test SI.regiontype(tree) === SI.Rect{Int, 3} |
| 68 | + @test SI.dimtype(tree) === Int |
| 69 | + @test ndims(tree) === 3 |
| 70 | + @test length(tree) == 0 |
| 71 | + @test SI.height(tree) == 1 |
| 72 | + @test isempty(tree) |
| 73 | + @test isempty(tree, ambr) |
| 74 | + @test isequal(SI.mbr(tree.root), SI.empty(SI.regiontype(tree))) |
| 75 | + @test SI.check(tree) |
| 76 | + @test_throws KeyError delete!(tree, SI.empty(SI.regiontype(tree)), 1) |
| 77 | + @test_throws KeyError delete!(tree, SI.empty(SI.regiontype(tree))) |
| 78 | + @test SI.check(tree) |
| 79 | + |
| 80 | + @test_throws MethodError insert!(tree, ambr, 1, "2") |
| 81 | + @test insert!(tree, ambr, "2") === tree |
| 82 | + @test length(tree) == 1 |
| 83 | + @test !isempty(tree) |
| 84 | + @test !isempty(tree, ambr) |
| 85 | + @test SI.height(tree) == 1 |
| 86 | + @test isequal(SI.mbr(tree.root), ambr) |
| 87 | + @test SI.check(tree) |
| 88 | + @test_throws MethodError delete!(tree, bmbr, 1) |
| 89 | + @test_throws KeyError delete!(tree, bmbr) |
| 90 | + @test SI.check(tree) |
| 91 | + |
| 92 | + @test insert!(tree, bmbr, "3") === tree |
| 93 | + @test length(tree) == 2 |
| 94 | + @test SI.height(tree) == 1 |
| 95 | + @test isequal(SI.mbr(tree.root), SI.combine(ambr, bmbr)) |
| 96 | + @test SI.check(tree) |
| 97 | + @test_throws MethodError delete!(tree, bmbr, 1) |
| 98 | + @test_throws MethodError delete!(tree, SI.empty(SI.Rect{Int, 2})) |
| 99 | + @test_throws MethodError delete!(tree, SI.empty(SI.Rect{Float64, 3})) |
| 100 | + @test_throws KeyError delete!(tree, SI.empty(SI.regiontype(tree))) |
| 101 | + @test delete!(tree, bmbr) === tree |
| 102 | + @test length(tree) == 1 |
| 103 | + @test SI.check(tree) |
| 104 | + end |
55 | 105 | end |
56 | 106 |
|
57 | 107 | @testset "1000 vertices" begin |
|
94 | 144 | end |
95 | 145 |
|
96 | 146 | @testset "bulk load" begin |
97 | | - tree = RTree{SI.dimtype(eltype(mbrs)), ndims(eltype(mbrs))}(Int, String, leaf_capacity = 20, branch_capacity = 20) |
| 147 | + tree = RTree{SI.dimtype(eltype(mbrs)), ndims(eltype(mbrs))}(Int, String, |
| 148 | + leaf_capacity = 20, branch_capacity = 20) |
98 | 149 | @test tree === SI.load!(tree, enumerate(mbrs), method=:OMT, |
99 | 150 | getid = x -> x[1], getmbr = x -> x[2], getval = x -> string(x[1])) |
100 | 151 | @test SI.check(tree) |
|
0 commit comments