lwip_unittests.c 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  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 "mqtt/test_mqtt.h"
  12. #include "api/test_sockets.h"
  13. #include "lwip/init.h"
  14. #if !NO_SYS
  15. #include "lwip/tcpip.h"
  16. #endif
  17. Suite* create_suite(const char* name, testfunc *tests, size_t num_tests, SFun setup, SFun teardown)
  18. {
  19. size_t i;
  20. Suite *s = suite_create(name);
  21. for(i = 0; i < num_tests; i++) {
  22. TCase *tc_core = tcase_create(name);
  23. if ((setup != NULL) || (teardown != NULL)) {
  24. tcase_add_checked_fixture(tc_core, setup, teardown);
  25. }
  26. tcase_add_named_test(tc_core, tests[i]);
  27. suite_add_tcase(s, tc_core);
  28. }
  29. return s;
  30. }
  31. void lwip_check_ensure_no_alloc(unsigned int skip)
  32. {
  33. int i;
  34. unsigned int mask;
  35. if (!(skip & SKIP_HEAP)) {
  36. fail_unless(lwip_stats.mem.used == 0);
  37. }
  38. for (i = 0, mask = 1; i < MEMP_MAX; i++, mask <<= 1) {
  39. if (!(skip & mask)) {
  40. fail_unless(lwip_stats.memp[i]->used == 0);
  41. }
  42. }
  43. }
  44. #ifdef LWIP_UNITTESTS_LIB
  45. int lwip_unittests_run(void)
  46. #else
  47. int main(void)
  48. #endif
  49. {
  50. int number_failed;
  51. SRunner *sr;
  52. size_t i;
  53. suite_getter_fn* suites[] = {
  54. ip4_suite,
  55. udp_suite,
  56. tcp_suite,
  57. tcp_oos_suite,
  58. mem_suite,
  59. pbuf_suite,
  60. etharp_suite,
  61. dhcp_suite,
  62. mdns_suite,
  63. mqtt_suite,
  64. sockets_suite
  65. };
  66. size_t num = sizeof(suites)/sizeof(void*);
  67. LWIP_ASSERT("No suites defined", num > 0);
  68. #if NO_SYS
  69. lwip_init();
  70. #else
  71. tcpip_init(NULL, NULL);
  72. #endif
  73. sr = srunner_create((suites[0])());
  74. for(i = 1; i < num; i++) {
  75. srunner_add_suite(sr, ((suite_getter_fn*)suites[i])());
  76. }
  77. #ifdef LWIP_UNITTESTS_NOFORK
  78. srunner_set_fork_status(sr, CK_NOFORK);
  79. #endif
  80. #ifdef LWIP_UNITTESTS_FORK
  81. srunner_set_fork_status(sr, CK_FORK);
  82. #endif
  83. srunner_run_all(sr, CK_NORMAL);
  84. number_failed = srunner_ntests_failed(sr);
  85. srunner_free(sr);
  86. return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
  87. }