1 #include "iowow.h"
2 #include "iwcfg.h"
3 #include <CUnit/Basic.h>
4 #include "iwarr.h"
5
6
init_suite(void)7 int init_suite(void) {
8 return iw_init();
9 }
10
clean_suite(void)11 int clean_suite(void) {
12 return 0;
13 }
14
icmp(const void * v1,const void * v2)15 static int icmp(const void *v1, const void *v2) {
16 int i1, i2;
17 memcpy(&i1, v1, sizeof(i1));
18 memcpy(&i2, v2, sizeof(i2));
19 return i1 < i2 ? -1 : i1 > i2 ? 1 : 0;
20 }
21
test_iwarr1(void)22 void test_iwarr1(void) {
23 #define DSIZE 22
24 int data[DSIZE + 1] = {0};
25 int nc = 0;
26 off_t idx;
27 for (int i = 0; nc < DSIZE / 2; i += 2, nc++) {
28 idx = iwarr_sorted_insert(data, nc, sizeof(int), &i, icmp, false);
29 }
30 CU_ASSERT_EQUAL_FATAL(idx, 10);
31 for (int i = 0, j = 0; i < idx; j += 2, ++i) {
32 CU_ASSERT_EQUAL_FATAL(data[i], j);
33 }
34 for (int i = 1; nc < DSIZE; i += 2, nc++) {
35 idx = iwarr_sorted_insert(data, nc, sizeof(int), &i, icmp, false);
36 }
37 for (int i = 0; i < nc; ++i) {
38 CU_ASSERT_EQUAL_FATAL(data[i], i);
39 }
40 }
41
main()42 int main() {
43 CU_pSuite pSuite = NULL;
44
45 /* Initialize the CUnit test registry */
46 if (CUE_SUCCESS != CU_initialize_registry())
47 return CU_get_error();
48
49 /* Add a suite to the registry */
50 pSuite = CU_add_suite("iwarr_test1", init_suite, clean_suite);
51
52 if (NULL == pSuite) {
53 CU_cleanup_registry();
54 return CU_get_error();
55 }
56
57 /* Add the tests to the suite */
58 if ((NULL == CU_add_test(pSuite, "test_iwarr1", test_iwarr1))) {
59 CU_cleanup_registry();
60 return CU_get_error();
61 }
62
63 /* Run all tests using the CUnit Basic interface */
64 CU_basic_set_mode(CU_BRM_VERBOSE);
65 CU_basic_run_tests();
66 int ret = CU_get_error() || CU_get_number_of_failures();
67 CU_cleanup_registry();
68 return ret;
69 }
70