X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Ftal%2Ftest%2Frun-iter.c;h=5992172a51bad4736e55fdba83dd778a252eab4d;hb=a8722345053b7cd860499aa31fd6bb414c120cc8;hp=6fc7537140c6d5a6b131dfe110be1ba4406d20d2;hpb=0e34459a02e2615f50bac2767c7dce6632470946;p=ccan diff --git a/ccan/tal/test/run-iter.c b/ccan/tal/test/run-iter.c index 6fc75371..5992172a 100644 --- a/ccan/tal/test/run-iter.c +++ b/ccan/tal/test/run-iter.c @@ -4,37 +4,50 @@ #define NUM 1000 +static int set_children(const tal_t *parent, char val) +{ + char *iter; + int num = 0; + + for (iter = tal_first(parent); iter; iter = tal_next(iter)) { + ok1(*iter == '0'); + *iter = val; + num++; + num += set_children(iter, val); + } + return num; +} + +static void check_children(const tal_t *parent, char val) +{ + const char *iter; + + for (iter = tal_first(parent); iter; iter = tal_next(iter)) { + ok1(*iter == val); + check_children(iter, val); + } +} + int main(void) { - char *p[NUM], *iter; + char *p[NUM] = { NULL }; int i; plan_tests(NUM + 1 + NUM); - /* Create a random tree, but make sure we get multiple - * top-level groups! */ + /* Create a random tree */ 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] = tal(p[rand() % (i + 1)], char); *p[i] = '0'; } - i = 0; - for (iter = tal_first(NULL); iter; iter = tal_next(NULL, iter)) { - i++; - ok1(*iter == '0'); - *iter = '1'; - } + i = set_children(NULL, '1'); ok1(i == NUM); - for (i = NUM-1; i >= 0; i--) { - ok1(*p[i] == '1'); + check_children(NULL, '1'); + for (i = NUM-1; i >= 0; i--) tal_free(p[i]); - } + + tal_cleanup(); return exit_status(); }