From 1b8fbbd843ddeb5fc81c9303db9c590a436d499b Mon Sep 17 00:00:00 2001 From: William Casarin Date: Mon, 9 Jul 2018 12:10:32 -0700 Subject: progress --- ccan/tal/test/run-take.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 ccan/tal/test/run-take.c (limited to 'ccan/tal/test/run-take.c') diff --git a/ccan/tal/test/run-take.c b/ccan/tal/test/run-take.c new file mode 100644 index 0000000..d93304e --- /dev/null +++ b/ccan/tal/test/run-take.c @@ -0,0 +1,57 @@ +#include +#include +#include + +int main(void) +{ + char *parent, *c; + + plan_tests(21); + + /* We can take NULL. */ + ok1(take(NULL) == NULL); + ok1(is_taken(NULL)); + ok1(taken(NULL)); /* Undoes take() */ + ok1(!is_taken(NULL)); + ok1(!taken(NULL)); + + parent = tal(NULL, char); + ok1(parent); + + ok1(take(parent) == parent); + ok1(is_taken(parent)); + ok1(taken(parent)); /* Undoes take() */ + ok1(!is_taken(parent)); + ok1(!taken(parent)); + + c = tal(parent, char); + *c = 'h'; + c = tal_dup(parent, char, take(c)); + ok1(c[0] == 'h'); + ok1(tal_parent(c) == parent); + + c = tal_dup_arr(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)); + ok1(c[0] == 'h'); + ok1(tal_parent(c) == NULL); + + /* No leftover allocations. */ + tal_free(c); + ok1(tal_first(parent) == NULL); + + tal_free(parent); + ok1(!taken_any()); + + /* NULL pass-through. */ + c = NULL; + ok1(tal_dup_arr(NULL, char, take(c), 5, 5) == NULL); + ok1(!taken_any()); + + tal_cleanup(); + return exit_status(); +} -- cgit v1.2.3