]> git.ozlabs.org Git - ccan/blob - ccan/json_escape/test/run-take.c
json_escape: add fast-path for when we don't need to escape.
[ccan] / ccan / json_escape / test / run-take.c
1 #include <ccan/json_escape/json_escape.h>
2 /* Include the C files directly. */
3 #include <ccan/json_escape/json_escape.c>
4 #include <ccan/tap/tap.h>
5
6 int main(void)
7 {
8         const tal_t *ctx = tal(NULL, char);
9         struct json_escape *e;
10         char *p;
11
12         /* This is how many tests you plan to run */
13         plan_tests(5);
14
15         /* This should simply be tal_steal */
16         p = tal_dup_arr(NULL, char, "Hello", 6, 0);
17         e = json_escape(ctx, take(p));
18         ok1(!strcmp(e->s, "Hello"));
19         ok1((void *)e == (void *)p);
20         ok1(tal_parent(e) == ctx);
21
22         /* This can't be tal_steal, but still should be freed. */
23         p = tal_dup_arr(NULL, char,
24                         "\\\b\f\n\r\t\""
25                         "\\\\\\b\\f\\n\\r\\t\\\"", 22, 0);
26         e = json_escape(ctx, take(p));
27         ok1(tal_parent(e) == ctx);
28         ok1(!strcmp(e->s,
29                     "\\\\\\b\\f\\n\\r\\t\\\""
30                     "\\\\\\\\\\\\b\\\\f\\\\n\\\\r\\\\t\\\\\\\""));
31         tal_free(ctx);
32
33         /* This exits depending on whether all tests passed */
34         return exit_status();
35 }