BA / Mbed OS BaBoRo1
Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers lwip_unittests.c Source File

lwip_unittests.c

00001 #include "lwip_check.h"
00002 
00003 #include "udp/test_udp.h"
00004 #include "tcp/test_tcp.h"
00005 #include "tcp/test_tcp_oos.h"
00006 #include "core/test_mem.h"
00007 #include "core/test_pbuf.h"
00008 #include "etharp/test_etharp.h"
00009 #include "dhcp/test_dhcp.h"
00010 #include "mdns/test_mdns.h"
00011 
00012 #include "lwip/init.h"
00013 
00014 Suite* create_suite(const char* name, testfunc *tests, size_t num_tests, SFun setup, SFun teardown)
00015 {
00016   size_t i;
00017   Suite *s = suite_create(name);
00018 
00019   for(i = 0; i < num_tests; i++) {
00020     TCase *tc_core = tcase_create(name);
00021     if ((setup != NULL) || (teardown != NULL)) {
00022       tcase_add_checked_fixture(tc_core, setup, teardown);
00023     }
00024     tcase_add_named_test(tc_core, tests[i]);
00025     suite_add_tcase(s, tc_core);
00026   }
00027   return s;
00028 }
00029 
00030 #ifdef LWIP_UNITTESTS_LIB
00031 int lwip_unittests_run(void)
00032 #else
00033 int main(void)
00034 #endif
00035 {
00036   int number_failed;
00037   SRunner *sr;
00038   size_t i;
00039   suite_getter_fn* suites[] = {
00040     udp_suite,
00041     tcp_suite,
00042     tcp_oos_suite,
00043     mem_suite,
00044     pbuf_suite,
00045     etharp_suite,
00046     dhcp_suite,
00047     mdns_suite
00048   };
00049   size_t num = sizeof(suites)/sizeof(void*);
00050   LWIP_ASSERT("No suites defined", num > 0);
00051 
00052   lwip_init();
00053 
00054   sr = srunner_create((suites[0])());
00055   for(i = 1; i < num; i++) {
00056     srunner_add_suite(sr, ((suite_getter_fn*)suites[i])());
00057   }
00058 
00059 #ifdef LWIP_UNITTESTS_NOFORK
00060   srunner_set_fork_status(sr, CK_NOFORK);
00061 #endif
00062 #ifdef LWIP_UNITTESTS_FORK
00063   srunner_set_fork_status(sr, CK_FORK);
00064 #endif
00065 
00066   srunner_run_all(sr, CK_NORMAL);
00067   number_failed = srunner_ntests_failed(sr);
00068   srunner_free(sr);
00069   return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
00070 }