rnsf

Define and load a phase function data format
git clone git://git.meso-star.fr/rnsf.git
Log | Files | Refs | README | LICENSE

commit 3ef6e51e5d4f766d38ec245c8cdc74ae2d82e9b9
parent 1881e07a15eb07300f51cdaffd55c47d439c1b56
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Wed, 22 Jun 2022 09:14:39 +0200

Test the failures of loading of the phase functions per wavelength

Diffstat:
Msrc/test_rnsf_bands.c | 2+-
Msrc/test_rnsf_wlens.c | 58++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 59 insertions(+), 1 deletion(-)

diff --git a/src/test_rnsf_bands.c b/src/test_rnsf_bands.c @@ -154,7 +154,7 @@ test_load_fail(struct rnsf* rnsf) CHK(rnsf_load_stream(rnsf, fp, NULL) == RES_BAD_ARG); CHK(fclose(fp) == 0); - /* No bands count */ + /* No band count */ CHK(fp = tmpfile()); fprintf(fp, "bands\n"); fprintf(fp, "380 780 hg 0.5\n"); diff --git a/src/test_rnsf_wlens.c b/src/test_rnsf_wlens.c @@ -184,6 +184,63 @@ test_load(struct rnsf* rnsf) CHK(fclose(fp) == 0); } +static void +test_load_failure(struct rnsf* rnsf) +{ + FILE* fp = NULL; + + /* No wavelength count */ + CHK(fp = tmpfile()); + fprintf(fp, "wavelengths\n"); + fprintf(fp, "380 hg 0.5\n"); + rewind(fp); + CHK(rnsf_load_stream(rnsf, fp, NULL) == RES_BAD_ARG); + CHK(fclose(fp) == 0); + + /* Missing a phase function */ + CHK(fp = tmpfile()); + fprintf(fp, "wavelengths 2\n"); + fprintf(fp, "380 hg 0.5\n"); + rewind(fp); + CHK(rnsf_load_stream(rnsf, fp, NULL) == RES_BAD_ARG); + CHK(fclose(fp) == 0); + + /* Invalid wavelength */ + CHK(fp = tmpfile()); + fprintf(fp, "wavelengths 1\n"); + fprintf(fp, "-380 hg 0.5\n"); + rewind(fp); + CHK(rnsf_load_stream(rnsf, fp, NULL) == RES_BAD_ARG); + CHK(fclose(fp) == 0); + + /* Unsorted phase functions */ + CHK(fp = tmpfile()); + fprintf(fp, "wavelengths 2\n"); + fprintf(fp, "380 hg 0.5\n"); + fprintf(fp, "280 hg 0.0\n"); + rewind(fp); + CHK(rnsf_load_stream(rnsf, fp, NULL) == RES_BAD_ARG); + CHK(fclose(fp) == 0); + + /* Phase functions overlap */ + CHK(fp = tmpfile()); + fprintf(fp, "wavelengths 2\n"); + fprintf(fp, "280 hg 0.5\n"); + fprintf(fp, "280 hg 0.0\n"); + rewind(fp); + CHK(rnsf_load_stream(rnsf, fp, NULL) == RES_BAD_ARG); + CHK(fclose(fp) == 0); + + /* Additional text. Print a warning */ + CHK(fp = tmpfile()); + fprintf(fp, "wavelengths 2 additional_text\n"); + fprintf(fp, "280 hg 0.5\n"); + fprintf(fp, "380 hg 0.0\n"); + rewind(fp); + CHK(rnsf_load_stream(rnsf, fp, NULL) == RES_OK); + CHK(fclose(fp) == 0); +} + int main(int argc, char** argv) { @@ -196,6 +253,7 @@ main(int argc, char** argv) CHK(rnsf_get_phase_fn_count(rnsf) == 0); test_load(rnsf); + test_load_failure(rnsf); CHK(rnsf_ref_put(rnsf) == RES_OK); CHK(mem_allocated_size() == 0);