1 #ifndef LWIP_HDR_LWIP_CHECK_H
2 #define LWIP_HDR_LWIP_CHECK_H
3 
4 /* Common header file for lwIP unit tests using the check framework */
5 
6 #include <config.h>
7 #include <check.h>
8 #include <stdlib.h>
9 
10 #define FAIL_RET() do { fail(); return; } while(0)
11 #define EXPECT(x) fail_unless(x)
12 #define EXPECT_RET(x) do { fail_unless(x); if(!(x)) { return; }} while(0)
13 #define EXPECT_RETX(x, y) do { fail_unless(x); if(!(x)) { return y; }} while(0)
14 #define EXPECT_RETNULL(x) EXPECT_RETX(x, NULL)
15 
16 #if (CHECK_MAJOR_VERSION == 0 && CHECK_MINOR_VERSION < 13)
17 typedef struct {
18   TFun func;
19   const char *name;
20 } testfunc;
21 
22 #define TESTFUNC(x) {(x), "" # x "" }
23 
24 /* Modified function from check.h, supplying function name */
25 #define tcase_add_named_test(tc,tf) \
26    _tcase_add_test((tc),(tf).func,(tf).name,0, 0, 0, 1)
27 
28 #else
29 /* From 0.13.0 check keeps track of the method name internally */
30 typedef const TTest * testfunc;
31 
32 #define TESTFUNC(x) x
33 
34 #define tcase_add_named_test(tc,tf) tcase_add_test(tc,tf)
35 #endif
36 
37 /** typedef for a function returning a test suite */
38 typedef Suite* (suite_getter_fn)(void);
39 
40 /** Create a test suite */
41 Suite* create_suite(const char* name, testfunc *tests, size_t num_tests, SFun setup, SFun teardown);
42 
43 #ifdef LWIP_UNITTESTS_LIB
44 int lwip_unittests_run(void)
45 #endif
46 
47 /* helper functions */
48 #define SKIP_POOL(x) (1 << x)
49 #define SKIP_HEAP    (1 << MEMP_MAX)
50 void lwip_check_ensure_no_alloc(unsigned int skip);
51 
52 #endif /* LWIP_HDR_LWIP_CHECK_H */
53