1*d6eebaa4SHervé Poussineau #ifndef LWIP_HDR_LWIP_CHECK_H 2*d6eebaa4SHervé Poussineau #define LWIP_HDR_LWIP_CHECK_H 31734f297SVictor Perevertkin 41734f297SVictor Perevertkin /* Common header file for lwIP unit tests using the check framework */ 51734f297SVictor Perevertkin 61734f297SVictor Perevertkin #include <config.h> 71734f297SVictor Perevertkin #include <check.h> 81734f297SVictor Perevertkin #include <stdlib.h> 91734f297SVictor Perevertkin 101734f297SVictor Perevertkin #define FAIL_RET() do { fail(); return; } while(0) 111734f297SVictor Perevertkin #define EXPECT(x) fail_unless(x) 121734f297SVictor Perevertkin #define EXPECT_RET(x) do { fail_unless(x); if(!(x)) { return; }} while(0) 131734f297SVictor Perevertkin #define EXPECT_RETX(x, y) do { fail_unless(x); if(!(x)) { return y; }} while(0) 141734f297SVictor Perevertkin #define EXPECT_RETNULL(x) EXPECT_RETX(x, NULL) 151734f297SVictor Perevertkin 16*d6eebaa4SHervé Poussineau #if (CHECK_MAJOR_VERSION == 0 && CHECK_MINOR_VERSION < 13) 17*d6eebaa4SHervé Poussineau typedef struct { 18*d6eebaa4SHervé Poussineau TFun func; 19*d6eebaa4SHervé Poussineau const char *name; 20*d6eebaa4SHervé Poussineau } testfunc; 21*d6eebaa4SHervé Poussineau 22*d6eebaa4SHervé Poussineau #define TESTFUNC(x) {(x), "" # x "" } 23*d6eebaa4SHervé Poussineau 24*d6eebaa4SHervé Poussineau /* Modified function from check.h, supplying function name */ 25*d6eebaa4SHervé Poussineau #define tcase_add_named_test(tc,tf) \ 26*d6eebaa4SHervé Poussineau _tcase_add_test((tc),(tf).func,(tf).name,0, 0, 0, 1) 27*d6eebaa4SHervé Poussineau 28*d6eebaa4SHervé Poussineau #else 29*d6eebaa4SHervé Poussineau /* From 0.13.0 check keeps track of the method name internally */ 30*d6eebaa4SHervé Poussineau typedef const TTest * testfunc; 31*d6eebaa4SHervé Poussineau 32*d6eebaa4SHervé Poussineau #define TESTFUNC(x) x 33*d6eebaa4SHervé Poussineau 34*d6eebaa4SHervé Poussineau #define tcase_add_named_test(tc,tf) tcase_add_test(tc,tf) 35*d6eebaa4SHervé Poussineau #endif 36*d6eebaa4SHervé Poussineau 371734f297SVictor Perevertkin /** typedef for a function returning a test suite */ 381734f297SVictor Perevertkin typedef Suite* (suite_getter_fn)(void); 391734f297SVictor Perevertkin 401734f297SVictor Perevertkin /** Create a test suite */ 41*d6eebaa4SHervé Poussineau Suite* create_suite(const char* name, testfunc *tests, size_t num_tests, SFun setup, SFun teardown); 421734f297SVictor Perevertkin 43*d6eebaa4SHervé Poussineau #ifdef LWIP_UNITTESTS_LIB 44*d6eebaa4SHervé Poussineau int lwip_unittests_run(void) 45*d6eebaa4SHervé Poussineau #endif 461734f297SVictor Perevertkin 47*d6eebaa4SHervé Poussineau /* helper functions */ 48*d6eebaa4SHervé Poussineau #define SKIP_POOL(x) (1 << x) 49*d6eebaa4SHervé Poussineau #define SKIP_HEAP (1 << MEMP_MAX) 50*d6eebaa4SHervé Poussineau void lwip_check_ensure_no_alloc(unsigned int skip); 51*d6eebaa4SHervé Poussineau 52*d6eebaa4SHervé Poussineau #endif /* LWIP_HDR_LWIP_CHECK_H */ 53