xref: /minix3/minix/lib/liblwip/dist/test/unit/udp/test_udp.c (revision 5d5fbe79c1b60734f34c69330aec5496644e8651)
1*5d5fbe79SDavid van Moolenbroek #include "test_udp.h"
2*5d5fbe79SDavid van Moolenbroek 
3*5d5fbe79SDavid van Moolenbroek #include "lwip/udp.h"
4*5d5fbe79SDavid van Moolenbroek #include "lwip/stats.h"
5*5d5fbe79SDavid van Moolenbroek 
6*5d5fbe79SDavid van Moolenbroek #if !LWIP_STATS || !UDP_STATS || !MEMP_STATS
7*5d5fbe79SDavid van Moolenbroek #error "This tests needs UDP- and MEMP-statistics enabled"
8*5d5fbe79SDavid van Moolenbroek #endif
9*5d5fbe79SDavid van Moolenbroek 
10*5d5fbe79SDavid van Moolenbroek /* Helper functions */
11*5d5fbe79SDavid van Moolenbroek static void
udp_remove_all(void)12*5d5fbe79SDavid van Moolenbroek udp_remove_all(void)
13*5d5fbe79SDavid van Moolenbroek {
14*5d5fbe79SDavid van Moolenbroek   struct udp_pcb *pcb = udp_pcbs;
15*5d5fbe79SDavid van Moolenbroek   struct udp_pcb *pcb2;
16*5d5fbe79SDavid van Moolenbroek 
17*5d5fbe79SDavid van Moolenbroek   while(pcb != NULL) {
18*5d5fbe79SDavid van Moolenbroek     pcb2 = pcb;
19*5d5fbe79SDavid van Moolenbroek     pcb = pcb->next;
20*5d5fbe79SDavid van Moolenbroek     udp_remove(pcb2);
21*5d5fbe79SDavid van Moolenbroek   }
22*5d5fbe79SDavid van Moolenbroek   fail_unless(MEMP_STATS_GET(used, MEMP_UDP_PCB) == 0);
23*5d5fbe79SDavid van Moolenbroek }
24*5d5fbe79SDavid van Moolenbroek 
25*5d5fbe79SDavid van Moolenbroek /* Setups/teardown functions */
26*5d5fbe79SDavid van Moolenbroek 
27*5d5fbe79SDavid van Moolenbroek static void
udp_setup(void)28*5d5fbe79SDavid van Moolenbroek udp_setup(void)
29*5d5fbe79SDavid van Moolenbroek {
30*5d5fbe79SDavid van Moolenbroek   udp_remove_all();
31*5d5fbe79SDavid van Moolenbroek }
32*5d5fbe79SDavid van Moolenbroek 
33*5d5fbe79SDavid van Moolenbroek static void
udp_teardown(void)34*5d5fbe79SDavid van Moolenbroek udp_teardown(void)
35*5d5fbe79SDavid van Moolenbroek {
36*5d5fbe79SDavid van Moolenbroek   udp_remove_all();
37*5d5fbe79SDavid van Moolenbroek }
38*5d5fbe79SDavid van Moolenbroek 
39*5d5fbe79SDavid van Moolenbroek 
40*5d5fbe79SDavid van Moolenbroek /* Test functions */
41*5d5fbe79SDavid van Moolenbroek 
START_TEST(test_udp_new_remove)42*5d5fbe79SDavid van Moolenbroek START_TEST(test_udp_new_remove)
43*5d5fbe79SDavid van Moolenbroek {
44*5d5fbe79SDavid van Moolenbroek   struct udp_pcb* pcb;
45*5d5fbe79SDavid van Moolenbroek   LWIP_UNUSED_ARG(_i);
46*5d5fbe79SDavid van Moolenbroek 
47*5d5fbe79SDavid van Moolenbroek   fail_unless(MEMP_STATS_GET(used, MEMP_UDP_PCB) == 0);
48*5d5fbe79SDavid van Moolenbroek 
49*5d5fbe79SDavid van Moolenbroek   pcb = udp_new();
50*5d5fbe79SDavid van Moolenbroek   fail_unless(pcb != NULL);
51*5d5fbe79SDavid van Moolenbroek   if (pcb != NULL) {
52*5d5fbe79SDavid van Moolenbroek     fail_unless(MEMP_STATS_GET(used, MEMP_UDP_PCB) == 1);
53*5d5fbe79SDavid van Moolenbroek     udp_remove(pcb);
54*5d5fbe79SDavid van Moolenbroek     fail_unless(MEMP_STATS_GET(used, MEMP_UDP_PCB) == 0);
55*5d5fbe79SDavid van Moolenbroek   }
56*5d5fbe79SDavid van Moolenbroek }
57*5d5fbe79SDavid van Moolenbroek END_TEST
58*5d5fbe79SDavid van Moolenbroek 
59*5d5fbe79SDavid van Moolenbroek 
60*5d5fbe79SDavid van Moolenbroek /** Create the suite including all tests for this module */
61*5d5fbe79SDavid van Moolenbroek Suite *
udp_suite(void)62*5d5fbe79SDavid van Moolenbroek udp_suite(void)
63*5d5fbe79SDavid van Moolenbroek {
64*5d5fbe79SDavid van Moolenbroek   testfunc tests[] = {
65*5d5fbe79SDavid van Moolenbroek     TESTFUNC(test_udp_new_remove),
66*5d5fbe79SDavid van Moolenbroek   };
67*5d5fbe79SDavid van Moolenbroek   return create_suite("UDP", tests, sizeof(tests)/sizeof(testfunc), udp_setup, udp_teardown);
68*5d5fbe79SDavid van Moolenbroek }
69