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