run-take.c 999 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #include <ccan/tal/str/str.h>
  2. #include <ccan/tal/str/str.c>
  3. #include <ccan/tap/tap.h>
  4. #include "helper.h"
  5. int main(void)
  6. {
  7. char *parent, *c;
  8. plan_tests(14);
  9. parent = tal(NULL, char);
  10. ok1(parent);
  11. c = tal_strdup(parent, "hello");
  12. c = tal_strdup(parent, take(c));
  13. ok1(strcmp(c, "hello") == 0);
  14. ok1(tal_parent(c) == parent);
  15. c = tal_strndup(parent, take(c), 5);
  16. ok1(strcmp(c, "hello") == 0);
  17. ok1(tal_parent(c) == parent);
  18. c = tal_strndup(parent, take(c), 3);
  19. ok1(strcmp(c, "hel") == 0);
  20. ok1(tal_parent(c) == parent);
  21. tal_free(c);
  22. c = tal_strdup(parent, "hello %s");
  23. c = tal_fmt(parent, take(c), "there");
  24. ok1(strcmp(c, "hello there") == 0);
  25. ok1(tal_parent(c) == parent);
  26. /* No leftover allocations. */
  27. tal_free(c);
  28. ok1(no_children(parent));
  29. tal_free(parent);
  30. ok1(!taken_any());
  31. /* NULL pass-through. */
  32. c = NULL;
  33. ok1(tal_strdup(NULL, take(c)) == NULL);
  34. ok1(tal_strndup(NULL, take(c), 5) == NULL);
  35. ok1(tal_fmt(NULL, take(c), 0) == NULL);
  36. return exit_status();
  37. }