commit 55dfefbb3da4c763960946467649e387ad1477c7
parent 07eb25f6f5431ef072610cd589284db05a81a7eb
Author: Vincent Forest <vincent.forest@meso-star.com>
Date: Fri, 18 Nov 2016 12:31:34 +0100
Check that there is a sun in the input document
Diffstat:
5 files changed, 28 insertions(+), 2 deletions(-)
diff --git a/src/solstice_parser.c b/src/solstice_parser.c
@@ -2749,6 +2749,12 @@ solstice_parser_load(struct solstice_parser* parser)
if(res != RES_OK) goto error;
}
+ if(!parser->sun_key) {
+ log_err(parser, root, "%s: no sun definition in the document.\n");
+ res = RES_BAD_ARG;
+ goto error;
+ }
+
exit:
if(doc_is_init) yaml_document_delete(&doc);
return res;
diff --git a/src/test_solstice_parser2.c b/src/test_solstice_parser2.c
@@ -48,7 +48,6 @@ main(int argc, char** argv)
fprintf(stream, "- geometry: &sphere\n");
fprintf(stream, " - sphere: { radius: 1 }\n");
fprintf(stream, " material: { matte: { reflectivity: 1 } }\n");
- fprintf(stream, "\n");
fprintf(stream, "- entity:\n");
fprintf(stream, " name: lvl0\n");
fprintf(stream, " geometry: *sphere\n");
@@ -65,6 +64,9 @@ main(int argc, char** argv)
fprintf(stream, " children:\n");
fprintf(stream, " - name: lvl2\n");
fprintf(stream, " geometry: *sphere\n");
+ fprintf(stream, "- sun:\n");
+ fprintf(stream, " dni: 1\n");
+ fprintf(stream, " spectrum: [ { wavelength: 1, data: 1} ]\n");
rewind(stream);
CHECK(solstice_parser_setup(parser, NULL, stream), RES_OK);
diff --git a/src/yaml/test_ok_0.yaml b/src/yaml/test_ok_0.yaml
@@ -1,3 +1,4 @@
+- sun: { dni: 1, spectrum: [{wavelength: 1, data: 1}] }
- entity:
name: "entity"
transform:
@@ -8,6 +9,7 @@
material: { matte: { reflectivity: 1 } }
---
+- sun: { dni: 1, spectrum: [{wavelength: 1, data: 1}] }
- entity:
name: "entity"
transform: { translation: [ 1, 2, 0 ] }
@@ -18,6 +20,7 @@
cuboid: { size: [1, 2, 3] }
---
+- sun: { dni: 1, spectrum: [{wavelength: 1, data: 1}] }
- entity:
name: "entity"
geometry:
@@ -33,7 +36,7 @@
geometry:
- material: *lambertian
cuboid: { size: [1, 2, 3] }
-
+- sun: { dni: 1, spectrum: [{wavelength: 1, data: 1}] }
---
- material: &front { matte: { reflectivity: 1 } }
- material: &back { matte: { reflectivity: 0.5 } }
@@ -41,8 +44,10 @@
- cuboid: { size: [1, 2, 3] }
material: { front: *front, back: *back }
- entity: { name: "hop", geometry: *cuboid }
+- sun: { dni: 1, spectrum: [{wavelength: 1, data: 1}] }
---
- material: &lambertian { matte: { reflectivity: 1 } }
+- sun: { dni: 1, spectrum: [{wavelength: 1, data: 1}] }
- entity:
name: hop
geometry: &cuboid
@@ -50,3 +55,4 @@
material:
front: *lambertian
back: *lambertian
+
diff --git a/src/yaml/test_ok_1.yaml b/src/yaml/test_ok_1.yaml
@@ -1,3 +1,5 @@
+- sun: { dni: 1, spectrum: [{wavelength: 1, data: 1}] }
+
- material: &mirror
mirror:
reflectivity: 1
@@ -17,6 +19,8 @@
translation: [0, 1, 2]
rotation: [0, 0, 0]
---
+- sun: { dni: 1, spectrum: [{wavelength: 1, data: 1}] }
+
- material: &mirror
mirror:
reflectivity: 1
@@ -32,18 +36,21 @@
name: "entity"
geometry: *cylinder
---
+- sun: { dni: 1, spectrum: [{wavelength: 1, data: 1}] }
- entity:
name: entity
geometry:
- material: { mirror: { reflectivity: 0.314, roughness: 0.5 } }
cylinder: { height: 10.12, radius: 0.32 }
---
+- sun: { dni: 1, spectrum: [{wavelength: 1, data: 1}] }
- entity:
name: entity
geometry:
- material: { mirror: { reflectivity: 0, roughness: 0.5 } }
cylinder: { height: 1, radius: 1 }
---
+- sun: { dni: 1, spectrum: [{wavelength: 1, data: 1}] }
- entity:
name: entity
geometry:
diff --git a/src/yaml/test_ok_2.yaml b/src/yaml/test_ok_2.yaml
@@ -1,15 +1,18 @@
+- sun: { dni: 1, spectrum: [{wavelength: 1, data: 1}] }
- entity:
name: 1
geometry:
- material: { matte: { reflectivity: 1 } }
stl: { path: path toward }
---
+- sun: { dni: 1, spectrum: [{wavelength: 1, data: 1}] }
- entity:
name: 1a
geometry:
- material: { matte: { reflectivity: 1 } }
obj: { path: "my_path" }
---
+- sun: { dni: 1, spectrum: [{wavelength: 1, data: 1}] }
- entity:
name: test
geometry:
@@ -17,6 +20,7 @@
obj: { path: "path/path/path" }
transform: { translation: [1, 2, 3] }
---
+- sun: { dni: 1, spectrum: [{wavelength: 1, data: 1}] }
- entity:
name: test
geometry:
@@ -24,6 +28,7 @@
obj: { path: "path/path/path" }
transform: { rotation: [0, 0, 0] }
---
+- sun: { dni: 1, spectrum: [{wavelength: 1, data: 1}] }
- entity:
name: hop
geometry: