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