1 #include "iowow.h"
2 #include <CUnit/Basic.h>
3 #include "iwre.h"
4
init_suite(void)5 static int init_suite(void) {
6 return iw_init();
7 }
8
clean_suite(void)9 static int clean_suite(void) {
10 return 0;
11 }
12
iwre_test1(void)13 static void iwre_test1(void) {
14 struct iwre *re = iwre_create("^(one1)(two)?");
15 const char *mpairs[10];
16 int rv = iwre_match(re, "one1two", mpairs, 10);
17 CU_ASSERT_EQUAL(rv, 3);
18 for (int i = 0, j = 0; i < 2 * rv; i += 2, ++j) {
19 intptr_t l = mpairs[i + 1] - mpairs[i];
20 switch(j) {
21 case 0:
22 CU_ASSERT_EQUAL(l, 7);
23 CU_ASSERT_EQUAL(strncmp(mpairs[i], "one1two", l), 0);
24 break;
25 case 1:
26 CU_ASSERT_EQUAL(l, 4);
27 CU_ASSERT_EQUAL(strncmp(mpairs[i], "one1", l), 0);
28 break;
29 case 2:
30 CU_ASSERT_EQUAL(l, 3);
31 CU_ASSERT_EQUAL(strncmp(mpairs[i], "two", l), 0);
32 break;
33 }
34 }
35 iwre_destroy(re);
36 }
37
main(int argc,const char * argv[])38 int main(int argc, const char *argv[]) {
39 CU_pSuite pSuite = NULL;
40
41 /* Initialize the CUnit test registry */
42 if (CUE_SUCCESS != CU_initialize_registry()) {
43 return CU_get_error();
44 }
45
46 /* Add a suite to the registry */
47 pSuite = CU_add_suite("iwre_test1", init_suite, clean_suite);
48
49 if (NULL == pSuite) {
50 CU_cleanup_registry();
51 return CU_get_error();
52 }
53
54 /* Add the tests to the suite */
55 if ((NULL == CU_add_test(pSuite, "iwre_test1", iwre_test1))) {
56 CU_cleanup_registry();
57 return CU_get_error();
58 }
59
60 /* Run all tests using the CUnit Basic interface */
61 CU_basic_set_mode(CU_BRM_VERBOSE);
62 CU_basic_run_tests();
63 int ret = CU_get_error() || CU_get_number_of_failures();
64 CU_cleanup_registry();
65 return ret;
66 }
67