#include #include "util.h" LILY_FILE_BEGIN(util_suite) LILY_TEST("expand NULL array") { size_t count = 0; int *array = NULL; int *first = kai_expand_array((void**) &array, &count, sizeof(int)); CHECK_NEQ(first, NULL, "%p"); CHECK_NEQ(array, NULL, "%p"); CHECK_EQ(first, array, "%p"); CHECK_EQ(count, 1, "%d"); int *second = kai_expand_array((void**) &array, &count, sizeof(int)); CHECK_NEQ(second, NULL, "%p"); CHECK_EQ(second, array+1, "%p"); CHECK_EQ(count, 2, "%d"); free(array); } #include LILY_PUSH_TEST() struct test100 { int value; const char *str; }; LILY_TEST("expand array 100 times") { size_t count = 0; struct test100 *array = NULL; const char *str = "hello, world!"; for (int i=0; i<100; i++) { struct test100 *element = kai_expand_array((void**) &array, &count, sizeof(struct test100)); element->value = i; element->str = str; } CHECK_EQ(count, 100, "%ul"); for (int i=0; i<100; i++) { CHECK_EQ(array[i].value, i, "%d"); CHECK_EQ(array[i].str, str, "%p"); } free(array); } #include LILY_PUSH_TEST() LILY_TEST("convert string to real array") { const char *str = "0 0.5 1 1.5 2"; ka_real_t array[5]; int conv = kai_text_to_reals(array, str, 5); CHECK_EQ(conv, 5, "%d"); CHECK_EQF(array[0], 0.0f, "%f"); CHECK_EQF(array[1], 0.5f, "%f"); CHECK_EQF(array[2], 1.0f, "%f"); CHECK_EQF(array[3], 1.5f, "%f"); CHECK_EQF(array[4], 2.0f, "%f"); } #include LILY_PUSH_TEST() LILY_TEST("convert string to real array with fewer conversions than expected") { const char *str = "0 0.5 1"; ka_real_t array[5]; int conv = kai_text_to_reals(array, str, 5); CHECK_EQ(conv, 3, "%d"); CHECK_EQF(array[0], 0.0f, "%f"); CHECK_EQF(array[1], 0.5f, "%f"); CHECK_EQF(array[2], 1.0f, "%f"); CHECK_EQF(array[3], 0.0f, "%f"); CHECK_EQF(array[4], 0.0f, "%f"); } #include LILY_PUSH_TEST() LILY_TEST("convert string to int array") { /* the lucas numbers 4 u math fans out there */ const char *str = "2 1 3 4 7"; long array[5]; int conv = kai_text_to_longs(array, str, 5); CHECK_EQ(conv, 5, "%d"); CHECK_EQ(array[0], 2, "%d"); CHECK_EQ(array[1], 1, "%d"); CHECK_EQ(array[2], 3, "%d"); CHECK_EQ(array[3], 4, "%d"); CHECK_EQ(array[4], 7, "%d"); } #include LILY_PUSH_TEST() LILY_TEST("convert string to int array with fewer conversions than expected") { const char *str = "2 1"; long array[5]; int conv = kai_text_to_longs(array, str, 5); CHECK_EQ(conv, 2, "%d"); CHECK_EQ(array[0], 2, "%d"); CHECK_EQ(array[1], 1, "%d"); CHECK_EQ(array[2], 0, "%d"); CHECK_EQ(array[3], 0, "%d"); CHECK_EQ(array[4], 0, "%d"); } #include LILY_PUSH_TEST() #define LILY_FILE_END #include LILY_REGISTER_TESTS()