Skip to content

Commit

Permalink
Add tests
Browse files Browse the repository at this point in the history
  • Loading branch information
utkinis committed Mar 1, 2024
1 parent 6773d20 commit c9dea35
Showing 1 changed file with 158 additions and 0 deletions.
158 changes: 158 additions & 0 deletions test/test_grids.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,158 @@
include("common.jl")

using Chmy.Grids
using Chmy.Architectures

@testset "$(basename(@__FILE__)) (backend: CPU)" begin
@testset "axes" begin end

@testset "grids" begin
arch = Arch(CPU())
nx, ny = 5, 20
@testset "uniform grids" begin
grid = UniformGrid(arch; origin=(-1, -2), extent=(2, 4), dims=(nx, ny))
@test grid isa UniformGrid

# connectivity
@test connectivity(grid, Dim(1), Side(1)) isa Bounded
@test connectivity(grid, Dim(1), Side(2)) isa Bounded
@test connectivity(grid, Dim(2), Side(1)) isa Bounded
@test connectivity(grid, Dim(2), Side(2)) isa Bounded

# axes
@test axis(grid, Dim(1)) == grid.axes[1]
@test axis(grid, Dim(2)) == grid.axes[2]

@testset "size" begin
@test size(grid, Center()) == (nx, ny)
@test size(grid, Vertex()) == (nx + 1, ny + 1)
@test size(grid, (Center(), Vertex())) == (nx, ny + 1)
@test size(grid, (Vertex(), Center())) == (nx + 1, ny)
# repeating locations
@test size(grid, Center()) == size(grid, (Center(), Center()))
@test size(grid, Vertex()) == size(grid, (Vertex(), Vertex()))
end

@testset "bounds" begin
@test all(bounds(grid, Vertex(), Dim(1)) .≈ (-1.0, 1.0))
@test all(bounds(grid, Vertex(), Dim(2)) .≈ (-2.0, 2.0))
@test all(bounds(grid, Center(), Dim(1)) .≈ (-0.8, 0.8))
@test all(bounds(grid, Center(), Dim(2)) .≈ (-1.9, 1.9))
end

@testset "extent" begin
# one location
@test extent(grid, Vertex(), Dim(1)) 2.0
@test extent(grid, Vertex(), Dim(2)) 4.0
@test extent(grid, Center(), Dim(1)) 1.6
@test extent(grid, Center(), Dim(2)) 3.8
# many locations
@test all(extent(grid, (Vertex(), Vertex())) .≈ (2.0, 4.0))
@test all(extent(grid, (Center(), Center())) .≈ (1.6, 3.8))
@test all(extent(grid, (Center(), Vertex())) .≈ (1.6, 4.0))
@test all(extent(grid, (Vertex(), Center())) .≈ (2.0, 3.8))
# repeating locations
@test extent(grid, Vertex()) == extent(grid, (Vertex(), Vertex()))
@test extent(grid, Center()) == extent(grid, (Center(), Center()))
end

@testset "origin" begin
# one location
@test origin(grid, Vertex(), Dim(1)) -1
@test origin(grid, Vertex(), Dim(2)) -2
@test origin(grid, Center(), Dim(1)) -0.8
@test origin(grid, Center(), Dim(2)) -1.9
# many locations
@test all(origin(grid, (Vertex(), Vertex())) .≈ (-1.0, -2.0))
@test all(origin(grid, (Center(), Center())) .≈ (-0.8, -1.9))
@test all(origin(grid, (Center(), Vertex())) .≈ (-0.8, -2.0))
@test all(origin(grid, (Vertex(), Center())) .≈ (-1.0, -1.9))
# repeating locations
@test origin(grid, (Vertex(), Vertex())) == origin(grid, Vertex())
@test origin(grid, (Center(), Center())) == origin(grid, Center())
end

@testset "spacing" begin
@test Δ == spacing
# one location
@test spacing(grid, Vertex(), Dim(1), 1) 0.4
@test spacing(grid, Vertex(), Dim(2), 1) 0.2
@test spacing(grid, Center(), Dim(1), 1) 0.4
@test spacing(grid, Center(), Dim(2), 1) 0.2
# many locations
@test all(spacing(grid, (Center(), Center()), 1, 1) .≈ (0.4, 0.2))
@test all(spacing(grid, (Vertex(), Vertex()), 1, 1) .≈ (0.4, 0.2))
@test all(spacing(grid, (Center(), Vertex()), 1, 1) .≈ (0.4, 0.2))
@test all(spacing(grid, (Vertex(), Center()), 1, 1) .≈ (0.4, 0.2))
# repeating locations
@test spacing(grid, Vertex(), 1, 1) == spacing(grid, (Vertex(), Vertex()), 1, 1)
@test spacing(grid, Center(), 1, 1) == spacing(grid, (Center(), Center()), 1, 1)
end

@testset "inverse spacing" begin
@test== inv_spacing
# one location
@test inv_spacing(grid, Vertex(), Dim(1), 1) 2.5
@test inv_spacing(grid, Vertex(), Dim(2), 1) 5.0
@test inv_spacing(grid, Center(), Dim(1), 1) 2.5
@test inv_spacing(grid, Center(), Dim(2), 1) 5.0
# many locations
@test all(inv_spacing(grid, (Center(), Center()), 1, 1) .≈ (2.5, 5.0))
@test all(inv_spacing(grid, (Vertex(), Vertex()), 1, 1) .≈ (2.5, 5.0))
@test all(inv_spacing(grid, (Center(), Vertex()), 1, 1) .≈ (2.5, 5.0))
@test all(inv_spacing(grid, (Vertex(), Center()), 1, 1) .≈ (2.5, 5.0))
# repeating locations
@test inv_spacing(grid, Vertex(), 1, 1) == inv_spacing(grid, (Vertex(), Vertex()), 1, 1)
@test inv_spacing(grid, Center(), 1, 1) == inv_spacing(grid, (Center(), Center()), 1, 1)
end

@testset "coords" begin
# one index
@test coord(grid, Vertex(), Dim(1), 1) -1.0
@test coord(grid, Vertex(), Dim(2), 1) -2.0
@test coord(grid, Vertex(), Dim(1), nx + 1) 1.0
@test coord(grid, Vertex(), Dim(2), ny + 1) 2.0
@test coord(grid, Center(), Dim(1), 1) -0.8
@test coord(grid, Center(), Dim(2), 1) -1.9
@test coord(grid, Center(), Dim(1), nx) 0.8
@test coord(grid, Center(), Dim(2), ny) 1.9
# many indices
for loc in (Center(), Vertex())
@test coord(grid, loc, Dim(1), 1, 1) == coord(grid, loc, Dim(1), 1)
@test coord(grid, loc, Dim(2), 1, 1) == coord(grid, loc, Dim(2), 1)
@test coord(grid, loc, Dim(1), nx + 1, 1) == coord(grid, loc, Dim(1), nx + 1)
@test coord(grid, loc, Dim(2), 1, ny + 1) == coord(grid, loc, Dim(2), ny + 1)
end
# many locations
@test all(coord(grid, (Vertex(), Center()), 1, 1) .≈ (-1.0, -1.9))
@test all(coord(grid, (Vertex(), Center()), nx + 1, 1) .≈ (1.0, -1.9))
@test all(coord(grid, (Vertex(), Center()), 1, ny) .≈ (-1.0, 1.9))
# repeated locations
@test coord(grid, (Vertex(), Center()), Dim(1), 1) == coord(grid, Vertex(), Dim(1), 1) == coord(grid, Vertex(), Dim(1), 1, 1)
@test coord(grid, (Vertex(), Center()), Dim(2), 1) == coord(grid, Center(), Dim(2), 1) == coord(grid, Center(), Dim(2), 1, 1)
end

@testset "shortcut coords" begin
@test vertex(grid, Dim(1), 1) == vertex(grid, Dim(1), 1, 1) == coord(grid, Vertex(), Dim(1), 1)
@test vertex(grid, Dim(2), 1) == vertex(grid, Dim(2), 1, 1) == coord(grid, Vertex(), Dim(2), 1)
@test center(grid, Dim(1), 1) == center(grid, Dim(1), 1, 1) == coord(grid, Center(), Dim(1), 1)
@test center(grid, Dim(2), 1) == center(grid, Dim(2), 1, 1) == coord(grid, Center(), Dim(2), 1)
end

@testset "cartesian" begin
# coords
@test xvertex(grid, 1) == vertex(grid, Dim(1), 1)
@test xcenter(grid, 1) == center(grid, Dim(1), 1)
@test yvertex(grid, 1) == vertex(grid, Dim(2), 1)
@test ycenter(grid, 1) == center(grid, Dim(2), 1)
# spacing
for loc in (Center(), Vertex())
@test Δx(grid, loc, 1) == spacing(grid, loc, Dim(1), 1)
@test Δx(grid, loc, 1) == spacing(grid, loc, Dim(1), 1)
@test Δy(grid, loc, 1) == spacing(grid, loc, Dim(2), 1)
@test Δy(grid, loc, 1) == spacing(grid, loc, Dim(2), 1)
end
end
end
end
end

0 comments on commit c9dea35

Please sign in to comment.