xref: /minix3/minix/lib/liblwip/dist/test/unit/lwip_unittests.c (revision 5d5fbe79c1b60734f34c69330aec5496644e8651)
1*5d5fbe79SDavid van Moolenbroek #include "lwip_check.h"
2*5d5fbe79SDavid van Moolenbroek 
3*5d5fbe79SDavid van Moolenbroek #include "udp/test_udp.h"
4*5d5fbe79SDavid van Moolenbroek #include "tcp/test_tcp.h"
5*5d5fbe79SDavid van Moolenbroek #include "tcp/test_tcp_oos.h"
6*5d5fbe79SDavid van Moolenbroek #include "core/test_mem.h"
7*5d5fbe79SDavid van Moolenbroek #include "core/test_pbuf.h"
8*5d5fbe79SDavid van Moolenbroek #include "etharp/test_etharp.h"
9*5d5fbe79SDavid van Moolenbroek #include "dhcp/test_dhcp.h"
10*5d5fbe79SDavid van Moolenbroek #include "mdns/test_mdns.h"
11*5d5fbe79SDavid van Moolenbroek 
12*5d5fbe79SDavid van Moolenbroek #include "lwip/init.h"
13*5d5fbe79SDavid van Moolenbroek 
create_suite(const char * name,testfunc * tests,size_t num_tests,SFun setup,SFun teardown)14*5d5fbe79SDavid van Moolenbroek Suite* create_suite(const char* name, testfunc *tests, size_t num_tests, SFun setup, SFun teardown)
15*5d5fbe79SDavid van Moolenbroek {
16*5d5fbe79SDavid van Moolenbroek   size_t i;
17*5d5fbe79SDavid van Moolenbroek   Suite *s = suite_create(name);
18*5d5fbe79SDavid van Moolenbroek 
19*5d5fbe79SDavid van Moolenbroek   for(i = 0; i < num_tests; i++) {
20*5d5fbe79SDavid van Moolenbroek     TCase *tc_core = tcase_create(name);
21*5d5fbe79SDavid van Moolenbroek     if ((setup != NULL) || (teardown != NULL)) {
22*5d5fbe79SDavid van Moolenbroek       tcase_add_checked_fixture(tc_core, setup, teardown);
23*5d5fbe79SDavid van Moolenbroek     }
24*5d5fbe79SDavid van Moolenbroek     tcase_add_named_test(tc_core, tests[i]);
25*5d5fbe79SDavid van Moolenbroek     suite_add_tcase(s, tc_core);
26*5d5fbe79SDavid van Moolenbroek   }
27*5d5fbe79SDavid van Moolenbroek   return s;
28*5d5fbe79SDavid van Moolenbroek }
29*5d5fbe79SDavid van Moolenbroek 
30*5d5fbe79SDavid van Moolenbroek #ifdef LWIP_UNITTESTS_LIB
lwip_unittests_run(void)31*5d5fbe79SDavid van Moolenbroek int lwip_unittests_run(void)
32*5d5fbe79SDavid van Moolenbroek #else
33*5d5fbe79SDavid van Moolenbroek int main(void)
34*5d5fbe79SDavid van Moolenbroek #endif
35*5d5fbe79SDavid van Moolenbroek {
36*5d5fbe79SDavid van Moolenbroek   int number_failed;
37*5d5fbe79SDavid van Moolenbroek   SRunner *sr;
38*5d5fbe79SDavid van Moolenbroek   size_t i;
39*5d5fbe79SDavid van Moolenbroek   suite_getter_fn* suites[] = {
40*5d5fbe79SDavid van Moolenbroek     udp_suite,
41*5d5fbe79SDavid van Moolenbroek     tcp_suite,
42*5d5fbe79SDavid van Moolenbroek     tcp_oos_suite,
43*5d5fbe79SDavid van Moolenbroek     mem_suite,
44*5d5fbe79SDavid van Moolenbroek     pbuf_suite,
45*5d5fbe79SDavid van Moolenbroek     etharp_suite,
46*5d5fbe79SDavid van Moolenbroek     dhcp_suite,
47*5d5fbe79SDavid van Moolenbroek     mdns_suite
48*5d5fbe79SDavid van Moolenbroek   };
49*5d5fbe79SDavid van Moolenbroek   size_t num = sizeof(suites)/sizeof(void*);
50*5d5fbe79SDavid van Moolenbroek   LWIP_ASSERT("No suites defined", num > 0);
51*5d5fbe79SDavid van Moolenbroek 
52*5d5fbe79SDavid van Moolenbroek   lwip_init();
53*5d5fbe79SDavid van Moolenbroek 
54*5d5fbe79SDavid van Moolenbroek   sr = srunner_create((suites[0])());
55*5d5fbe79SDavid van Moolenbroek   for(i = 1; i < num; i++) {
56*5d5fbe79SDavid van Moolenbroek     srunner_add_suite(sr, ((suite_getter_fn*)suites[i])());
57*5d5fbe79SDavid van Moolenbroek   }
58*5d5fbe79SDavid van Moolenbroek 
59*5d5fbe79SDavid van Moolenbroek #ifdef LWIP_UNITTESTS_NOFORK
60*5d5fbe79SDavid van Moolenbroek   srunner_set_fork_status(sr, CK_NOFORK);
61*5d5fbe79SDavid van Moolenbroek #endif
62*5d5fbe79SDavid van Moolenbroek #ifdef LWIP_UNITTESTS_FORK
63*5d5fbe79SDavid van Moolenbroek   srunner_set_fork_status(sr, CK_FORK);
64*5d5fbe79SDavid van Moolenbroek #endif
65*5d5fbe79SDavid van Moolenbroek 
66*5d5fbe79SDavid van Moolenbroek   srunner_run_all(sr, CK_NORMAL);
67*5d5fbe79SDavid van Moolenbroek   number_failed = srunner_ntests_failed(sr);
68*5d5fbe79SDavid van Moolenbroek   srunner_free(sr);
69*5d5fbe79SDavid van Moolenbroek   return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
70*5d5fbe79SDavid van Moolenbroek }
71