summaryrefslogtreecommitdiff
path: root/src/node.test.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/node.test.c')
-rw-r--r--src/node.test.c103
1 files changed, 103 insertions, 0 deletions
diff --git a/src/node.test.c b/src/node.test.c
index 236d200..26837c9 100644
--- a/src/node.test.c
+++ b/src/node.test.c
@@ -1,8 +1,111 @@
+#include <string.h>
+
#include <kalmia.h>
#include <ezxml.h>
#include "test/test.h"
+#include "transform.h"
+#include "node.h"
+
+
+void empty();
+void transforms();
void suite_node()
{
+ lily_run_test(empty);
+ lily_run_test(transforms);
+}
+
+
+void empty()
+{
+ char str[512];
+ strncpy(
+ str,
+ "<node></node>",
+ 512
+ );
+ ezxml_t tag = ezxml_parse_str(str, strlen(str));
+
+ kalmia_t k;
+ k.node = NULL;
+ k.n_nodes = 0;
+ k.n_nodes_max = 0;
+
+ ka_node_t *node = kai_parse_node(&k, tag);
+ lily_assert_not_null(k.node);
+ lily_assert_not_null(node);
+ lily_assert_int_equal(k.n_nodes, 1);
+ lily_assert_ptr_equal(k.node, node);
+
+ ka_matrix_t identity;
+ kai_identity(&identity);
+
+ int i=0;
+ for (i=0; i<16; i++) {
+ lily_assert_float_equal(
+ node->transform[i],
+ identity[i],
+ 1e-3
+ );
+ }
+
+ ezxml_free(tag);
+ free(k.node);
+}
+
+
+void transforms()
+{
+ char str[512];
+ strncpy(
+ str,
+ "<node>\n"
+ " <translate>10.0 2.0 5.0</translate>\n"
+ " <scale>5.0 1.0 2.0</scale>\n"
+ "</node>",
+ 512
+ );
+ ezxml_t tag = ezxml_parse_str(str, strlen(str));
+
+ kalmia_t k;
+ k.node = NULL;
+ k.n_nodes = 0;
+ k.n_nodes_max = 0;
+
+ ka_node_t *node = kai_parse_node(&k, tag);
+ lily_assert_not_null(k.node);
+ lily_assert_not_null(node);
+ lily_assert_int_equal(k.n_nodes, 1);
+ lily_assert_ptr_equal(k.node, node);
+
+ ka_matrix_t translate = {
+ 1.0f, 0.0f, 0.0f, 10.0f,
+ 0.0f, 1.0f, 0.0f, 2.0f,
+ 0.0f, 0.0f, 1.0f, 5.0f,
+ 0.0f, 0.0f, 0.0f, 1.0f,
+ };
+ ka_matrix_t scale = {
+ 5.0f, 0.0f, 0.0f, 0.0f,
+ 0.0f, 1.0f, 0.0f, 0.0f,
+ 0.0f, 0.0f, 2.0f, 0.0f,
+ 0.0f, 0.0f, 0.0f, 1.0f,
+ };
+
+ ka_matrix_t expected;
+ kai_multiply(&expected, translate, scale);
+
+
+ int i=0;
+ for (i=0; i<16; i++) {
+ lily_assert_float_equal(
+ node->transform[i],
+ expected[i],
+ 1e-3
+ );
+ }
+
+ ezxml_free(tag);
+ free(k.node);
}