]> git.ozlabs.org Git - ccan/blob - ccan/str_talloc/test/run.c
opt: fix memory leak in tests.
[ccan] / ccan / str_talloc / test / run.c
1 #include <ccan/str_talloc/str_talloc.h>
2 #include <stdlib.h>
3 #include <stdio.h>
4 #include <ccan/str_talloc/str_talloc.c>
5 #include <ccan/tap/tap.h>
6
7 #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof(arr[0]))
8
9 static char *substrings[] = { "far", "bar", "baz", "b", "ba", "z", "ar", NULL };
10
11 int main(int argc, char *argv[])
12 {
13         char **split, *str;
14         void *ctx;
15
16         plan_tests(16);
17         split = strsplit(NULL, "hello  world", " ");
18         ok1(talloc_array_length(split) == 4);
19         ok1(!strcmp(split[0], "hello"));
20         ok1(!strcmp(split[1], ""));
21         ok1(!strcmp(split[2], "world"));
22         ok1(split[3] == NULL);
23         talloc_free(split);
24
25         split = strsplit(NULL, "hello  world", "o ");
26         ok1(talloc_array_length(split) == 6);
27         ok1(!strcmp(split[0], "hell"));
28         ok1(!strcmp(split[1], ""));
29         ok1(!strcmp(split[2], ""));
30         ok1(!strcmp(split[3], "w"));
31         ok1(!strcmp(split[4], "rld"));
32         ok1(split[5] == NULL);
33
34         ctx = split;
35         split = strsplit(ctx, "hello  world", "o ");
36         ok1(talloc_parent(split) == ctx);
37         talloc_free(ctx);
38
39         str = strjoin(NULL, substrings, ", ");
40         ok1(!strcmp(str, "far, bar, baz, b, ba, z, ar, "));
41         ctx = str;
42         str = strjoin(ctx, substrings, "");
43         ok1(!strcmp(str, "farbarbazbbazar"));
44         ok1(talloc_parent(str) == ctx);
45         talloc_free(ctx);
46
47         return exit_status();
48 }