1 #include <ccan/strset/strset.h>
2 #include <ccan/strset/strset.c>
3 #include <ccan/tap/tap.h>
8 static bool in_order(const char *value, unsigned int *count)
16 static bool in_order_by_2(const char *value, unsigned int *count)
24 static bool dump(const char *value, void *unused)
36 plan_tests(NUM * 2 + 3 * NUM / 2);
39 for (i = 0; i < NUM; i++) {
41 sprintf(template, "%08u", i);
42 str[i] = strdup(template);
45 for (i = 0; i < NUM; i++)
46 strset_add(&set, str[i]);
48 strset_iterate(&set, dump, NULL);
52 strset_iterate(&set, in_order, &i);
54 /* Preserve order after deletion. */
55 for (i = 0; i < NUM; i += 2)
56 ok1(strset_del(&set, str[i]) == str[i]);
59 strset_iterate(&set, in_order_by_2, &i);
61 for (i = 1; i < NUM; i += 2)
62 ok1(strset_del(&set, str[i]) == str[i]);
65 strset_iterate(&set, in_order_by_2, (unsigned int *)NULL);
67 /* insert backwards, should be fine. */
68 for (i = 0; i < NUM; i++)
69 strset_add(&set, str[NUM-1-i]);
72 strset_iterate(&set, in_order, &i);
76 for (i = 0; i < NUM; i++)
79 /* This exits depending on whether all tests passed */