lwip_unittests.c 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #include "lwip_check.h"
  2. #include "ip4/test_ip4.h"
  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. #include "lwip/init.h"
  12. Suite* create_suite(const char* name, testfunc *tests, size_t num_tests, SFun setup, SFun teardown)
  13. {
  14. size_t i;
  15. Suite *s = suite_create(name);
  16. for(i = 0; i < num_tests; i++) {
  17. TCase *tc_core = tcase_create(name);
  18. if ((setup != NULL) || (teardown != NULL)) {
  19. tcase_add_checked_fixture(tc_core, setup, teardown);
  20. }
  21. tcase_add_named_test(tc_core, tests[i]);
  22. suite_add_tcase(s, tc_core);
  23. }
  24. return s;
  25. }
  26. #ifdef LWIP_UNITTESTS_LIB
  27. int lwip_unittests_run(void)
  28. #else
  29. int main(void)
  30. #endif
  31. {
  32. int number_failed;
  33. SRunner *sr;
  34. size_t i;
  35. suite_getter_fn* suites[] = {
  36. ip4_suite,
  37. udp_suite,
  38. tcp_suite,
  39. tcp_oos_suite,
  40. mem_suite,
  41. pbuf_suite,
  42. etharp_suite,
  43. dhcp_suite,
  44. mdns_suite
  45. };
  46. size_t num = sizeof(suites)/sizeof(void*);
  47. LWIP_ASSERT("No suites defined", num > 0);
  48. lwip_init();
  49. sr = srunner_create((suites[0])());
  50. for(i = 1; i < num; i++) {
  51. srunner_add_suite(sr, ((suite_getter_fn*)suites[i])());
  52. }
  53. #ifdef LWIP_UNITTESTS_NOFORK
  54. srunner_set_fork_status(sr, CK_NOFORK);
  55. #endif
  56. #ifdef LWIP_UNITTESTS_FORK
  57. srunner_set_fork_status(sr, CK_FORK);
  58. #endif
  59. srunner_run_all(sr, CK_NORMAL);
  60. number_failed = srunner_ntests_failed(sr);
  61. srunner_free(sr);
  62. return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
  63. }