From a80896df6462be85cf4e473c59b30851d0d18b77 Mon Sep 17 00:00:00 2001 From: Charles Kawczynski Date: Tue, 20 Aug 2024 13:31:19 -0400 Subject: [PATCH] Group data2array tests --- .buildkite/pipeline.yml | 4 +++ test/DataLayouts/data0d.jl | 30 ----------------- test/DataLayouts/data1dx.jl | 11 ------- test/DataLayouts/data2d.jl | 9 ------ test/DataLayouts/data2dx.jl | 11 ------- test/DataLayouts/unit_data2array.jl | 50 +++++++++++++++++++++++++++++ test/runtests.jl | 1 + 7 files changed, 55 insertions(+), 61 deletions(-) create mode 100644 test/DataLayouts/unit_data2array.jl diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 94714b3a31..a877374dc7 100755 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -102,6 +102,10 @@ steps: key: unit_data_ndims command: "julia --color=yes --check-bounds=yes --project=.buildkite test/DataLayouts/unit_ndims.jl" + - label: "Unit: unit_data2array" + key: unit_data2array + command: "julia --color=yes --check-bounds=yes --project=.buildkite test/DataLayouts/unit_data2array.jl" + - label: "Unit: data1d" key: unit_data1d command: "julia --color=yes --check-bounds=yes --project=.buildkite test/DataLayouts/data1d.jl" diff --git a/test/DataLayouts/data0d.jl b/test/DataLayouts/data0d.jl index 66fbeb9110..5a2425f8b9 100644 --- a/test/DataLayouts/data0d.jl +++ b/test/DataLayouts/data0d.jl @@ -123,13 +123,6 @@ end data_if2 = data_f .+ data_if @test data_if2 isa IF{S} @test size(data_if2) == (2, 1, 1, 1, 1) - - FT = Float64 - array = rand(FT, 2, 1) - data = IF{FT, 2}(array) - @test DataLayouts.data2array(data) == reshape(parent(data), :) - @test parent(DataLayouts.array2data(DataLayouts.data2array(data), data)) == - parent(data) end @testset "broadcasting DataF + IFH data object => IFH" begin @@ -141,14 +134,6 @@ end data_ifh2 = data_f .+ data_ifh @test data_ifh2 isa IFH{S} @test size(data_ifh2) == (2, 1, 1, 1, 3) - - - FT = Float64 - array = rand(FT, 2, 1, Nh) - data = IFH{FT, 2, Nh}(array) - @test DataLayouts.data2array(data) == reshape(parent(data), :) - @test parent(DataLayouts.array2data(DataLayouts.data2array(data), data)) == - parent(data) end @testset "broadcasting DataF + IJF data object => IJF" begin @@ -159,13 +144,6 @@ end data_ijf2 = data_f .+ data_ijf @test data_ijf2 isa IJF{S} @test size(data_ijf2) == (2, 2, 1, 1, 1) - - FT = Float64 - array = rand(FT, 2, 2, 1) - data = IJF{FT, 2}(array) - @test DataLayouts.data2array(data) == reshape(parent(data), :) - @test parent(DataLayouts.array2data(DataLayouts.data2array(data), data)) == - parent(data) end @testset "broadcasting DataF + IJFH data object => IJFH" begin @@ -177,14 +155,6 @@ end data_ijfh2 = data_f .+ data_ijfh @test data_ijfh2 isa IJFH{S} @test size(data_ijfh2) == (2, 2, 1, 1, Nh) - - FT = Float64 - Nh = 3 - array = rand(FT, 2, 2, 1, Nh) - data = IJFH{FT, 2, Nh}(array) - @test DataLayouts.data2array(data) == reshape(parent(data), :) - @test parent(DataLayouts.array2data(DataLayouts.data2array(data), data)) == - parent(data) end @testset "broadcasting DataF + VIFH data object => VIFH" begin diff --git a/test/DataLayouts/data1dx.jl b/test/DataLayouts/data1dx.jl index a14c70c02e..ece0c50d3a 100644 --- a/test/DataLayouts/data1dx.jl +++ b/test/DataLayouts/data1dx.jl @@ -42,17 +42,6 @@ import ClimaCore.DataLayouts: VIFH, slab, column, VF, IFH, vindex, slab_index Complex{FT}(sum(array[:, :, 1, :]), sum(array[:, :, 2, :])) @test sum(x -> x[2], data) ≈ sum(array[:, :, 3, :]) end - - FT = Float64 - Nv = 10 # number of vertical levels - Ni = 4 # number of nodal points - Nh = 10 # number of elements - array = rand(FT, Nv, Ni, 1, Nh) - data = VIFH{FT, Nv, Ni, Nh}(array) - @test DataLayouts.data2array(data) == - reshape(parent(data), DataLayouts.nlevels(data), :) - @test parent(DataLayouts.array2data(DataLayouts.data2array(data), data)) == - parent(data) end @testset "VIFH boundscheck" begin diff --git a/test/DataLayouts/data2d.jl b/test/DataLayouts/data2d.jl index 3399e4d5d0..4bdfdd0800 100644 --- a/test/DataLayouts/data2d.jl +++ b/test/DataLayouts/data2d.jl @@ -64,15 +64,6 @@ end @test sum(data.:1) ≈ Complex(sum(array[:, :, 1, :]), sum(array[:, :, 2, :])) atol = 10eps() @test sum(x -> x[2], data) ≈ sum(array[:, :, 3, :]) atol = 10eps() - - FT = Float64 - Nij = 4 # number of nodal points - Nh = 10 # number of elements - array = rand(FT, Nij, Nij, 1, Nh) - data = IJFH{FT, Nij, Nh}(array) - @test DataLayouts.data2array(data) == reshape(parent(data), :) - @test parent(DataLayouts.array2data(DataLayouts.data2array(data), data)) == - parent(data) end @testset "IJFH boundscheck" begin diff --git a/test/DataLayouts/data2dx.jl b/test/DataLayouts/data2dx.jl index c9924f2ae1..02dfbb3d21 100644 --- a/test/DataLayouts/data2dx.jl +++ b/test/DataLayouts/data2dx.jl @@ -43,17 +43,6 @@ import ClimaCore.DataLayouts: VF, IJFH, VIJFH, slab, column, slab_index, vindex Complex{FT}(sum(array[:, :, :, 1, :]), sum(array[:, :, :, 2, :])) @test sum(x -> x[2], data) ≈ sum(array[:, :, :, 3, :]) end - - FT = Float64 - Nv = 10 # number of vertical levels - Ni = 4 # number of nodal points - Nh = 10 # number of elements - array = rand(FT, Nv, Nij, Nij, 1, Nh) - data = VIJFH{FT, Nv, Nij, Nh}(array) - @test DataLayouts.data2array(data) == - reshape(parent(data), DataLayouts.nlevels(data), :) - @test parent(DataLayouts.array2data(DataLayouts.data2array(data), data)) == - parent(data) end @testset "VIJFH boundscheck" begin diff --git a/test/DataLayouts/unit_data2array.jl b/test/DataLayouts/unit_data2array.jl new file mode 100644 index 0000000000..0201fa6e52 --- /dev/null +++ b/test/DataLayouts/unit_data2array.jl @@ -0,0 +1,50 @@ +#= +julia --project +using Revise; include(joinpath("test", "DataLayouts", "unit_data2array.jl")) +=# +using Test +using ClimaCore.DataLayouts + +function is_data2array2data_identity(data) + all( + parent(DataLayouts.array2data(DataLayouts.data2array(data), data)) .== + parent(data), + ) +end + +@testset "data2array & array2data" begin + FT = Float64 + Nv = 10 # number of vertical levels + Nij = 4 # number of nodal points + Nh = 10 # number of elements + + array = rand(FT, 2, 1) + data = IF{FT, 2}(array) + @test DataLayouts.data2array(data) == reshape(parent(data), :) + @test is_data2array2data_identity(data) + + array = rand(FT, 2, 1, Nh) + data = IFH{FT, 2, Nh}(array) + @test DataLayouts.data2array(data) == reshape(parent(data), :) + @test is_data2array2data_identity(data) + + array = rand(FT, 2, 2, 1) + data = IJF{FT, 2}(array) + @test DataLayouts.data2array(data) == reshape(parent(data), :) + @test is_data2array2data_identity(data) + + array = rand(FT, Nij, Nij, 1, Nh) + data = IJFH{FT, Nij, Nh}(array) + @test DataLayouts.data2array(data) == reshape(parent(data), :) + @test is_data2array2data_identity(data) + + array = rand(FT, Nv, Nij, 1, Nh) + data = VIFH{FT, Nv, Nij, Nh}(array) + @test DataLayouts.data2array(data) == reshape(parent(data), Nv, :) + @test is_data2array2data_identity(data) + + array = rand(FT, Nv, Nij, Nij, 1, Nh) + data = VIJFH{FT, Nv, Nij, Nh}(array) + @test DataLayouts.data2array(data) == reshape(parent(data), Nv, :) + @test is_data2array2data_identity(data) +end diff --git a/test/runtests.jl b/test/runtests.jl index f8540cb4e5..352474bd50 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -9,6 +9,7 @@ include("tabulated_tests.jl") unit_tests = [ UnitTest("DataLayouts fill" ,"DataLayouts/unit_fill.jl"), UnitTest("DataLayouts ndims" ,"DataLayouts/unit_ndims.jl"), +UnitTest("DataLayouts array<->data" ,"DataLayouts/unit_data2array.jl"), UnitTest("DataLayouts get_struct" ,"DataLayouts/unit_struct.jl"), UnitTest("Recursive" ,"RecursiveApply/unit_recursive_apply.jl"), UnitTest("PlusHalf" ,"Utilities/unit_plushalf.jl"),