commit 40776d0efa38f50cfdf85e2c097bc5d2b0dba285
parent b80c0acdb071260cfa7ff41d0cbc5a58598f28e8
Author: Vincent Forest <vincent.forest@meso-star.com>
Date: Wed, 11 Oct 2023 10:55:02 +0200
Add a new test to check the validity ranges of loaded data
Updated the Makefile and the naming convention of the file loaded by the
test_htmie_load test to simplify test management. Particularly for the
use of Makefile inference rules to extract data from netCDF files.
Diffstat:
5 files changed, 69 insertions(+), 24 deletions(-)
diff --git a/.gitignore b/.gitignore
@@ -9,6 +9,9 @@ test*
.config
.test
tags
-*.pc
-Mie_LUT_Cloud_*
+*.g
+*.lambda
+*.macs
+*.mscs
*.nc
+*.pc
diff --git a/Makefile b/Makefile
@@ -118,31 +118,44 @@ lint:
TEST_SRC = src/test_htmie.c src/test_htmie_load.c
TEST_OBJ = $(TEST_SRC:.c=.o)
TEST_DEP = $(TEST_SRC:.c=.d)
+
TEST_MIE_LUT = Mie_LUT_Cloud
-TEST_MIE_LUT_CDL =$(TEST_MIE_LUT).cdl
-TEST_MIE_LUT_NETCDF =$(TEST_MIE_LUT).nc
+TEST_MIE_LUT_CDL = $(TEST_MIE_LUT).cdl
+TEST_MIE_LUT_NETCDF = $(TEST_MIE_LUT).nc
TEST_MIE_LUT_VARS =\
- $(TEST_MIE_LUT)_g\
- $(TEST_MIE_LUT)_lambda\
- $(TEST_MIE_LUT)_macs\
- $(TEST_MIE_LUT)_mscs
+ $(TEST_MIE_LUT).g\
+ $(TEST_MIE_LUT).lambda\
+ $(TEST_MIE_LUT).macs\
+ $(TEST_MIE_LUT).mscs
+
+TEST_DUMMY = dummy
+TEST_DUMMY_CDL = $(TEST_DUMMY).cdl
+TEST_DUMMY_NETCDF = $(TEST_DUMMY).nc
+TEST_DUMMY_VARS =\
+ $(TEST_DUMMY).g\
+ $(TEST_DUMMY).lambda\
+ $(TEST_DUMMY).macs\
+ $(TEST_DUMMY).mscs
PKG_CONFIG_LOCAL = PKG_CONFIG_PATH="./:$${PKG_CONFIG_PATH}" $(PKG_CONFIG)
HTMIE_CFLAGS = $$($(PKG_CONFIG_LOCAL) $(PCFLAGS) --cflags htmie-local.pc)
HTMIE_LIBS = $$($(PKG_CONFIG_LOCAL) $(PCFLAGS) --libs htmie-local.pc)
-test: build_tests $(TEST_MIE_LUT_VARS)
- @$(SHELL) make.sh check test_htmie
- @$(SHELL) make.sh check test_htmie_load "$(TEST_MIE_LUT_NETCDF)" ./
+test: $(TEST_MIE_LUT_VARS) $(TEST_MIE_LUT_NETCDF)
+test: $(TEST_DUMMY_VARS) $(TEST_DUMMY_NETCDF)
+test: build_tests
+ @$(SHELL) make.sh check test_htmie test_htmie
+ @$(SHELL) make.sh check test_htmie_load_LUT test_htmie_load Mie_LUT_Cloud.nc .
+ @$(SHELL) make.sh check test_htmie_load_dummy test_htmie_load dummy.nc .
-$(TEST_MIE_LUT_NETCDF): $(TEST_MIE_LUT_CDL)
- ncgen -o $@ $(TEST_MIE_LUT_CDL)
+.SUFFIXES: .cdl .nc .g .lambda .macs .mscs
+.cdl.nc:
+ ncgen -o $@ $<
-$(TEST_MIE_LUT_VARS): $(TEST_MIE_LUT_NETCDF) src/dump_netcdf_data.sh
- $(SHELL) src/dump_netcdf_data.sh \
- $$(echo $@ | sed 's/$(TEST_MIE_LUT)_\(.\{1,\}\)$$/\1/g') $(TEST_MIE_LUT_NETCDF) > $@
+.nc.g .nc.lambda .nc.macs .nc.mscs:
+ $(SHELL) src/dump_netcdf_data.sh $$(p="$@"; echo "$${p##*.}") $< > $@
-build_tests: build_library $(TEST_DEP) .test $(TEST_MIE_LUT_VARS)
+build_tests: build_library $(TEST_DEP) .test $(TEST_MIE_LUT_VARS) $(TEST_DUMMY_VARS)
@$(MAKE) -fMakefile -f.test $$(for i in $(TEST_DEP); do echo -f"$${i}"; done) test_bin
.test: Makefile make.sh
@@ -151,6 +164,7 @@ build_tests: build_library $(TEST_DEP) .test $(TEST_MIE_LUT_VARS)
clean_test:
$(SHELL) make.sh clean_test $(TEST_SRC)
rm -rf $(TEST_MIE_LUT_VARS) $(TEST_MIE_LUT_NETCDF)
+ rm -rf $(TEST_DUMMY_VARS) $(TEST_DUMMY_NETCDF)
$(TEST_DEP): config.mk htmie-local.pc
@$(CC) $(CFLAGS) $(RSYS_CFLAGS) $(HTMIE_CFLAGS) \
diff --git a/dummy.cdl b/dummy.cdl
@@ -0,0 +1,27 @@
+netcdf Mie_LUT_Cloud {
+dimensions:
+ lambda = 3 ;
+ distribution = UNLIMITED ; // (1 currently)
+variables:
+ double lambda(lambda) ;
+ lambda:long_name = "Wavelength" ;
+ lambda:units = "nanometers" ;
+ double mscs(distribution, lambda) ;
+ mscs:long_name = "Massic scattering cross section" ;
+ mscs:units = "m^2/kg" ;
+ double macs(distribution, lambda) ;
+ macs:long_name = "Massic absorption cross section" ;
+ macs:units = "m^2/kg" ;
+ double g(distribution, lambda) ;
+ g:long_name = "Asymmetry parameter" ;
+ g:units = "-" ;
+data:
+
+ lambda = 200, 225, 250 ;
+
+ mscs = 0, 148.583778410196, 148.848607519154 ;
+
+ macs = 0, 0.00376469098500625, 0.00235556776982531 ;
+
+ g = -1, 1, 0 ;
+}
diff --git a/make.sh b/make.sh
@@ -29,10 +29,11 @@ config_test()
check()
{
- prog="$1"
- shift 1
+ name="$1"
+ prog="$2"
+ shift 2
- printf "%s " "${prog}"
+ printf "%s " "${name}"
if ./"${prog}" "$@" > /dev/null 2>&1; then
printf "\e[1;32mOK\e[m\n"
else
diff --git a/src/test_htmie_load.c b/src/test_htmie_load.c
@@ -303,7 +303,7 @@ main(int argc, char** argv)
if(p) *p = '\0';
/* Check the wavelengths list */
- CHK((size_t)snprintf(buf, sizeof(buf), "%s/%s_lambda", path, base)<sizeof(buf));
+ CHK((size_t)snprintf(buf, sizeof(buf), "%s/%s.lambda", path, base)<sizeof(buf));
CHK(fp = fopen(buf, "r"));
FOR_EACH(i, 0, htmie_get_wavelengths_count(htmie)) {
double lambda;
@@ -314,7 +314,7 @@ main(int argc, char** argv)
CHK(fclose(fp) == 0);
/* Check absorption cross sections */
- CHK((size_t)snprintf(buf, sizeof(buf), "%s/%s_macs", path, base)<sizeof(buf));
+ CHK((size_t)snprintf(buf, sizeof(buf), "%s/%s.macs", path, base)<sizeof(buf));
CHK(fp = fopen(buf, "r"));
FOR_EACH(i, 0, htmie_get_wavelengths_count(htmie)) {
const double Cabs = htmie_get_xsections_absorption(htmie)[i];
@@ -326,7 +326,7 @@ main(int argc, char** argv)
CHK(fclose(fp) == 0);
/* Check scattering cross sections */
- CHK((size_t)snprintf(buf, sizeof(buf), "%s/%s_mscs", path, base)<sizeof(buf));
+ CHK((size_t)snprintf(buf, sizeof(buf), "%s/%s.mscs", path, base)<sizeof(buf));
CHK(fp = fopen(buf, "r"));
FOR_EACH(i, 0, htmie_get_wavelengths_count(htmie)) {
const double Csca = htmie_get_xsections_scattering(htmie)[i];
@@ -338,7 +338,7 @@ main(int argc, char** argv)
CHK(fclose(fp) == 0);
/* Check scattering asymmetry parameter */
- CHK((size_t)snprintf(buf, sizeof(buf), "%s/%s_g", path, base)<sizeof(buf));
+ CHK((size_t)snprintf(buf, sizeof(buf), "%s/%s.g", path, base)<sizeof(buf));
CHK(fp = fopen(buf, "r"));
FOR_EACH(i, 0, htmie_get_wavelengths_count(htmie)) {
double g;