annotate test/Grids/equidistant_grid_test.jl @ 1255:1989d432731a refactor/grids

Implement the interfaces for iteration and indexing on EquidistantGrid. Make collect() work
author Jonatan Werpers <jonatan@werpers.com>
date Wed, 22 Feb 2023 22:38:25 +0100
parents ff8f335c32d1
children ee57bdb366e4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
335
f4e3e71a4ff4 Fix `using` commands to refer to local modules within the Sbplib package/module
Jonatan Werpers <jonatan@werpers.com>
parents: 333
diff changeset
1 using Sbplib.Grids
213
0bf761485f40 Add test stub to package Grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
2 using Test
660
b21fea54ca10 Add tests for Grids.boundary_identifiers
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 407
diff changeset
3 using Sbplib.RegionIndices
1146
31041ef8092a Specialize evalOn for EquidistantGrid to return a LazyArray
Jonatan Werpers <jonatan@werpers.com>
parents: 1144
diff changeset
4 using Sbplib.LazyTensors
213
0bf761485f40 Add test stub to package Grids
Jonatan Werpers <jonatan@werpers.com>
parents:
diff changeset
5
338
2b0c9b30ea3b Add test sets for each submodule to make the test output nicer
Jonatan Werpers <jonatan@werpers.com>
parents: 335
diff changeset
6
324
047dee8efaef Grids.EquidistantGrid: Add constructor for 1d grid
Jonatan Werpers <jonatan@werpers.com>
parents: 217
diff changeset
7 @testset "EquidistantGrid" begin
1252
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
8 @test EquidistantGrid(0:0.1:10) isa EquidistantGrid
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
9 @test EquidistantGrid(range(0,1,length=10)) isa EquidistantGrid
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
10 @test EquidistantGrid(LinRange(0,1,11)) isa EquidistantGrid
353
8257cc75ea6b Add doc string and allow picking several dimensions
Jonatan Werpers <jonatan@werpers.com>
parents: 352
diff changeset
11
688
e9e46a587370 Add eltype function to EquidistantGrids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 686
diff changeset
12 @testset "Base" begin
1252
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
13 @test eltype(EquidistantGrid(0:10)) == Int
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
14 @test eltype(EquidistantGrid(0:2:10)) == Int
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
15 @test eltype(EquidistantGrid(0:0.1:10)) == Float64
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
16 @test size(EquidistantGrid(0:10)) == (11,)
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
17 @test size(EquidistantGrid(0:0.1:10)) == (101,)
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
18 @test ndims(EquidistantGrid(0:10)) == 1
688
e9e46a587370 Add eltype function to EquidistantGrids
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 686
diff changeset
19 end
405
16dc5b19843d Fix exception handling in constructor of EquidistantGrid and add a bunch of tests
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 358
diff changeset
20
1125
b9c6b0d8f0fa Add testsets to existing tests
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1116
diff changeset
21 @testset "spacing" begin
1252
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
22 @test spacing(EquidistantGrid(0:10)) == 1
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
23 @test spacing(EquidistantGrid(0:0.1:10)) == 0.1
1125
b9c6b0d8f0fa Add testsets to existing tests
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1116
diff changeset
24 end
405
16dc5b19843d Fix exception handling in constructor of EquidistantGrid and add a bunch of tests
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 358
diff changeset
25
1125
b9c6b0d8f0fa Add testsets to existing tests
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1116
diff changeset
26 @testset "inverse_spacing" begin
1252
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
27 @test inverse_spacing(EquidistantGrid(0:10)) == 1
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
28 @test inverse_spacing(EquidistantGrid(0:0.1:10)) == 10
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
29 end
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
30
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
31 @testset "collect" begin
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
32 g = EquidistantGrid(0:0.1:0.5)
1255
1989d432731a Implement the interfaces for iteration and indexing on EquidistantGrid. Make collect() work
Jonatan Werpers <jonatan@werpers.com>
parents: 1253
diff changeset
33 @test collect(g) == [0.0, 0.1, 0.2, 0.3, 0.4, 0.5]
1252
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
34 end
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
35
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
36 @testset "getindex" begin
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
37 g = EquidistantGrid(0:0.1:10)
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
38 @test g[1] == 0.0
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
39 @test g[5] == 0.4
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
40 @test g[101] == 10.0
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
41
1253
ff8f335c32d1 Fix indexing with begin and end for EquidistantGrid
Jonatan Werpers <jonatan@werpers.com>
parents: 1252
diff changeset
42 @test g[begin] == 0.0
ff8f335c32d1 Fix indexing with begin and end for EquidistantGrid
Jonatan Werpers <jonatan@werpers.com>
parents: 1252
diff changeset
43 @test g[end] == 10.0
1252
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
44 end
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
45
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
46 @testset "boundary_identifiers" begin
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
47 g = EquidistantGrid(0:0.1:10)
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
48 @test boundary_identifiers(g) == (Lower(), Upper())
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
49 @inferred boundary_identifiers(g)
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
50 end
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
51
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
52 @testset "boundary_grid" begin
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
53 g = EquidistantGrid(0:0.1:1)
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
54 @test_broken boundary_grid(g, Lower()) == ZeroDimGrid(fill(0.0)) # TBD: Is fill necessary here? Why?
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
55 @test_broken boundary_grid(g, Upper()) == ZeroDimGrid(fill(1.0))
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
56 end
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
57
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
58 @testset "refine" begin
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
59 g = EquidistantGrid(0:0.1:1)
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
60 @test refine(g, 1) == g
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
61 @test refine(g, 2) == EquidistantGrid(0:0.05:1)
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
62 @test refine(g, 3) == EquidistantGrid(0:(0.1/3):1)
405
16dc5b19843d Fix exception handling in constructor of EquidistantGrid and add a bunch of tests
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 358
diff changeset
63 end
16dc5b19843d Fix exception handling in constructor of EquidistantGrid and add a bunch of tests
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 358
diff changeset
64
1252
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
65 @testset "coarsen" begin
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
66 g = EquidistantGrid(0:1:10)
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
67 @test coarsen(g, 1) == g
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
68 @test coarsen(g, 2) == EquidistantGrid(0:2:10)
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
69
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
70 g = EquidistantGrid(0:0.1:1)
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
71 @test coarsen(g, 1) == g
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
72 @test coarsen(g, 2) == EquidistantGrid(0:0.2:1)
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
73
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
74 g = EquidistantGrid(0:10)
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
75 @test coarsen(g, 1) == EquidistantGrid(0:1:10)
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
76 @test coarsen(g, 2) == EquidistantGrid(0:2:10)
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
77
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
78 @test_throws DomainError(3, "Size minus 1 must be divisible by the ratio.") coarsen(g, 3)
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
79 end
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
80 end
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
81
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
82
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
83 @testset "equidistant_grid" begin
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
84 @test equidistant_grid(4,0.0,1.0) isa TensorGrid
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
85 @test equidistant_grid(4,0.0,8.0) isa TensorGrid
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
86 # constuctor
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
87 @test_throws DomainError equidistant_grid(0,0.0,1.0)
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
88 @test_throws DomainError equidistant_grid(1,1.0,1.0)
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
89 @test_throws DomainError equidistant_grid(1,1.0,-1.0)
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
90 @test equidistant_grid(4,0.0,1.0) == equidistant_grid((4,),(0.0,),(1.0,))
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
91
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
92 @testset "Base" begin
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
93 @test eltype(equidistant_grid(4,0.0,1.0)) == Float64
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
94 @test_broken eltype(equidistant_grid((4,3),(0,0),(1,3))) == AbstractVector{Float64}
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
95 @test size(equidistant_grid(4,0.0,1.0)) == (4,)
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
96 @test size(equidistant_grid((5,3), (0.0,0.0), (2.0,1.0))) == (5,3)
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
97 @test ndims(equidistant_grid(4,0.0,1.0)) == 1
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
98 @test ndims(equidistant_grid((5,3), (0.0,0.0), (2.0,1.0))) == 2
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
99 end
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
100
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
101 @testset "getindex" begin
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
102 g = equidistant_grid((5,3), (-1.0,0.0), (0.0,7.11))
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
103 # gp = collect(g);
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
104 gp = rand(size(g)...)
1125
b9c6b0d8f0fa Add testsets to existing tests
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1116
diff changeset
105 p = [(-1.,0.) (-1.,7.11/2) (-1.,7.11);
b9c6b0d8f0fa Add testsets to existing tests
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1116
diff changeset
106 (-0.75,0.) (-0.75,7.11/2) (-0.75,7.11);
b9c6b0d8f0fa Add testsets to existing tests
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1116
diff changeset
107 (-0.5,0.) (-0.5,7.11/2) (-0.5,7.11);
b9c6b0d8f0fa Add testsets to existing tests
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1116
diff changeset
108 (-0.25,0.) (-0.25,7.11/2) (-0.25,7.11);
b9c6b0d8f0fa Add testsets to existing tests
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1116
diff changeset
109 (0.,0.) (0.,7.11/2) (0.,7.11)]
b9c6b0d8f0fa Add testsets to existing tests
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1116
diff changeset
110 for i ∈ eachindex(gp)
1252
c150eabaf656 Fix or mark tests broken where needed
Jonatan Werpers <jonatan@werpers.com>
parents: 1146
diff changeset
111 @test_broken [gp[i]...] ≈ [p[i]...] atol=5e-13
1125
b9c6b0d8f0fa Add testsets to existing tests
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1116
diff changeset
112 end
b9c6b0d8f0fa Add testsets to existing tests
Vidar Stiernström <vidar.stiernstrom@it.uu.se>
parents: 1116
diff changeset
113 end
324
047dee8efaef Grids.EquidistantGrid: Add constructor for 1d grid
Jonatan Werpers <jonatan@werpers.com>
parents: 217
diff changeset
114 end