diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index d6bb281d1..96e828a69 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -13,6 +13,7 @@ list(APPEND test_c_bins wmo_read_bufr_from_file wmo_read_gts_from_file wmo_read_any_from_file + wmo_read_any_from_stream grib_bpv_limit grib_double_cmp read_any @@ -184,6 +185,7 @@ if( HAVE_BUILD_TOOLS ) wmo_read_bufr_from_file wmo_read_gts_from_file wmo_read_any_from_file + wmo_read_any_from_stream bufr_templates bufr_rdbSubTypes bufr_dump_data diff --git a/tests/wmo_read_any_from_stream.cc b/tests/wmo_read_any_from_stream.cc new file mode 100644 index 000000000..003a4b51c --- /dev/null +++ b/tests/wmo_read_any_from_stream.cc @@ -0,0 +1,48 @@ +/* + * (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]; + +static long readcb(void* data, void* buffer, long len) +{ + //long l = handle->read(buffer, len); + // ecCodes interprets a -1 as EOF + //return l == 0 ? -1 : l; + return -1; +} + +int main(int argc, char** argv) +{ + int err = 0; + FILE* in = NULL; + size_t len = SIZE; + grib_handle* h = NULL; + + if (argc != 2) return 1; + + in = fopen(argv[1], "r"); + if (!in) return 1; + + h = grib_handle_new_from_file(0, in, &err); + if (!h) return 1; + + const void* data = NULL; + GRIB_CHECK(grib_get_message(h, &data, &len), 0); + + err = wmo_read_any_from_stream( (void*)data, &readcb, buffer, &len ); + printf("err = %d \n",err); + + return 0; +} diff --git a/tests/wmo_read_any_from_stream.sh b/tests/wmo_read_any_from_stream.sh new file mode 100755 index 000000000..cb1040478 --- /dev/null +++ b/tests/wmo_read_any_from_stream.sh @@ -0,0 +1,25 @@ +#!/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_stream_test" +tempText=temp.$label.txt +tempGrib=temp.$label.grib + +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_stream $data_dir/sample.grib2 + +# Clean up +rm -f $tempText $tempGrib