diff options
Diffstat (limited to 'shared/n-acd/src/test-api.c')
-rw-r--r-- | shared/n-acd/src/test-api.c | 169 |
1 files changed, 76 insertions, 93 deletions
diff --git a/shared/n-acd/src/test-api.c b/shared/n-acd/src/test-api.c index e16de48b73..70f7520836 100644 --- a/shared/n-acd/src/test-api.c +++ b/shared/n-acd/src/test-api.c @@ -1,105 +1,88 @@ /* * Tests for n-acd API - * This verifies the visibility and availability of the public API of the - * n-acd library. + * This verifies the visibility and availability of the public API. */ +#undef NDEBUG +#include <assert.h> #include <stdlib.h> -#include "test.h" - -static void test_api(void) { - NAcdConfig *config = NULL; - NAcd *acd = NULL; - int r; - - assert(N_ACD_E_PREEMPTED); - assert(N_ACD_E_INVALID_ARGUMENT); - - assert(N_ACD_TRANSPORT_ETHERNET != _N_ACD_TRANSPORT_N); - - assert(N_ACD_EVENT_READY != _N_ACD_EVENT_N); - assert(N_ACD_EVENT_USED != _N_ACD_EVENT_N); - assert(N_ACD_EVENT_DEFENDED != _N_ACD_EVENT_N); - assert(N_ACD_EVENT_CONFLICT != _N_ACD_EVENT_N); - assert(N_ACD_EVENT_DOWN != _N_ACD_EVENT_N); - - assert(N_ACD_DEFEND_NEVER != _N_ACD_DEFEND_N); - assert(N_ACD_DEFEND_ONCE != _N_ACD_DEFEND_N); - assert(N_ACD_DEFEND_ALWAYS != _N_ACD_DEFEND_N); - - n_acd_config_freep(&config); - - r = n_acd_config_new(&config); - assert(!r); - - n_acd_config_set_ifindex(config, 1); - n_acd_config_set_transport(config, N_ACD_TRANSPORT_ETHERNET); - n_acd_config_set_mac(config, (uint8_t[6]){ }, 6); - - { - NAcdEvent *event; - int fd; - - n_acd_unrefp(&acd); - n_acd_ref(NULL); - - r = n_acd_new(&acd, config); - assert(!r); - - n_acd_get_fd(acd, &fd); - n_acd_dispatch(acd); - n_acd_pop_event(acd, &event); - - { - NAcdProbeConfig *c = NULL; - - n_acd_probe_config_freep(&c); - - r = n_acd_probe_config_new(&c); - assert(!r); - - n_acd_probe_config_set_ip(c, (struct in_addr){ 1 }); - n_acd_probe_config_set_timeout(c, N_ACD_TIMEOUT_RFC5227); - - { - NAcdProbe *probe = NULL; - void *userdata; - - r = n_acd_probe(acd, &probe, c); - assert(!r); - - n_acd_probe_get_userdata(probe, &userdata); - assert(userdata == NULL); - n_acd_probe_set_userdata(probe, acd); - n_acd_probe_get_userdata(probe, &userdata); - assert(userdata == acd); - - r = n_acd_probe_announce(probe, N_ACD_DEFEND_ONCE); - assert(!r); - - n_acd_probe_free(probe); - n_acd_probe_freev(NULL); - } - - n_acd_probe_config_free(c); - n_acd_probe_config_freev(NULL); - } +#include "n-acd.h" + +static void test_api_constants(void) { + assert(1 + N_ACD_TIMEOUT_RFC5227); + + assert(1 + _N_ACD_E_SUCCESS); + assert(1 + N_ACD_E_PREEMPTED); + assert(1 + N_ACD_E_INVALID_ARGUMENT); + assert(1 + _N_ACD_E_N); + + assert(1 + N_ACD_TRANSPORT_ETHERNET); + assert(1 + _N_ACD_TRANSPORT_N); + + assert(1 + N_ACD_EVENT_READY); + assert(1 + N_ACD_EVENT_USED); + assert(1 + N_ACD_EVENT_DEFENDED); + assert(1 + N_ACD_EVENT_CONFLICT); + assert(1 + N_ACD_EVENT_DOWN); + assert(1 + _N_ACD_EVENT_N); + + assert(1 + N_ACD_DEFEND_NEVER); + assert(1 + N_ACD_DEFEND_ONCE); + assert(1 + N_ACD_DEFEND_ALWAYS); + assert(1 + _N_ACD_DEFEND_N); +} - n_acd_unref(acd); - n_acd_unrefv(NULL); - } +static void test_api_types(void) { + assert(sizeof(NAcdEvent*)); + assert(sizeof(NAcdConfig*)); + assert(sizeof(NAcdProbeConfig*)); + assert(sizeof(NAcd*)); + assert(sizeof(NAcdProbe*)); +} - n_acd_config_free(config); - n_acd_config_freev(NULL); +static void test_api_functions(void) { + void *fns[] = { + (void *)n_acd_config_new, + (void *)n_acd_config_free, + (void *)n_acd_config_set_ifindex, + (void *)n_acd_config_set_transport, + (void *)n_acd_config_set_mac, + (void *)n_acd_probe_config_new, + (void *)n_acd_probe_config_free, + (void *)n_acd_probe_config_set_ip, + (void *)n_acd_probe_config_set_timeout, + + (void *)n_acd_new, + (void *)n_acd_ref, + (void *)n_acd_unref, + (void *)n_acd_get_fd, + (void *)n_acd_dispatch, + (void *)n_acd_pop_event, + (void *)n_acd_probe, + + (void *)n_acd_probe_free, + (void *)n_acd_probe_set_userdata, + (void *)n_acd_probe_get_userdata, + (void *)n_acd_probe_announce, + + (void *)n_acd_config_freep, + (void *)n_acd_config_freev, + (void *)n_acd_probe_config_freep, + (void *)n_acd_probe_config_freev, + (void *)n_acd_unrefp, + (void *)n_acd_unrefv, + (void *)n_acd_probe_freep, + (void *)n_acd_probe_freev, + }; + size_t i; + + for (i = 0; i < sizeof(fns) / sizeof(*fns); ++i) + assert(!!fns[i]); } int main(int argc, char **argv) { - int r; - - r = test_setup(); - if (r) - return r; - - test_api(); + test_api_constants(); + test_api_types(); + test_api_functions(); return 0; } |