ECC-335: Added further tests

This commit is contained in:
Shahram Najm 2016-09-23 15:10:36 +01:00
parent f5d5356b39
commit 2333add502
5 changed files with 51 additions and 8 deletions

View File

@ -158,6 +158,9 @@ static int notify_change(grib_action* act, grib_accessor * notified,
loader.lookup_long = grib_lookup_long_from_handle;
loader.init_accessor = grib_init_accessor_from_handle;
if (h->kid != NULL) {
return GRIB_INTERNAL_ERROR;
}
Assert(h->kid == NULL);
tmp_handle->loader = &loader;

View File

@ -145,7 +145,8 @@ int grib_handle_delete ( grib_handle* h )
grib_dependency *d = h->dependencies;
grib_dependency *n;
Assert ( h->kid == NULL );
if ( h->kid != NULL )
return GRIB_INTERNAL_ERROR;
while ( d )
{

View File

@ -686,6 +686,14 @@ grib_handle* grib_util_set_spec2(grib_handle* h,
return NULL;
}
if (packing_spec->deleteLocalDefinition) {
/* TODO: We need two calls because of grib1/grib2 issues re removing local defs! */
if (editionNumber==1){
SET_LONG_VALUE("deleteLocalDefinition",1);
}
SET_LONG_VALUE("setLocalDefinition", 0);
}
len=100;
grib_get_string(h,"packingType",input_packing_type,&len);
grib_get_long(h,"bitsPerValue",&input_bits_per_value);
@ -1278,10 +1286,16 @@ grib_handle* grib_util_set_spec2(grib_handle* h,
}
if (packing_spec->editionNumber && packing_spec->editionNumber!=editionNumber) {
grib_set_long(outh,"edition", packing_spec->editionNumber);
*err = grib_set_long(outh,"edition", packing_spec->editionNumber);
if (*err != GRIB_SUCCESS) {
fprintf(stderr,"GRIB_UTIL_SET_SPEC: Failed to change edition to %ld: %s\n",
packing_spec->editionNumber, grib_get_error_message(*err));
goto cleanup;
}
}
if (packing_spec->deleteLocalDefinition) {
/* TODO: We need two calls because of grib1/grib2 issues re removing local defs! */
grib_set_long(outh,"setLocalDefinition", 0);
grib_set_long(outh,"deleteLocalDefinition", 1);
}

View File

@ -167,6 +167,6 @@ int main(int argc, char *argv[])
test_regular_ll(infile, outfile);
test_reduced_gg(infile, outfile);
printf("ALL OK\n");
return 0;
}

View File

@ -9,13 +9,17 @@
#
. ./include.sh
#test_dir="valgrind --error-exitcode=1 "$test_dir
### Regular Lat/Lon Grid
###########################################
# --------------------------------------------------
# Regular Lat/Lon Grid
# --------------------------------------------------
infile=../data/latlon.grib
outfile=out.grib_util_set_spec.grib
tempOut=temp.grib_util_set_spec.grib
rm -f $outfile
# GRIB1 with local definition for MARS
${test_dir}grib_util_set_spec $infile $outfile > /dev/null
res=`${tools_dir}grib_get -p edition,section2Used,Ni,Nj,numberOfValues,bitsPerValue $outfile`
@ -24,8 +28,29 @@ res=`${tools_dir}grib_get -p edition,section2Used,Ni,Nj,numberOfValues,bitsPerVa
# Check output file geometry
${tools_dir}grib_get_data $outfile > /dev/null
### Reduced Gaussian Grid N=32 second order packing
###########################################
# Remove the local definition from input
${tools_dir}grib_set -s deleteLocalDefinition=1 $infile $tempOut
${test_dir}grib_util_set_spec $tempOut $outfile > /dev/null
# Add another grib1 local definition (which is not in grib2)
${tools_dir}grib_set -s setLocalDefinition=1,localDefinitionNumber=5 $infile $tempOut
infile=$tempOut
${test_dir}grib_util_set_spec $tempOut $outfile > /dev/null
res=`${tools_dir}grib_get -p edition,section2Used $outfile`
[ "$res" = "2 0" ]
# GRIB2 input with local definition
infile=../data/regular_latlon_surface.grib2
${test_dir}grib_util_set_spec $infile $outfile > /dev/null
grib_check_key_equals $outfile section2Used 0
# GRIB2 input without local definition
infile=$ECCODES_SAMPLES_PATH/GRIB2.tmpl
${test_dir}grib_util_set_spec $infile $outfile > /dev/null
grib_check_key_equals $outfile section2Used 0
# --------------------------------------------------
# Reduced Gaussian Grid N=32 second order packing
# --------------------------------------------------
infile=../data/reduced_gaussian_model_level.grib2
outfile=out.grib_util_set_spec.grib
rm -f $outfile
@ -57,4 +82,4 @@ ${tools_dir}grib_get_data $outfile > /dev/null
### Clean up
rm -f $outfile
rm -f $outfile $tempOut