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:
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);