summaryrefslogtreecommitdiff
path: root/tests/codec-netcdf.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/codec-netcdf.cpp')
-rw-r--r--tests/codec-netcdf.cpp43
1 files changed, 36 insertions, 7 deletions
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<Int32, "rh">
+ Member<Int32, "data">,
+ Member<Float64, "other">
+>;
+
+using TestArrayStruct = Struct<
+ Member<Array<Int32,2>, "data">
>;
}
-SAW_TEST("NetCDF read"){
+SAW_TEST("NetCDF Struct Primitive read"){
using namespace saw;
- data<TestStruct, encode::Netcdf> net{"./data/simple.nc"};
+ data<schema::TestStruct, encode::Netcdf> netcdf{"./data/primitive.nc"};
- data<TestStruct, encode::KelSimple> kel;
+ data<schema::TestStruct, encode::Native> native;
- codec<TestStruct, encode::Netcdf> codec;
+ codec<schema::TestStruct, encode::Netcdf> 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<schema::TestArrayStruct, encode::Netcdf> netcdf{"./data/array.nc"};
+
+ data<schema::TestArrayStruct, encode::Native> native;
+
+ codec<schema::TestArrayStruct, encode::Netcdf> 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");
+ }
+ }
}
}