mirror of https://github.com/ecmwf/eccodes.git
ECC-288: bufr_compare -R key=tolerance does not work
This commit is contained in:
parent
79b1a2f87b
commit
c8cb203ee3
|
@ -57,6 +57,7 @@ list( APPEND tests2
|
|||
bufr_change_edition
|
||||
ecc-197
|
||||
ecc-286
|
||||
ecc-288
|
||||
gts_get
|
||||
gts_ls
|
||||
gts_compare
|
||||
|
|
|
@ -0,0 +1,42 @@
|
|||
#!/bin/sh
|
||||
# Copyright 2005-2016 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.sh
|
||||
|
||||
# ---------------------------------------------------------
|
||||
# This is the test for the JIRA issue ECC-288
|
||||
# It tests bufr_compare with a relative tolerance
|
||||
# ---------------------------------------------------------
|
||||
cd ${data_dir}/bufr
|
||||
label="ecc_288_test"
|
||||
|
||||
tempRules=temp.${label}.filter
|
||||
tempOut=temp.${label}.out
|
||||
BufrFile=syno_1.bufr
|
||||
|
||||
cat > $tempRules <<EOF
|
||||
set localLongitude=151.831;
|
||||
write;
|
||||
EOF
|
||||
|
||||
${tools_dir}bufr_filter -o $tempOut $tempRules $BufrFile
|
||||
|
||||
# There is a difference in localLongitude, rel error=6.58627e-06
|
||||
# So this should fail
|
||||
set +e
|
||||
${tools_dir}bufr_compare $tempOut $BufrFile
|
||||
status=$?
|
||||
set -e
|
||||
[ $status -eq 1 ]
|
||||
|
||||
# Now apply the option and now it should pass
|
||||
${tools_dir}bufr_compare -R localLongitude=6.59e-06 $tempOut $BufrFile
|
||||
|
||||
rm -rf $tempOut $tempRules
|
|
@ -313,6 +313,16 @@ int grib_tool_init(grib_runtime_options* options)
|
|||
if (grib_options_on("t:"))
|
||||
tolerance_factor=atof(grib_options_get_option("t:"));
|
||||
|
||||
if (grib_options_on("R:")) {
|
||||
char* sarg=grib_options_get_option("R:");
|
||||
options->tolerance_count=MAX_KEYS;
|
||||
ret=parse_keyval_string(grib_tool_name, sarg,1,GRIB_TYPE_DOUBLE,options->tolerance,&(options->tolerance_count));
|
||||
if (ret == GRIB_INVALID_ARGUMENT) {
|
||||
usage();
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
/* Check for 2nd file being a directory. If so, we assume user is comparing to a file */
|
||||
/* with the same name as first file in that directory */
|
||||
|
|
Loading…
Reference in New Issue