6fc7537140c6d5a6b131dfe110be1ba4406d20d2
[ccan] / ccan / tal / test / run-iter.c
1 #include <ccan/tal/tal.h>
2 #include <ccan/tal/tal.c>
3 #include <ccan/tap/tap.h>
4
5 #define NUM 1000
6
7 int main(void)
8 {
9         char *p[NUM], *iter;
10         int i;
11
12         plan_tests(NUM + 1 + NUM);
13
14         /* Create a random tree, but make sure we get multiple
15          * top-level groups! */
16         for (i = 0; i < NUM; i++) {
17                 p[i] = tal(NULL, char);
18                 *p[i] = '0';
19                 if (next_group(&null_parent.c.group) != &null_parent.c.group)
20                         break;
21         }
22         for (i++; i < NUM; i++) {
23                 p[i] = tal(p[rand() % i], char);
24                 *p[i] = '0';
25         }
26
27         i = 0;
28         for (iter = tal_first(NULL); iter; iter = tal_next(NULL, iter)) {
29                 i++;
30                 ok1(*iter == '0');
31                 *iter = '1';
32         }
33         ok1(i == NUM);
34
35         for (i = NUM-1; i >= 0; i--) {
36                 ok1(*p[i] == '1');
37                 tal_free(p[i]);
38         }
39         return exit_status();
40 }