1 #include <ccan/tal/tal.h>
2 #include <ccan/tal/tal.c>
3 #include <ccan/tap/tap.h>
11 /* We can take NULL. */
12 ok1(take(NULL) == NULL);
13 ok1(taken(NULL)); /* Undoes take() */
16 parent = tal(NULL, char);
19 ok1(take(parent) == parent);
20 ok1(taken(parent)); /* Undoes take() */
23 c = tal_strdup(parent, "hello");
25 c = tal_strdup(parent, take(c));
26 ok1(strcmp(c, "hello") == 0);
27 ok1(tal_parent(c) == parent);
29 c = tal_strndup(parent, take(c), 5);
30 ok1(strcmp(c, "hello") == 0);
31 ok1(tal_parent(c) == parent);
33 c = tal_strndup(parent, take(c), 3);
34 ok1(strcmp(c, "hel") == 0);
35 ok1(tal_parent(c) == parent);
37 c = tal_dup(parent, char, take(c), 1, 0);
39 ok1(tal_parent(c) == parent);
41 c = tal_dup(parent, char, take(c), 1, 2);
44 ok1(tal_parent(c) == parent);
46 /* dup must reparent child. */
47 c = tal_dup(NULL, char, take(c), 1, 0);
49 ok1(tal_parent(c) == NULL);
51 /* No leftover allocations. */
53 ok1(tal_first(parent) == NULL);
55 c = tal_strdup(parent, "hello %s");
56 c = tal_asprintf(parent, take(c), "there");
57 ok1(strcmp(c, "hello there") == 0);
58 ok1(tal_parent(c) == parent);
59 /* No leftover allocations. */
61 ok1(tal_first(parent) == NULL);