diff --git a/test_utils/CMakeLists.txt b/test_utils/CMakeLists.txt index 4fa4cadee..272c8fdbe 100644 --- a/test_utils/CMakeLists.txt +++ b/test_utils/CMakeLists.txt @@ -48,6 +48,20 @@ gu_copy_test_data(ref_grid_172.landmask.grib1) gu_copy_test_data(ref_grid_220.landmask.grib1) gu_copy_test_data(tocgrib2.nml) gu_copy_test_data(tocgrib2_bad.nml) +gu_copy_test_data(ref_gdaswave.t00z.wcoast.0p16.f000.g12_simple.grib2.idx) +gu_copy_test_data(ref_gdaswave.t00z.wcoast.0p16.f000.g12_complex.grib2.idx) +gu_copy_test_data(ref_gdaswave.t00z.wcoast.0p16.f000.g12_complex_m.grib2.idx) +gu_copy_test_data(ref_gdaswave.t00z.wcoast.0p16.f000.g12_complex_m0.grib2.idx) +gu_copy_test_data(ref_gdaswave.t00z.wcoast.0p16.f000.g12_complex1.grib2.idx) +gu_copy_test_data(ref_gdaswave.t00z.wcoast.0p16.f000.g12_complex2.grib2.idx) +gu_copy_test_data(ref_gdaswave.t00z.wcoast.0p16.f000.g12_png.grib2.idx) +gu_copy_test_data(ref_gdaswave.t00z.wcoast.0p16.f000.g22_simple.grib2.idx) +gu_copy_test_data(ref_gdaswave.t00z.wcoast.0p16.f000.g22_complex.grib2.idx) +gu_copy_test_data(ref_gdaswave.t00z.wcoast.0p16.f000.g22_complex_m.grib2.idx) +gu_copy_test_data(ref_gdaswave.t00z.wcoast.0p16.f000.g22_complex_m0.grib2.idx) +gu_copy_test_data(ref_gdaswave.t00z.wcoast.0p16.f000.g22_complex1.grib2.idx) +gu_copy_test_data(ref_gdaswave.t00z.wcoast.0p16.f000.g22_complex2.grib2.idx) +gu_copy_test_data(ref_gdaswave.t00z.wcoast.0p16.f000.g22_png.grib2.idx) if(FTP_TEST_FILES) message(STATUS "Getting FTP test files...") diff --git a/test_utils/data/ref_gdaswave.t00z.wcoast.0p16.f000.g12_complex.grib2.idx b/test_utils/data/ref_gdaswave.t00z.wcoast.0p16.f000.g12_complex.grib2.idx new file mode 100644 index 000000000..8e3284520 Binary files /dev/null and b/test_utils/data/ref_gdaswave.t00z.wcoast.0p16.f000.g12_complex.grib2.idx differ diff --git a/test_utils/data/ref_gdaswave.t00z.wcoast.0p16.f000.g12_complex1.grib2.idx b/test_utils/data/ref_gdaswave.t00z.wcoast.0p16.f000.g12_complex1.grib2.idx new file mode 100644 index 000000000..d2a1d6ddd Binary files /dev/null and b/test_utils/data/ref_gdaswave.t00z.wcoast.0p16.f000.g12_complex1.grib2.idx differ diff --git a/test_utils/data/ref_gdaswave.t00z.wcoast.0p16.f000.g12_complex2.grib2.idx b/test_utils/data/ref_gdaswave.t00z.wcoast.0p16.f000.g12_complex2.grib2.idx new file mode 100644 index 000000000..2d667c564 Binary files /dev/null and b/test_utils/data/ref_gdaswave.t00z.wcoast.0p16.f000.g12_complex2.grib2.idx differ diff --git a/test_utils/data/ref_gdaswave.t00z.wcoast.0p16.f000.g12_complex_m.grib2.idx b/test_utils/data/ref_gdaswave.t00z.wcoast.0p16.f000.g12_complex_m.grib2.idx new file mode 100644 index 000000000..3508621dc Binary files /dev/null and b/test_utils/data/ref_gdaswave.t00z.wcoast.0p16.f000.g12_complex_m.grib2.idx differ diff --git a/test_utils/data/ref_gdaswave.t00z.wcoast.0p16.f000.g12_complex_m0.grib2.idx b/test_utils/data/ref_gdaswave.t00z.wcoast.0p16.f000.g12_complex_m0.grib2.idx new file mode 100644 index 000000000..b1e6cea0d Binary files /dev/null and b/test_utils/data/ref_gdaswave.t00z.wcoast.0p16.f000.g12_complex_m0.grib2.idx differ diff --git a/test_utils/data/ref_gdaswave.t00z.wcoast.0p16.f000.g12_png.grib2.idx b/test_utils/data/ref_gdaswave.t00z.wcoast.0p16.f000.g12_png.grib2.idx new file mode 100644 index 000000000..551f92c4c Binary files /dev/null and b/test_utils/data/ref_gdaswave.t00z.wcoast.0p16.f000.g12_png.grib2.idx differ diff --git a/test_utils/data/ref_gdaswave.t00z.wcoast.0p16.f000.g12_simple.grib2.idx b/test_utils/data/ref_gdaswave.t00z.wcoast.0p16.f000.g12_simple.grib2.idx new file mode 100644 index 000000000..12250d0a7 Binary files /dev/null and b/test_utils/data/ref_gdaswave.t00z.wcoast.0p16.f000.g12_simple.grib2.idx differ diff --git a/test_utils/data/ref_gdaswave.t00z.wcoast.0p16.f000.g22_complex.grib2.idx b/test_utils/data/ref_gdaswave.t00z.wcoast.0p16.f000.g22_complex.grib2.idx new file mode 100644 index 000000000..1392e16aa Binary files /dev/null and b/test_utils/data/ref_gdaswave.t00z.wcoast.0p16.f000.g22_complex.grib2.idx differ diff --git a/test_utils/data/ref_gdaswave.t00z.wcoast.0p16.f000.g22_complex1.grib2.idx b/test_utils/data/ref_gdaswave.t00z.wcoast.0p16.f000.g22_complex1.grib2.idx new file mode 100644 index 000000000..a22a78835 Binary files /dev/null and b/test_utils/data/ref_gdaswave.t00z.wcoast.0p16.f000.g22_complex1.grib2.idx differ diff --git a/test_utils/data/ref_gdaswave.t00z.wcoast.0p16.f000.g22_complex2.grib2.idx b/test_utils/data/ref_gdaswave.t00z.wcoast.0p16.f000.g22_complex2.grib2.idx new file mode 100644 index 000000000..4a17f9e21 Binary files /dev/null and b/test_utils/data/ref_gdaswave.t00z.wcoast.0p16.f000.g22_complex2.grib2.idx differ diff --git a/test_utils/data/ref_gdaswave.t00z.wcoast.0p16.f000.g22_complex_m.grib2.idx b/test_utils/data/ref_gdaswave.t00z.wcoast.0p16.f000.g22_complex_m.grib2.idx new file mode 100644 index 000000000..5e966b4e9 Binary files /dev/null and b/test_utils/data/ref_gdaswave.t00z.wcoast.0p16.f000.g22_complex_m.grib2.idx differ diff --git a/test_utils/data/ref_gdaswave.t00z.wcoast.0p16.f000.g22_complex_m0.grib2.idx b/test_utils/data/ref_gdaswave.t00z.wcoast.0p16.f000.g22_complex_m0.grib2.idx new file mode 100644 index 000000000..238db8b99 Binary files /dev/null and b/test_utils/data/ref_gdaswave.t00z.wcoast.0p16.f000.g22_complex_m0.grib2.idx differ diff --git a/test_utils/data/ref_gdaswave.t00z.wcoast.0p16.f000.g22_png.grib2.idx b/test_utils/data/ref_gdaswave.t00z.wcoast.0p16.f000.g22_png.grib2.idx new file mode 100644 index 000000000..a00134c83 Binary files /dev/null and b/test_utils/data/ref_gdaswave.t00z.wcoast.0p16.f000.g22_png.grib2.idx differ diff --git a/test_utils/data/ref_gdaswave.t00z.wcoast.0p16.f000.g22_simple.grib2.idx b/test_utils/data/ref_gdaswave.t00z.wcoast.0p16.f000.g22_simple.grib2.idx new file mode 100644 index 000000000..8d9baf643 Binary files /dev/null and b/test_utils/data/ref_gdaswave.t00z.wcoast.0p16.f000.g22_simple.grib2.idx differ diff --git a/test_utils/run_cnvgrib_tests.sh b/test_utils/run_cnvgrib_tests.sh index 61ac3779c..e70714cdc 100644 --- a/test_utils/run_cnvgrib_tests.sh +++ b/test_utils/run_cnvgrib_tests.sh @@ -2,39 +2,111 @@ # This is a test script for the NCEPLIBS-grib_util project. # # Ed Hartnett, 12/25/21 +# Alyson Stahl, 1/29/25 set -e echo "" echo "*** Running cnvgrib test" +# Show all options +../utils/cnvgrib -h + +# Run with zero arguments +../utils/cnvgrib && exit 2 + +# Run with incorrect number of arguments +../utils/cnvgrib -g21 data/ref_gdaswave.t00z.wcoast.0p16.f000.grib2 && exit 2 + +# Run with no -gxx option +../utils/cnvgrib -p0 data/ref_gdaswave.t00z.wcoast.0p16.f000.grib2 test_gdaswave.t00z.wcoast.0p16.f000.grib1 && exit 2 + +# Invalid master table version +../utils/cnvgrib -g21 -mastertable_ver_0 data/ref_gdaswave.t00z.wcoast.0p16.f000.grib2 test_gdaswave.t00z.wcoast.0p16.f000.grib1 && exit 2 + +# Invalid input file +../utils/cnvgrib -g21 - test_gdaswave.t00z.wcoast.0p16.f000.grib1 && exit 3 + +# Invalid conversion option +../utils/cnvgrib -g11 data/ref_gdaswave.t00z.wcoast.0p16.f000.grib2 test_gdaswave.t00z.wcoast.0p16.f000.grib1 && exit 5 + # Convert test file to GRIB1. ../utils/cnvgrib -g21 data/ref_gdaswave.t00z.wcoast.0p16.f000.grib2 test_gdaswave.t00z.wcoast.0p16.f000.grib1 -# Generate an inventory of the GRIB1 file. -#../src/wgrib/wgrib test_gdaswave.t00z.wcoast.0p16.f000.grib1 &> test_gdaswave.t00z.wcoast.0p16.f000.grib1.inventory.txt +# Convert GRIB1 output back to GRIB2, create index, and compare to expected output +# First 120 bytes contain differences, so ignore them. + +# Simple packing +../utils/cnvgrib -g12 -p0 test_gdaswave.t00z.wcoast.0p16.f000.grib1 test_gdaswave.t00z.wcoast.0p16.f000.g12_simple.grib2 +../utils/grb2index 1 test_gdaswave.t00z.wcoast.0p16.f000.g12_simple.grib2 test_gdaswave.t00z.wcoast.0p16.f000.g12_simple.grib2.idx +cmp -i 120 test_gdaswave.t00z.wcoast.0p16.f000.g12_simple.grib2.idx data/ref_gdaswave.t00z.wcoast.0p16.f000.g12_simple.grib2.idx + +# Complex Packing +../utils/cnvgrib -g12 -p2 test_gdaswave.t00z.wcoast.0p16.f000.grib1 test_gdaswave.t00z.wcoast.0p16.f000.g12_complex.grib2 +../utils/grb2index 1 test_gdaswave.t00z.wcoast.0p16.f000.g12_complex.grib2 test_gdaswave.t00z.wcoast.0p16.f000.g12_complex.grib2.idx +cmp -i 120 test_gdaswave.t00z.wcoast.0p16.f000.g12_complex.grib2.idx data/ref_gdaswave.t00z.wcoast.0p16.f000.g12_complex.grib2.idx + +# Complex Packing w/ primary missing values +../utils/cnvgrib -g12 -p2 -m test_gdaswave.t00z.wcoast.0p16.f000.grib1 test_gdaswave.t00z.wcoast.0p16.f000.g12_complex_m.grib2 +../utils/grb2index 1 test_gdaswave.t00z.wcoast.0p16.f000.g12_complex_m.grib2 test_gdaswave.t00z.wcoast.0p16.f000.g12_complex_m.grib2.idx +cmp -i 120 test_gdaswave.t00z.wcoast.0p16.f000.g12_complex_m.grib2.idx data/ref_gdaswave.t00z.wcoast.0p16.f000.g12_complex_m.grib2.idx + +# Complex Packing w/ no explicit missing values included +../utils/cnvgrib -g12 -p2 -m0 test_gdaswave.t00z.wcoast.0p16.f000.grib1 test_gdaswave.t00z.wcoast.0p16.f000.g12_complex_m0.grib2 +../utils/grb2index 1 test_gdaswave.t00z.wcoast.0p16.f000.g12_complex_m0.grib2 test_gdaswave.t00z.wcoast.0p16.f000.g12_complex_m0.grib2.idx +cmp -i 120 test_gdaswave.t00z.wcoast.0p16.f000.g12_complex_m0.grib2.idx data/ref_gdaswave.t00z.wcoast.0p16.f000.g12_complex_m0.grib2.idx + +# Complex Packing w/ 1st order diffs +../utils/cnvgrib -g12 -p31 test_gdaswave.t00z.wcoast.0p16.f000.grib1 test_gdaswave.t00z.wcoast.0p16.f000.g12_complex1.grib2 +../utils/grb2index 1 test_gdaswave.t00z.wcoast.0p16.f000.g12_complex1.grib2 test_gdaswave.t00z.wcoast.0p16.f000.g12_complex1.grib2.idx +cmp -i 120 test_gdaswave.t00z.wcoast.0p16.f000.g12_complex1.grib2.idx data/ref_gdaswave.t00z.wcoast.0p16.f000.g12_complex1.grib2.idx + +# Complex Packing w/ 2nd order diffs +../utils/cnvgrib -g12 -p32 test_gdaswave.t00z.wcoast.0p16.f000.grib1 test_gdaswave.t00z.wcoast.0p16.f000.g12_complex2.grib2 +../utils/grb2index 1 test_gdaswave.t00z.wcoast.0p16.f000.g12_complex2.grib2 test_gdaswave.t00z.wcoast.0p16.f000.g12_complex2.grib2.idx +cmp -i 120 test_gdaswave.t00z.wcoast.0p16.f000.g12_complex2.grib2.idx data/ref_gdaswave.t00z.wcoast.0p16.f000.g12_complex2.grib2.idx + +# PNG Packing +../utils/cnvgrib -g12 -p41 test_gdaswave.t00z.wcoast.0p16.f000.grib1 test_gdaswave.t00z.wcoast.0p16.f000.g12_png.grib2 +../utils/grb2index 1 test_gdaswave.t00z.wcoast.0p16.f000.g12_png.grib2 test_gdaswave.t00z.wcoast.0p16.f000.g12_png.grib2.idx +cmp -i 120 test_gdaswave.t00z.wcoast.0p16.f000.g12_png.grib2.idx data/ref_gdaswave.t00z.wcoast.0p16.f000.g12_png.grib2.idx + +# Convert GRIB2 to GRIB2, create index, and compare to expected output +# First 120 bytes contain differences, so ignore them. -# Check against expected output. -#cmp test_gdaswave.t00z.wcoast.0p16.f000.grib1.inventory.txt data/ref_gdaswave_grib1_inventory.txt +# Simple packing +../utils/cnvgrib -g22 -p0 data/ref_gdaswave.t00z.wcoast.0p16.f000.grib2 test_gdaswave.t00z.wcoast.0p16.f000.g22_simple.grib2 +../utils/grb2index 1 test_gdaswave.t00z.wcoast.0p16.f000.g22_simple.grib2 test_gdaswave.t00z.wcoast.0p16.f000.g22_simple.grib2.idx +cmp -i 120 test_gdaswave.t00z.wcoast.0p16.f000.g22_simple.grib2.idx data/ref_gdaswave.t00z.wcoast.0p16.f000.g22_simple.grib2.idx -# Convert GRIB1 output back to GRIB2. -../utils/cnvgrib -g12 test_gdaswave.t00z.wcoast.0p16.f000.grib1 test_gdaswave.t00z.wcoast.0p16.f000.grib2 +# Complex Packing +../utils/cnvgrib -g22 -p2 data/ref_gdaswave.t00z.wcoast.0p16.f000.grib2 test_gdaswave.t00z.wcoast.0p16.f000.g22_complex.grib2 +../utils/grb2index 1 test_gdaswave.t00z.wcoast.0p16.f000.g22_complex.grib2 test_gdaswave.t00z.wcoast.0p16.f000.g22_complex.grib2.idx +cmp -i 120 test_gdaswave.t00z.wcoast.0p16.f000.g22_complex.grib2.idx data/ref_gdaswave.t00z.wcoast.0p16.f000.g22_complex.grib2.idx -# Create an index of a GRIB2 file. -../utils/grb2index 1 test_gdaswave.t00z.wcoast.0p16.f000.grib2 test_gdaswave.t00z.wcoast.0p16.f000.grib2.idx +# Complex Packing w/ primary missing values +../utils/cnvgrib -g22 -p2 -m data/ref_gdaswave.t00z.wcoast.0p16.f000.grib2 test_gdaswave.t00z.wcoast.0p16.f000.g22_complex_m.grib2 +../utils/grb2index 1 test_gdaswave.t00z.wcoast.0p16.f000.g22_complex_m.grib2 test_gdaswave.t00z.wcoast.0p16.f000.g22_complex_m.grib2.idx +cmp -i 120 test_gdaswave.t00z.wcoast.0p16.f000.g22_complex_m.grib2.idx data/ref_gdaswave.t00z.wcoast.0p16.f000.g22_complex_m.grib2.idx -# Check against expected output. First 120 bytes contain differences, -# so ignore them. -cmp -i 120 test_gdaswave.t00z.wcoast.0p16.f000.grib2.idx data/ref_gdaswave.t00z.wcoast.0p16.f000.grib2.idx +# Complex Packing w/ no explicit missing values included +../utils/cnvgrib -g22 -p2 -m0 data/ref_gdaswave.t00z.wcoast.0p16.f000.grib2 test_gdaswave.t00z.wcoast.0p16.f000.g22_complex_m0.grib2 +../utils/grb2index 1 test_gdaswave.t00z.wcoast.0p16.f000.g22_complex_m0.grib2 test_gdaswave.t00z.wcoast.0p16.f000.g22_complex_m0.grib2.idx +cmp -i 120 test_gdaswave.t00z.wcoast.0p16.f000.g22_complex_m0.grib2.idx data/ref_gdaswave.t00z.wcoast.0p16.f000.g22_complex_m0.grib2.idx -# Convert test file to another GRIB2 file. -../utils/cnvgrib -g22 data/ref_gdaswave.t00z.wcoast.0p16.f000.grib2 test_gdaswave.t00z.wcoast.0p16.f000_2.grib2 +# Complex Packing w/ 1st order diffs +../utils/cnvgrib -g22 -p31 data/ref_gdaswave.t00z.wcoast.0p16.f000.grib2 test_gdaswave.t00z.wcoast.0p16.f000.g22_complex1.grib2 +../utils/grb2index 1 test_gdaswave.t00z.wcoast.0p16.f000.g22_complex1.grib2 test_gdaswave.t00z.wcoast.0p16.f000.g22_complex1.grib2.idx +cmp -i 120 test_gdaswave.t00z.wcoast.0p16.f000.g22_complex1.grib2.idx data/ref_gdaswave.t00z.wcoast.0p16.f000.g22_complex1.grib2.idx -# Create an index of the new GRIB2 file. -../utils/grb2index 1 test_gdaswave.t00z.wcoast.0p16.f000_2.grib2 test_gdaswave.t00z.wcoast.0p16.f000_2.grib2.idx +# Complex Packing w/ 2nd order diffs +../utils/cnvgrib -g22 -p32 data/ref_gdaswave.t00z.wcoast.0p16.f000.grib2 test_gdaswave.t00z.wcoast.0p16.f000.g22_complex2.grib2 +../utils/grb2index 1 test_gdaswave.t00z.wcoast.0p16.f000.g22_complex2.grib2 test_gdaswave.t00z.wcoast.0p16.f000.g22_complex2.grib2.idx +cmp -i 120 test_gdaswave.t00z.wcoast.0p16.f000.g22_complex2.grib2.idx data/ref_gdaswave.t00z.wcoast.0p16.f000.g22_complex2.grib2.idx -# Check against expected output. First 120 bytes contain differences, -# so ignore them. -cmp -i 120 test_gdaswave.t00z.wcoast.0p16.f000_2.grib2.idx data/ref_gdaswave.t00z.wcoast.0p16.f000_2.grib2.idx +# PNG Packing +../utils/cnvgrib -g22 -p41 data/ref_gdaswave.t00z.wcoast.0p16.f000.grib2 test_gdaswave.t00z.wcoast.0p16.f000.g22_png.grib2 +../utils/grb2index 1 test_gdaswave.t00z.wcoast.0p16.f000.g22_png.grib2 test_gdaswave.t00z.wcoast.0p16.f000.g22_png.grib2.idx +cmp -i 120 test_gdaswave.t00z.wcoast.0p16.f000.g22_png.grib2.idx data/ref_gdaswave.t00z.wcoast.0p16.f000.g22_png.grib2.idx echo "*** SUCCESS!" exit 0