summaryrefslogtreecommitdiff
path: root/shared/n-acd/src/test-api.c
diff options
context:
space:
mode:
Diffstat (limited to 'shared/n-acd/src/test-api.c')
-rw-r--r--shared/n-acd/src/test-api.c169
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;
}