changeset 1260:8b9a77d2dc91 refactor/grids

Add tests and make them pass for ZeroDimGrid
author Jonatan Werpers <jonatan@werpers.com>
date Thu, 23 Feb 2023 12:22:18 +0100
parents ee57bdb366e4
children a4834779cd6d
files src/Grids/zero_dim_grid.jl test/Grids/zero_dim_grid_test.jl test/Manifest.toml test/Project.toml
diffstat 4 files changed, 51 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
--- a/src/Grids/zero_dim_grid.jl	Thu Feb 23 12:22:00 2023 +0100
+++ b/src/Grids/zero_dim_grid.jl	Thu Feb 23 12:22:18 2023 +0100
@@ -1,18 +1,20 @@
-struct ZeroDimGrid{T,S} <: Grid{T,0}
-    p::S
-
-    function ZeroDimGrid(p)
-        T = eltype(p)
-        S = typeof(p)
-        return new{T,S}(p)
-    end
+"""
+    ZeroDimGrid{T} <: Grid{T,0}
+# TODO
+"""
+struct ZeroDimGrid{T} <: Grid{T,0}
+    point::T
 end
 
-Base.size(g::ZeroDimGrid) = ()
-Base.getindex(g::ZeroDimGrid) = g.p
+# # Indexing interface
+Base.getindex(g::ZeroDimGrid) = g.point
 Base.eachindex(g::ZeroDimGrid) = CartesianIndices(())
 
-# Indexing interface
-# TODO
-# Iteration interface
-# TODO
+# # Iteration interface
+Base.iterate(g::ZeroDimGrid) = (g.point, nothing)
+Base.iterate(g::ZeroDimGrid, ::Any) = nothing
+
+Base.IteratorSize(::Type{ZeroDimGrid{T}}) where T = Base.HasShape{0}()
+Base.eltype(::Type{ZeroDimGrid{T}}) where T = T
+Base.length(g::ZeroDimGrid) = 1
+Base.size(g::ZeroDimGrid) = ()
--- a/test/Grids/zero_dim_grid_test.jl	Thu Feb 23 12:22:00 2023 +0100
+++ b/test/Grids/zero_dim_grid_test.jl	Thu Feb 23 12:22:18 2023 +0100
@@ -1,6 +1,26 @@
+using Test
 using Sbplib.Grids
-using Test
+using StaticArrays
 
 @testset "ZeroDimGrid" begin
-    @test_broken false
+    @test ZeroDimGrid(1) isa ZeroDimGrid{Int}
+    @test ZeroDimGrid([1,2,3]) isa ZeroDimGrid{Vector{Int}}
+    @test ZeroDimGrid(@SVector[1.0,2.0]) isa ZeroDimGrid{SVector{2,Float64}}
+
+    @testset "Indexing Interface" begin
+        g = ZeroDimGrid(@SVector[1,2])
+
+        @test g[] == [1,2]
+        @test eachindex(g) == CartesianIndices(())
+    end
+
+    @testset "Iterator interface" begin
+        g = ZeroDimGrid(@SVector[1,2])
+
+        @test Base.IteratorSize(g) == Base.HasShape{0}()
+        @test eltype(g) == SVector{2,Int}
+        @test length(g) == 1
+        @test size(g) == ()
+        @test collect(g) == fill(@SVector[1,2])
+    end
 end
--- a/test/Manifest.toml	Thu Feb 23 12:22:00 2023 +0100
+++ b/test/Manifest.toml	Thu Feb 23 12:22:18 2023 +0100
@@ -2,7 +2,7 @@
 
 julia_version = "1.8.5"
 manifest_format = "2.0"
-project_hash = "23260eda65ade7d11fffed313a68520d0bc053fc"
+project_hash = "f2b0634c12bbed93a17efc88d466604d5a07c465"
 
 [[deps.ArgTools]]
 uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f"
@@ -250,6 +250,17 @@
 uuid = "276daf66-3868-5448-9aa4-cd146d93841b"
 version = "2.1.7"
 
+[[deps.StaticArrays]]
+deps = ["LinearAlgebra", "Random", "StaticArraysCore", "Statistics"]
+git-tree-sha1 = "2d7d9e1ddadc8407ffd460e24218e37ef52dd9a3"
+uuid = "90137ffa-7385-5640-81b9-e52037218182"
+version = "1.5.16"
+
+[[deps.StaticArraysCore]]
+git-tree-sha1 = "6b7ba252635a5eff6a0b0664a41ee140a1c9e72a"
+uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c"
+version = "1.4.0"
+
 [[deps.Statistics]]
 deps = ["LinearAlgebra", "SparseArrays"]
 uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"
--- a/test/Project.toml	Thu Feb 23 12:22:00 2023 +0100
+++ b/test/Project.toml	Thu Feb 23 12:22:18 2023 +0100
@@ -2,6 +2,7 @@
 BenchmarkTools = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf"
 Glob = "c27321d9-0574-5035-807b-f59d2c89b15c"
 LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
+StaticArrays = "90137ffa-7385-5640-81b9-e52037218182"
 TOML = "fa267f1f-6049-4f14-aa54-33bafae1ed76"
 Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
 TestSetExtensions = "98d24dd4-01ad-11ea-1b02-c9a08f80db04"