From 3353cad0b365bc870306ccaa21f701859e68a92f Mon Sep 17 00:00:00 2001 From: "Claudius \"keldu\" Holeksa" Date: Wed, 8 Nov 2023 16:20:32 +0100 Subject: codec-netcdf: Multidimensional arrays implemented --- tests/codec-netcdf.cpp | 43 ++++++++++++++++++++++++++++++++++++------- 1 file changed, 36 insertions(+), 7 deletions(-) (limited to 'tests/codec-netcdf.cpp') diff --git a/tests/codec-netcdf.cpp b/tests/codec-netcdf.cpp index df0037b..72fc5ea 100644 --- a/tests/codec-netcdf.cpp +++ b/tests/codec-netcdf.cpp @@ -5,21 +5,50 @@ namespace { namespace schema { using namespace saw::schema; using TestStruct = Struct< - Member + Member, + Member +>; + +using TestArrayStruct = Struct< + Member, "data"> >; } -SAW_TEST("NetCDF read"){ +SAW_TEST("NetCDF Struct Primitive read"){ using namespace saw; - data net{"./data/simple.nc"}; + data netcdf{"./data/primitive.nc"}; - data kel; + data native; - codec codec; + codec codec; - auto eov = codec.decode(net, kel); + auto eov = codec.decode(netcdf, native); SAW_EXPECT(eov.is_value(), "Decoding failed"); - SAW_EXPECT(kel.get<"rh">.get() == 5, "Value incorrect"); + SAW_EXPECT(native.get<"data">().get() == 5, "Int Value incorrect"); + SAW_EXPECT(native.get<"other">().get() == 32.0, "Double Value incorrect"); +} + +SAW_TEST("NetCDF Struct Array read"){ + using namespace saw; + + data netcdf{"./data/array.nc"}; + + data native; + + codec codec; + + auto eov = codec.decode(netcdf, native); + SAW_EXPECT(eov.is_value(), "Decoding failed"); + auto& arr = native.get<"data">(); + SAW_EXPECT(arr.get_dim_size(0) == 5, "Incorrect dimension 0"); + SAW_EXPECT(arr.get_dim_size(1) == 3, "Incorrect dimension 1"); + + for(std::size_t i = 0; i < 5; ++i){ + for(std::size_t j = 0; j < 3; ++j){ + int64_t exp_val = i * 3 + j; + SAW_EXPECT(arr.at(i,j).get() == exp_val, "Incorrect value"); + } + } } } -- cgit v1.2.3