star-hitran

Load line-by-line data from the HITRAN database
git clone git://git.meso-star.fr/star-hitran.git
Log | Files | Refs | README | LICENSE

commit 3b5f95d67e8724fe6d12749c9dba32cbfec2e386
parent d50fb2841c87534571b3332dce5e0183b52f446e
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Wed,  9 Feb 2022 14:06:02 +0100

Test the loading of invalid files

Diffstat:
Msrc/test_shitran_isotope_metadata.c | 85+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 85 insertions(+), 0 deletions(-)

diff --git a/src/test_shitran_isotope_metadata.c b/src/test_shitran_isotope_metadata.c @@ -251,6 +251,90 @@ test_load(struct shitran* shitran) CHK(fclose(fp) == 0); } +static void +test_load_failures(struct shitran* shitran) +{ + struct shitran_isotope isotope = SHITRAN_ISOTOPE_NULL; + struct shitran_isotope_metadata* mdata = NULL; + FILE* fp = NULL; + + CHK(shitran); + + /* 1st line is missing */ + CHK(fp = tmpfile()); + molecule_print(fp, &H2O); + rewind(fp); + CHK(shitran_isotope_metadata_load_stream(shitran, fp, NULL, &mdata) == RES_BAD_ARG); + CHK(fclose(fp) == 0); + + /* Invalid molecule id */ + CHK(fp = tmpfile()); + fprintf(fp, "Comment line\n"); + fprintf(fp, "H2O 1\n"); + isotope_print(fp, &H2O_isotopes[0]); + rewind(fp); + CHK(shitran_isotope_metadata_load_stream(shitran, fp, NULL, &mdata) == RES_BAD_ARG); + rewind(fp); + fprintf(fp, "Comment line\n"); + fprintf(fp, "H2O (-1)\n"); + isotope_print(fp, &H2O_isotopes[0]); + rewind(fp); + CHK(shitran_isotope_metadata_load_stream(shitran, fp, NULL, &mdata) == RES_BAD_ARG); + CHK(fclose(fp) == 0); + + /* Invalid isotope id */ + CHK(fp = tmpfile()); + fprintf(fp, "Comment line\n"); + fprintf(fp, "H2O (1)\n"); + isotope = H2O_isotopes[0]; + isotope.id = -1; + isotope_print(fp, &isotope); + rewind(fp); + CHK(shitran_isotope_metadata_load_stream(shitran, fp, NULL, &mdata) == RES_BAD_ARG); + CHK(fclose(fp) == 0); + + /* Invalid abundance */ + CHK(fp = tmpfile()); + fprintf(fp, "Comment line\n"); + fprintf(fp, "H2O (1)\n"); + isotope = H2O_isotopes[0]; + isotope.abundance = 0; + isotope_print(fp, &isotope); + rewind(fp); + CHK(shitran_isotope_metadata_load_stream(shitran, fp, NULL, &mdata) == RES_BAD_ARG); + CHK(fclose(fp) == 0); + CHK(fp = tmpfile()); + fprintf(fp, "Comment line\n"); + fprintf(fp, "H2O (1)\n"); + isotope.abundance = 1.00001; + isotope_print(fp, &isotope); + rewind(fp); + CHK(shitran_isotope_metadata_load_stream(shitran, fp, NULL, &mdata) == RES_BAD_ARG); + CHK(fclose(fp) == 0); + + /* Invalid Q(296K) */ + CHK(fp = tmpfile()); + fprintf(fp, "Comment line\n"); + fprintf(fp, "H2O (1)\n"); + isotope = H2O_isotopes[0]; + isotope.Q296K = 0; + isotope_print(fp, &isotope); + rewind(fp); + CHK(shitran_isotope_metadata_load_stream(shitran, fp, NULL, &mdata) == RES_BAD_ARG); + CHK(fclose(fp) == 0); + + /* Invalid molar mass */ + CHK(fp = tmpfile()); + fprintf(fp, "Comment line\n"); + fprintf(fp, "H2O (1)\n"); + isotope = H2O_isotopes[0]; + isotope.molar_mass = 0; + isotope_print(fp, &isotope); + rewind(fp); + CHK(shitran_isotope_metadata_load_stream(shitran, fp, NULL, &mdata) == RES_BAD_ARG); + CHK(fclose(fp) == 0); +} + int main(int argc, char** argv) { @@ -262,6 +346,7 @@ main(int argc, char** argv) CHK(shitran_create(&args, &shitran) == RES_OK); test_load(shitran); + test_load_failures(shitran); CHK(shitran_ref_put(shitran) == RES_OK); CHK(mem_allocated_size() == 0);