summaryrefslogtreecommitdiff
path: root/src/geometry
diff options
context:
space:
mode:
Diffstat (limited to 'src/geometry')
-rw-r--r--src/geometry/geometry.c6
-rw-r--r--src/geometry/geometry.test.c19
2 files changed, 24 insertions, 1 deletions
diff --git a/src/geometry/geometry.c b/src/geometry/geometry.c
index 5e93c55..322ada0 100644
--- a/src/geometry/geometry.c
+++ b/src/geometry/geometry.c
@@ -13,5 +13,11 @@ int kai_read_float_array(struct ka_float_array_t *dest, struct kai_tag_t *src)
return -1;
}
+ char *count_str = kai_tag_get_attr(src, "count");
+ if (count_str == NULL) {
+ /* missing required count attribute! */
+ return -1;
+ }
+
return 0;
}
diff --git a/src/geometry/geometry.test.c b/src/geometry/geometry.test.c
index b724ee7..d433066 100644
--- a/src/geometry/geometry.test.c
+++ b/src/geometry/geometry.test.c
@@ -16,7 +16,24 @@ LILY_TEST("fail to read non-float_array")
struct ka_float_array_t arr;
int result = kai_read_float_array(&arr, t);
- CHECK_EQF(result, -1, "%d");
+ CHECK_EQ(result, -1, "%d");
+
+ kai_tag_destroy(t);
+}
+#include LILY_PUSH_TEST()
+
+
+LILY_TEST("fail to read float_array without count attribute")
+{
+ struct kai_tag_t *t = kai_parse_string(
+ "<float_array id=\"some id\">"
+ " blah blah internals"
+ "</float_array>"
+ );
+
+ struct ka_float_array_t arr;
+ int result = kai_read_float_array(&arr, t);
+ CHECK_EQ(result, -1, "%d");
kai_tag_destroy(t);
}