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 a86fe15bfcb2051a00b8e399c32cfda747d54396
parent 808eeae91df662164d92f97632f445ee586c7cc6
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Tue, 15 Feb 2022 10:08:54 +0100

Test for failure when loading incorrect transitions

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

diff --git a/src/test_shitran_transitions.c b/src/test_shitran_transitions.c @@ -134,6 +134,68 @@ test_load(struct shitran* shitran) CHK(shitran_transitions_ref_put(trs) == RES_OK); } +static void +test_transition + (struct shitran* shitran, const struct shitran_transition* tr, const res_T res) +{ + struct shitran_transitions* trs = NULL; + FILE* fp = NULL; + + CHK(fp = tmpfile()); + print_transitions(fp, tr, 1); + rewind(fp); + CHK(shitran_transitions_load_stream(shitran, fp, NULL, &trs) == res); + CHK(fclose(fp) == 0); + + if(res == RES_OK) CHK(shitran_transitions_ref_put(trs) == RES_OK); +} + +static void +test_load_failures(struct shitran* shitran) +{ + const struct shitran_transition tr_ref = { + 0.000134, 2.672E-38, 0.0533, 0.410, 608.4727, 0.79, 0.000060, 1, 4, + }; + struct shitran_transition tr; + + /* Check that the reference transition is valid */ + test_transition(shitran, &tr_ref, RES_OK); + + /* Invalid wavenumber */ + tr = tr_ref; tr.wavenumber = 0; + test_transition(shitran, &tr, RES_BAD_ARG); + + /* Invalid intensity */ + tr = tr_ref; tr.intensity = 0; + test_transition(shitran, &tr, RES_BAD_ARG); + + /* Invalid gamma air */ + tr = tr_ref; tr.gamma_air = 0; + test_transition(shitran, &tr, RES_BAD_ARG); + + /* Invalid gamma self */ + tr = tr_ref; tr.gamma_self = 0; + test_transition(shitran, &tr, RES_BAD_ARG); + + /* Invalid lower state energy */ + tr = tr_ref; tr.lower_state_energy = 0; + test_transition(shitran, &tr, RES_BAD_ARG); + + /* Invalid n_air */ + tr = tr_ref; tr.n_air = 0; + test_transition(shitran, &tr, RES_BAD_ARG); + + /* Invalid molecule id */ + tr = tr_ref; tr.molecule_id = -1; + test_transition(shitran, &tr, RES_BAD_ARG); + + /* Bad file formatting */ + tr = tr_ref; tr.molecule_id = 100; + test_transition(shitran, &tr, RES_BAD_ARG); + tr = tr_ref; tr.isotope_id_local = 10; + test_transition(shitran, &tr, RES_BAD_ARG); +} + int main(int argc, char** argv) { @@ -145,6 +207,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);