From 180608f8c4bd6848450e9e5a0347ea8c7c5db721 Mon Sep 17 00:00:00 2001 From: Shahram Najm Date: Fri, 19 Jan 2024 13:53:25 +0000 Subject: [PATCH] Testing: wmo_read_any_from_file --- tests/CMakeLists.txt | 2 ++ tests/wmo_read_any_from_file.cc | 36 +++++++++++++++++++++++ tests/wmo_read_any_from_file.sh | 51 +++++++++++++++++++++++++++++++++ 3 files changed, 89 insertions(+) create mode 100644 tests/wmo_read_any_from_file.cc create mode 100755 tests/wmo_read_any_from_file.sh diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 19661bb91..d6bb281d1 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -12,6 +12,7 @@ list(APPEND test_c_bins list_codetable_flagtable_keys wmo_read_bufr_from_file wmo_read_gts_from_file + wmo_read_any_from_file grib_bpv_limit grib_double_cmp read_any @@ -182,6 +183,7 @@ if( HAVE_BUILD_TOOLS ) grib_clone_headers_only wmo_read_bufr_from_file wmo_read_gts_from_file + wmo_read_any_from_file bufr_templates bufr_rdbSubTypes bufr_dump_data diff --git a/tests/wmo_read_any_from_file.cc b/tests/wmo_read_any_from_file.cc new file mode 100644 index 000000000..8e480a544 --- /dev/null +++ b/tests/wmo_read_any_from_file.cc @@ -0,0 +1,36 @@ +/* + * (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 + +#include "grib_api_internal.h" + +#define SIZE 1024 * 1024 +char buffer[SIZE]; + +int main(int argc, char** argv) +{ + int err = 0; + FILE* in = NULL; + size_t len = SIZE; + + if (argc != 2) return 1; + + in = fopen(argv[1], "r"); + if (!in) return 1; + + err = wmo_read_any_from_file(in, buffer, &len); + if (err == GRIB_END_OF_FILE && len == 0) + printf("end of file\n"); + + printf("ANY: size: %zu err: %d (%s)\n", len, err, grib_get_error_message(err)); + + return err; +} diff --git a/tests/wmo_read_any_from_file.sh b/tests/wmo_read_any_from_file.sh new file mode 100755 index 000000000..2edf10772 --- /dev/null +++ b/tests/wmo_read_any_from_file.sh @@ -0,0 +1,51 @@ +#!/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 + +label="wmo_read_any_from_file_test" +tempText=temp.$label.txt +tempBufr=temp.$label.bufr + +if [ $ECCODES_ON_WINDOWS -eq 1 ]; then + echo "$0: This test is currently disabled on Windows" + exit 0 +fi + +${test_dir}/wmo_read_any_from_file $data_dir/bufr/aaen_55.bufr +${test_dir}/wmo_read_any_from_file $data_dir/sample.grib2 +${test_dir}/wmo_read_any_from_file $data_dir/second_ord_rbr.grib1 +${test_dir}/wmo_read_any_from_file $data_dir/gts/EGRR20150317121020_00493212.DAT +${test_dir}/wmo_read_any_from_file $ECCODES_SAMPLES_PATH/wrap.tmpl +${test_dir}/wmo_read_any_from_file $ECCODES_SAMPLES_PATH/budg.tmpl +${test_dir}/wmo_read_any_from_file $ECCODES_SAMPLES_PATH/hdf5.tmpl + +# Bad input +echo BUFR > $tempBufr +set +e +${test_dir}/wmo_read_any_from_file $tempBufr > $tempText +status=$? +set -e +[ $status -ne 0 ] +cat $tempText +grep -q "End of resource reached when reading message" $tempText + + +set +e +${test_dir}/wmo_read_any_from_file $data_dir > $tempText +status=$? +set -e +[ $status -ne 0 ] +cat $tempText +grep -q "Input output problem" $tempText + + +# Clean up +rm -f $tempText $tempBufr