X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Ftal%2Ftest%2Frun-iter.c;h=5992172a51bad4736e55fdba83dd778a252eab4d;hb=a8722345053b7cd860499aa31fd6bb414c120cc8;hp=7021be27555df5705b43a85ecf69bbb317a1ff77;hpb=0f6d854ab9d85ac7e4487ff3eee464be6bb528aa;p=ccan diff --git a/ccan/tal/test/run-iter.c b/ccan/tal/test/run-iter.c index 7021be27..5992172a 100644 --- a/ccan/tal/test/run-iter.c +++ b/ccan/tal/test/run-iter.c @@ -4,9 +4,33 @@ #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] = { NULL }, *iter; + char *p[NUM] = { NULL }; int i; plan_tests(NUM + 1 + NUM); @@ -17,17 +41,13 @@ int main(void) *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(); }