]> git.ozlabs.org Git - ccan/blobdiff - ccan/tal/test/run-iter.c
tal: new module.
[ccan] / ccan / tal / test / run-iter.c
diff --git a/ccan/tal/test/run-iter.c b/ccan/tal/test/run-iter.c
new file mode 100644 (file)
index 0000000..6fc7537
--- /dev/null
@@ -0,0 +1,40 @@
+#include <ccan/tal/tal.h>
+#include <ccan/tal/tal.c>
+#include <ccan/tap/tap.h>
+
+#define NUM 1000
+
+int main(void)
+{
+       char *p[NUM], *iter;
+       int i;
+
+       plan_tests(NUM + 1 + NUM);
+
+       /* Create a random tree, but make sure we get multiple
+        * top-level groups! */
+       for (i = 0; i < NUM; i++) {
+               p[i] = tal(NULL, char);
+               *p[i] = '0';
+               if (next_group(&null_parent.c.group) != &null_parent.c.group)
+                       break;
+       }
+       for (i++; i < NUM; i++) {
+               p[i] = tal(p[rand() % i], char);
+               *p[i] = '0';
+       }
+
+       i = 0;
+       for (iter = tal_first(NULL); iter; iter = tal_next(NULL, iter)) {
+               i++;
+               ok1(*iter == '0');
+               *iter = '1';
+       }
+       ok1(i == NUM);
+
+       for (i = NUM-1; i >= 0; i--) {
+               ok1(*p[i] == '1');
+               tal_free(p[i]);
+       }
+       return exit_status();
+}