From 078d429cdd9c41a992efee211f84c0b9c1464880 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Wed, 28 Jun 2023 17:30:32 +0100 Subject: [PATCH] Testing: grib_handle_new_from_partial_message --- tests/CMakeLists.txt | 2 ++ tests/grib_partial_message.cc | 54 +++++++++++++++++++++++++++++++++++ tests/grib_partial_message.sh | 17 +++++++++++ 3 files changed, 73 insertions(+) create mode 100644 tests/grib_partial_message.cc create mode 100755 tests/grib_partial_message.sh diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index d3ebf38ba..bb45a15a4 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -31,6 +31,7 @@ list(APPEND test_c_bins grib_optimize_scaling grib_optimize_scaling_sh grib_set_force + grib_partial_message grib_ecc-386 grib_ecc-1467 grib_ecc-1431 @@ -146,6 +147,7 @@ if( HAVE_BUILD_TOOLS ) grib_double_cmp grib_change_packing grib_grid_space_view + grib_partial_message grib_count bufr_templates bufr_dump_data diff --git a/tests/grib_partial_message.cc b/tests/grib_partial_message.cc new file mode 100644 index 000000000..e2030b478 --- /dev/null +++ b/tests/grib_partial_message.cc @@ -0,0 +1,54 @@ +/* + * (C) Copyright 2005- ECMWF. + * + * This software is licensed under the terms of the Apache Licence Version 2.0 + * which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. + * + * In applying this licence, ECMWF does not waive the privileges and immunities granted to it by + * virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. + */ + +#include "grib_api_internal.h" + +int main(int argc, char** argv) +{ + FILE* in = NULL; + int err = 0; + grib_handle* h_full = NULL; + grib_keys_iterator* iter = NULL; + const char* name = NULL; + const void* msg1 = NULL; + const char* infilename = NULL; + size_t size1 = 0; + grib_handle* h_partial = 0; + + Assert(argc == 2); + infilename = argv[1]; + + printf("Processing file %s\n", infilename); + in = fopen(infilename, "rb"); + Assert(in); + + h_full = grib_handle_new_from_file(0, in, &err); + Assert(h_full); + Assert(!err); + + GRIB_CHECK(grib_get_message_headers(h_full, &msg1, &size1), 0); + + h_partial = grib_handle_new_from_partial_message(h_full->context, msg1, size1); + Assert(h_partial); + + iter = grib_keys_iterator_new(h_partial, GRIB_KEYS_ITERATOR_SKIP_COMPUTED, NULL); + Assert(iter); + + while (grib_keys_iterator_next(iter)) { + name = grib_keys_iterator_get_name(iter); + printf("Header key=%s\n", name); + } + + grib_keys_iterator_delete(iter); + grib_handle_delete(h_partial); + grib_handle_delete(h_full); + fclose(in); + return 0; +} diff --git a/tests/grib_partial_message.sh b/tests/grib_partial_message.sh new file mode 100755 index 000000000..b63fa2488 --- /dev/null +++ b/tests/grib_partial_message.sh @@ -0,0 +1,17 @@ +#!/bin/sh +# (C) Copyright 2005- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# In applying this licence, ECMWF does not waive the privileges and immunities granted to it by +# virtue of its status as an intergovernmental organisation nor does it submit to any jurisdiction. +# + +. ./include.ctest.sh + +input=${data_dir}/test_file.grib2 +$EXEC ${test_dir}/grib_partial_message $input + +input=${data_dir}/spectral_compex.grib1 +$EXEC ${test_dir}/grib_partial_message $input