commit bebc45e8175e3498c840d877b57abdb2f3d6b9e6
parent 09d151c4f0ad685300f406442f1873685f187ce4
Author: Vincent Forest <vincent.forest@meso-star.com>
Date: Wed, 22 Jun 2022 11:57:52 +0200
Test the function rnsf_fetch_phase_fn
Diffstat:
2 files changed, 148 insertions(+), 0 deletions(-)
diff --git a/src/test_rnsf_bands.c b/src/test_rnsf_bands.c
@@ -77,6 +77,13 @@ test_load2(struct rnsf* rnsf)
const struct rnsf_phase_fn* phase = NULL;
CHK(fp = tmpfile());
+ fprintf(fp, "bands 0\n");
+ rewind(fp);
+ CHK(rnsf_load_stream(rnsf, fp, NULL) == RES_OK);
+ CHK(rnsf_get_phase_fn_count(rnsf) == 0);
+ CHK(fclose(fp) == 0);
+
+ CHK(fp = tmpfile());
fprintf(fp, "bands 5\n");
fprintf(fp, "100 200 hg -0.3\n");
fprintf(fp, "200 300 hg 0.4\n");
@@ -142,6 +149,73 @@ test_load2(struct rnsf* rnsf)
}
static void
+test_fetch(struct rnsf* rnsf)
+{
+ FILE* fp = NULL;
+ size_t iphase_fn = 0;
+
+ CHK(fp = tmpfile());
+ fprintf(fp, "bands 0\n");
+ rewind(fp);
+ CHK(rnsf_load_stream(rnsf, fp, NULL) == RES_OK);
+ CHK(fclose(fp) == 0);
+
+ CHK(rnsf_fetch_phase_fn(NULL, 400, 0.5, &iphase_fn) == RES_BAD_ARG);
+ CHK(rnsf_fetch_phase_fn(rnsf, -1, 0.5, &iphase_fn) == RES_BAD_ARG);
+ CHK(rnsf_fetch_phase_fn(rnsf, 400, -0.1, &iphase_fn) == RES_BAD_ARG);
+ CHK(rnsf_fetch_phase_fn(rnsf, 400, 1, &iphase_fn) == RES_BAD_ARG);
+ CHK(rnsf_fetch_phase_fn(rnsf, 400, 0.5, NULL) == RES_BAD_ARG);
+ CHK(rnsf_fetch_phase_fn(rnsf, 400, 0.5, &iphase_fn) == RES_OK);
+ CHK(iphase_fn >= rnsf_get_phase_fn_count(rnsf));
+
+ CHK(fp = tmpfile());
+ fprintf(fp, "bands 2\n");
+ fprintf(fp, "200 300 hg 0.0\n");
+ fprintf(fp, "300 400 hg 0.1\n");
+ rewind(fp);
+ CHK(rnsf_load_stream(rnsf, fp, NULL) == RES_OK);
+ CHK(fclose(fp) == 0);
+
+ CHK(rnsf_fetch_phase_fn(rnsf, 100, 0, &iphase_fn) == RES_OK);
+ CHK(iphase_fn == 0);
+ CHK(rnsf_fetch_phase_fn(rnsf, 450, 0, &iphase_fn) == RES_OK);
+ CHK(iphase_fn == 1);
+ CHK(rnsf_fetch_phase_fn(rnsf, 300, 0, &iphase_fn) == RES_OK);
+ CHK(iphase_fn == 0);
+ CHK(rnsf_fetch_phase_fn(rnsf, 300.1, 0, &iphase_fn) == RES_OK);
+ CHK(iphase_fn == 1);
+
+ CHK(fp = tmpfile());
+ fprintf(fp, "bands 4\n");
+ fprintf(fp, "100 150 hg 0\n");
+ fprintf(fp, "200 200 hg 1\n");
+ fprintf(fp, "300 400 hg -1\n");
+ fprintf(fp, "400 401 discrete 4\n");
+ fprintf(fp, " 0 1\n");
+ fprintf(fp, " 0.5 1\n");
+ fprintf(fp, " 1.57 1\n");
+ fprintf(fp, " PI 1\n");
+ rewind(fp);
+ CHK(rnsf_load_stream(rnsf, fp, NULL) == RES_OK);
+ CHK(fclose(fp) == 0);
+
+ CHK(rnsf_fetch_phase_fn(rnsf, 160, 0, &iphase_fn) == RES_OK);
+ CHK(iphase_fn == 0);
+ CHK(rnsf_fetch_phase_fn(rnsf, 160, 0.5, &iphase_fn) == RES_OK);
+ CHK(iphase_fn == 0);
+ CHK(rnsf_fetch_phase_fn(rnsf, 160, 0.8, &iphase_fn) == RES_OK);
+ CHK(iphase_fn == 1);
+ CHK(rnsf_fetch_phase_fn(rnsf, 200, 0, &iphase_fn) == RES_OK);
+ CHK(iphase_fn == 1);
+ CHK(rnsf_fetch_phase_fn(rnsf, 250, 0.49, &iphase_fn) == RES_OK);
+ CHK(iphase_fn == 1);
+ CHK(rnsf_fetch_phase_fn(rnsf, 250, 0.5, &iphase_fn) == RES_OK);
+ CHK(iphase_fn == 2);
+ CHK(rnsf_fetch_phase_fn(rnsf, 400.1, 0, &iphase_fn) == RES_OK);
+ CHK(iphase_fn == 3);
+}
+
+static void
test_load_fail(struct rnsf* rnsf)
{
FILE* fp = NULL;
@@ -315,6 +389,7 @@ main(int argc, char** argv)
test_load1(rnsf);
test_load2(rnsf);
+ test_fetch(rnsf);
test_load_fail(rnsf);
CHK(rnsf_ref_put(rnsf) == RES_OK);
diff --git a/src/test_rnsf_wlens.c b/src/test_rnsf_wlens.c
@@ -37,6 +37,13 @@ test_load(struct rnsf* rnsf)
FILE* fp = NULL;
CHK(fp = tmpfile());
+ fprintf(fp, "wavelengths 0\n");
+ rewind(fp);
+ CHK(rnsf_load_stream(rnsf, fp, NULL) == RES_OK);
+ CHK(rnsf_get_phase_fn_count(rnsf) == 0);
+ CHK(fclose(fp) == 0);
+
+ CHK(fp = tmpfile());
fprintf(fp, "# Comment\n");
fprintf(fp, "wavelengths 1\n");
fprintf(fp, "\n");
@@ -185,6 +192,71 @@ test_load(struct rnsf* rnsf)
}
static void
+test_fetch(struct rnsf* rnsf)
+{
+ FILE* fp = NULL;
+ size_t iphase_fn = 0;
+
+ CHK(fp = tmpfile());
+ fprintf(fp, "wavelengths 0\n");
+ rewind(fp);
+ CHK(rnsf_load_stream(rnsf, fp, NULL) == RES_OK);
+ CHK(fclose(fp) == 0);
+ CHK(rnsf_fetch_phase_fn(rnsf, 400, 0.5, &iphase_fn) == RES_OK);
+ CHK(iphase_fn >= rnsf_get_phase_fn_count(rnsf));
+
+ CHK(fp = tmpfile());
+ fprintf(fp, "wavelengths 2\n");
+ fprintf(fp, "200 hg 0\n");
+ fprintf(fp, "300 hg 0\n");
+ rewind(fp);
+ CHK(rnsf_load_stream(rnsf, fp, NULL) == RES_OK);
+ CHK(fclose(fp) == 0);
+
+ CHK(rnsf_fetch_phase_fn(rnsf, 299, 0, &iphase_fn) == RES_OK);
+ CHK(iphase_fn == 0);
+ CHK(rnsf_fetch_phase_fn(rnsf, 301, 0, &iphase_fn) == RES_OK);
+ CHK(iphase_fn == 1);
+ CHK(rnsf_fetch_phase_fn(rnsf, 200, 0, &iphase_fn) == RES_OK);
+ CHK(iphase_fn == 0);
+ CHK(rnsf_fetch_phase_fn(rnsf, 300, 0, &iphase_fn) == RES_OK);
+ CHK(iphase_fn == 1);
+ CHK(rnsf_fetch_phase_fn(rnsf, 280, 0, &iphase_fn) == RES_OK);
+ CHK(iphase_fn == 0);
+ CHK(rnsf_fetch_phase_fn(rnsf, 280, 0.19, &iphase_fn) == RES_OK);
+ CHK(iphase_fn == 0);
+ CHK(rnsf_fetch_phase_fn(rnsf, 280, 0.20, &iphase_fn) == RES_OK);
+ CHK(iphase_fn == 1);
+
+ CHK(fp = tmpfile());
+ fprintf(fp, "wavelengths 4\n");
+ fprintf(fp, "100 hg 0\n");
+ fprintf(fp, "200 hg 1\n");
+ fprintf(fp, "300 hg -1\n");
+ fprintf(fp, "400 discrete 4\n");
+ fprintf(fp, " 0 1\n");
+ fprintf(fp, " 0.5 1\n");
+ fprintf(fp, " 1.57 1\n");
+ fprintf(fp, " PI 1\n");
+ rewind(fp);
+ CHK(rnsf_load_stream(rnsf, fp, NULL) == RES_OK);
+ CHK(fclose(fp) == 0);
+
+ CHK(rnsf_fetch_phase_fn(rnsf, 50, 0, &iphase_fn) == RES_OK);
+ CHK(iphase_fn == 0);
+ CHK(rnsf_fetch_phase_fn(rnsf, 120, 0.8, &iphase_fn) == RES_OK);
+ CHK(iphase_fn == 1);
+ CHK(rnsf_fetch_phase_fn(rnsf, 270, 0.29, &iphase_fn) == RES_OK);
+ CHK(iphase_fn == 1);
+ CHK(rnsf_fetch_phase_fn(rnsf, 270, 0.3, &iphase_fn) == RES_OK);
+ CHK(iphase_fn == 2);
+ CHK(rnsf_fetch_phase_fn(rnsf, 350, 0.5, &iphase_fn) == RES_OK);
+ CHK(iphase_fn == 3);
+ CHK(rnsf_fetch_phase_fn(rnsf, 450, 0, &iphase_fn) == RES_OK);
+ CHK(iphase_fn == 3);
+}
+
+static void
test_load_failure(struct rnsf* rnsf)
{
FILE* fp = NULL;
@@ -253,6 +325,7 @@ main(int argc, char** argv)
CHK(rnsf_get_phase_fn_count(rnsf) == 0);
test_load(rnsf);
+ test_fetch(rnsf);
test_load_failure(rnsf);
CHK(rnsf_ref_put(rnsf) == RES_OK);