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 Moolenbroekudp_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 Moolenbroekudp_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 Moolenbroekudp_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 MoolenbroekSTART_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 Moolenbroekudp_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