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 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 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