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-destructor2.c | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 ccan/tal/test/run-destructor2.c (limited to 'ccan/tal/test/run-destructor2.c') diff --git a/ccan/tal/test/run-destructor2.c b/ccan/tal/test/run-destructor2.c new file mode 100644 index 0000000..a92f07f --- /dev/null +++ b/ccan/tal/test/run-destructor2.c @@ -0,0 +1,38 @@ +#include +#include +#include + +static void destroy_inc(char *p UNNEEDED, int *destroy_count) +{ + (*destroy_count)++; +} + +static void destroy_dec(char *p UNNEEDED, int *destroy_count) +{ + (*destroy_count)--; +} + +int main(void) +{ + char *p; + int destroy_count1 = 0, destroy_count2 = 0; + + plan_tests(10); + + p = tal(NULL, char); + /* Del must match both fn and arg. */ + ok1(tal_add_destructor2(p, destroy_inc, &destroy_count1)); + ok1(!tal_del_destructor2(p, destroy_inc, &destroy_count2)); + ok1(!tal_del_destructor2(p, destroy_dec, &destroy_count1)); + ok1(tal_del_destructor2(p, destroy_inc, &destroy_count1)); + ok1(!tal_del_destructor2(p, destroy_inc, &destroy_count1)); + + ok1(tal_add_destructor2(p, destroy_inc, &destroy_count1)); + ok1(tal_add_destructor2(p, destroy_dec, &destroy_count2)); + ok1(tal_free(p) == NULL); + ok1(destroy_count1 == 1); + ok1(destroy_count2 == -1); + + tal_cleanup(); + return exit_status(); +} -- cgit v1.2.3