X-Git-Url: https://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Ftal%2Ftest%2Frun.c;fp=ccan%2Ftal%2Ftest%2Frun.c;h=69ffa2d3dc3248de0cf7ceeeaa43963c0aa9c8e4;hb=0e34459a02e2615f50bac2767c7dce6632470946;hp=0000000000000000000000000000000000000000;hpb=33527c60ba3c5c72ed31fbb064c38db2b3d2c733;p=ccan diff --git a/ccan/tal/test/run.c b/ccan/tal/test/run.c new file mode 100644 index 00000000..69ffa2d3 --- /dev/null +++ b/ccan/tal/test/run.c @@ -0,0 +1,55 @@ +#include +#include +#include + +int main(void) +{ + char *parent, *c[4], *p; + int i, j; + + plan_tests(10); + + parent = tal(NULL, char); + ok1(parent); + + for (i = 0; i < 4; i++) + c[i] = tal(parent, char); + + for (i = 0; i < 4; i++) + ok1(tal_parent(c[i]) == parent); + + /* Iteration test. */ + i = 0; + for (p = tal_first(parent); p; p = tal_next(parent, p)) { + *p = '1'; + i++; + } + ok1(i == 4); + ok1(*c[0] == '1'); + ok1(*c[1] == '1'); + ok1(*c[2] == '1'); + ok1(*c[3] == '1'); + + /* Free parent. */ + tal_free(parent); + + parent = tal(NULL, char); + + /* Test freeing in every order */ + for (i = 0; i < 4; i++) { + for (j = 0; j < 4; j++) + c[j] = tal(parent, char); + + tal_free(c[i]); + debug_tal(to_tal_hdr(parent)); + tal_free(c[(i+1) % 4]); + debug_tal(to_tal_hdr(parent)); + tal_free(c[(i+2) % 4]); + debug_tal(to_tal_hdr(parent)); + tal_free(c[(i+3) % 4]); + debug_tal(to_tal_hdr(parent)); + } + tal_free(parent); + + return exit_status(); +}