commit 0c22f58629919ceb573e6f99624e9729fa0bc3d5
parent 98de196c85db9e375be5c8c3723073633449647a
Author: Vincent Forest <vincent.forest@meso-star.com>
Date: Fri, 13 Jan 2017 15:14:02 +0100
Check the validity of the provided sun directions
Diffstat:
2 files changed, 36 insertions(+), 0 deletions(-)
diff --git a/src/solstice_args.c b/src/solstice_args.c
@@ -119,6 +119,21 @@ parse_sun_dir_list(const char* str, struct solstice_args* args)
goto error;
}
+ if(tmp[0] < 0 || tmp[0] >= 360) {
+ fprintf(stderr,
+ "Invalid azimuth angle `%g'. Azimuth must be in [0, 360[ degrees.\n",
+ tmp[0]);
+ res = RES_BAD_ARG;
+ goto error;
+ }
+ if(tmp[1] < 0 || tmp[1] > 90) {
+ fprintf(stderr,
+ "Invalid elevation angle `%g'. Elevation must be in [0, 90] degrees.\n",
+ tmp[1]);
+ res = RES_BAD_ARG;
+ goto error;
+ }
+
spherical.azimuth = MDEG2RAD(tmp[0]);
spherical.elevation = MDEG2RAD(tmp[1]);
sa_push(args->sun_dirs, spherical);
diff --git a/src/test_solstice_args.c b/src/test_solstice_args.c
@@ -205,6 +205,27 @@ test_sun_dirs(void)
cmd = cmd_create(0, "test", "-D", "1.2,3.4:5.2,A", NULL);
CHECK(solstice_args_init(&args, cmd_size(cmd), cmd), RES_BAD_ARG);
cmd_delete(cmd);
+
+ cmd = cmd_create(0, "test", "-D", "-0.1,2", NULL);
+ CHECK(solstice_args_init(&args, cmd_size(cmd), cmd), RES_BAD_ARG);
+ cmd_delete(cmd);
+
+ cmd = cmd_create(0, "test", "-D", "360,2", NULL);
+ CHECK(solstice_args_init(&args, cmd_size(cmd), cmd), RES_BAD_ARG);
+ cmd_delete(cmd);
+
+ cmd = cmd_create(0, "test", "-D", "0,-1", NULL);
+ CHECK(solstice_args_init(&args, cmd_size(cmd), cmd), RES_BAD_ARG);
+ cmd_delete(cmd);
+
+ cmd = cmd_create(0, "test", "-D", "0,91", NULL);
+ CHECK(solstice_args_init(&args, cmd_size(cmd), cmd), RES_BAD_ARG);
+ cmd_delete(cmd);
+
+ cmd = cmd_create(0, "test", "-D", "0,90", NULL);
+ CHECK(solstice_args_init(&args, cmd_size(cmd), cmd), RES_OK);
+ solstice_args_release(&args);
+ cmd_delete(cmd);
}
int