X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Ftal%2Ftest%2Frun-take.c;fp=ccan%2Ftal%2Ftest%2Frun-take.c;h=a6e667bbae0875104725d36f676a95083d31d388;hb=e03d7ecb505cb73ff244708323b0f1a5a0c5cd7a;hp=53c1a44a85390e419075268efb157617390be71d;hpb=c8a55bb39404772d459f0153f07db7ecc91ecfd0;p=ccan diff --git a/ccan/tal/test/run-take.c b/ccan/tal/test/run-take.c index 53c1a44a..a6e667bb 100644 --- a/ccan/tal/test/run-take.c +++ b/ccan/tal/test/run-take.c @@ -6,40 +6,54 @@ int main(void) { char *parent, *c; - plan_tests(15); + plan_tests(24); + + /* We can take NULL. */ + ok1(take(NULL) == NULL); + ok1(taken(NULL)); /* Undoes take() */ + ok1(!taken(NULL)); parent = tal(NULL, char); ok1(parent); + ok1(take(parent) == parent); + ok1(taken(parent)); /* Undoes take() */ + ok1(!taken(parent)); + c = tal_strdup(parent, "hello"); - c = tal_strdup(TAL_TAKE, c); + c = tal_strdup(parent, take(c)); ok1(strcmp(c, "hello") == 0); ok1(tal_parent(c) == parent); - c = tal_strndup(TAL_TAKE, c, 5); + c = tal_strndup(parent, take(c), 5); ok1(strcmp(c, "hello") == 0); ok1(tal_parent(c) == parent); - c = tal_strndup(TAL_TAKE, c, 3); + c = tal_strndup(parent, take(c), 3); ok1(strcmp(c, "hel") == 0); ok1(tal_parent(c) == parent); - c = tal_dup(TAL_TAKE, char, c, 1, 0); + c = tal_dup(parent, char, take(c), 1, 0); ok1(c[0] == 'h'); ok1(tal_parent(c) == parent); - c = tal_dup(TAL_TAKE, char, c, 1, 2); + c = tal_dup(parent, char, take(c), 1, 2); ok1(c[0] == 'h'); strcpy(c, "hi"); ok1(tal_parent(c) == parent); + /* dup must reparent child. */ + c = tal_dup(NULL, char, take(c), 1, 0); + ok1(c[0] == 'h'); + ok1(tal_parent(c) == NULL); + /* No leftover allocations. */ tal_free(c); ok1(tal_first(parent) == NULL); c = tal_strdup(parent, "hello %s"); - c = tal_asprintf(TAL_TAKE, c, "there"); + c = tal_asprintf(parent, take(c), "there"); ok1(strcmp(c, "hello there") == 0); ok1(tal_parent(c) == parent); /* No leftover allocations. */ @@ -47,6 +61,7 @@ int main(void) ok1(tal_first(parent) == NULL); tal_free(parent); + ok1(!taken_any()); return exit_status(); }