remove @EAP_LDFLAGS@, no longer exists
[mech_eap.git] / libeap / tests / test-list.c
diff --git a/libeap/tests/test-list.c b/libeap/tests/test-list.c
new file mode 100644 (file)
index 0000000..930ce41
--- /dev/null
@@ -0,0 +1,78 @@
+/*
+ * Doubly-linked list - test program
+ * Copyright (c) 2009, Jouni Malinen <j@w1.fi>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * Alternatively, this software may be distributed under the terms of BSD
+ * license.
+ *
+ * See README and COPYING for more details.
+ */
+
+#include "utils/includes.h"
+#include "utils/os.h"
+#include "utils/list.h"
+
+struct test {
+       struct dl_list list;
+       int value;
+};
+
+static void dump_list(struct dl_list *head)
+{
+       struct test *t;
+       printf("dump:");
+       dl_list_for_each(t, head, struct test, list)
+               printf(" %d", t->value);
+       printf(" (len=%d%s)\n", dl_list_len(head),
+              dl_list_empty(head) ? " empty" : "");
+}
+
+int main(int argc, char *argv[])
+{
+       struct dl_list head;
+       struct test *t, *tmp;
+       int i;
+
+       dl_list_init(&head);
+       dump_list(&head);
+
+       for (i = 0; i < 5; i++) {
+               t = os_zalloc(sizeof(*t));
+               if (t == NULL)
+                       return -1;
+               t->value = i;
+               dl_list_add(&head, &t->list);
+               dump_list(&head);
+       }
+
+       for (i = 10; i > 5; i--) {
+               t = os_zalloc(sizeof(*t));
+               if (t == NULL)
+                       return -1;
+               t->value = i;
+               dl_list_add_tail(&head, &t->list);
+               dump_list(&head);
+       }
+
+       i = 0;
+       dl_list_for_each(t, &head, struct test, list)
+               if (++i == 5)
+                       break;
+       printf("move: %d\n", t->value);
+       dl_list_del(&t->list);
+       dl_list_add(&head, &t->list);
+       dump_list(&head);
+
+       dl_list_for_each_safe(t, tmp, &head, struct test, list) {
+               printf("delete: %d\n", t->value);
+               dl_list_del(&t->list);
+               os_free(t);
+               dump_list(&head);
+       }
+
+       return 0;
+}