#include #include #include #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, "", 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, "\n" " 10.0 2.0 5.0\n" " 5.0 1.0 2.0\n" "", 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); }