db_updater: Put parentheses back
[merlin.git] / test-stringutils.c
blob233a56336bd061b8ae2c1aabf21ccdee902c13b4
1 #include "test_utils.h"
2 #include "string_utils.h"
3 #include <stdlib.h>
4 #include <string.h>
5 #define T_ASSERT(pred, msg) do {\
6 if ((pred)) { t_pass("%s: %s", __FUNCTION__, msg); } else { t_fail("%s: %s", __FUNCTION__, msg); } \
7 } while (0)
9 void test_unescape_newlines() {
10 char *src = "foo\nbar\\n\\baz\\n";
11 char *expected = "foo\nbar\n\\baz\n";
12 char *dest = (char *)malloc(strlen(src));
13 size_t len = 0, expected_size = 0;
14 len = unescape_newlines(dest, src, strlen(src) + 1);
15 T_ASSERT(0 == strcmp(expected, dest), "newlines unescaped as expected");
16 expected_size = strlen(expected) + 1;
17 T_ASSERT(len == expected_size, "returned length is correct");
18 expected_size = strlen(dest) + 1;
19 T_ASSERT(len == expected_size, "destination buffer is of correct length");
20 free(dest);
22 /*test binary safe-ness*/
23 src = "foo\nbar\\nboll\0kaka";
24 expected = "foo\nbar\nboll\0kaka";
25 expected_size = 18;
26 dest = (char *)malloc(expected_size);
27 len = unescape_newlines(dest, src, 19);
28 T_ASSERT(expected_size == len, "returned length is correct");
29 T_ASSERT(0 == memcmp(expected, dest, len), "length argument is respected");
30 free(dest);
32 /* test quoted backslash */
33 src = "foo\\\\nbar";
34 expected = "foo\\nbar";
35 expected_size = 9;
36 dest = (char *)malloc(expected_size);
37 len = unescape_newlines(dest, src, strlen(src) + 1);
38 T_ASSERT(expected_size == len, "returned length is correct");
39 T_ASSERT(0 == memcmp(expected, dest, len), "length argument is respected");
40 free(dest);
42 char in[] = "abc\\n";
43 char out[16] = {0,};
44 memset(out, 0, 16);
45 len = unescape_newlines(out, in, 4);
46 T_ASSERT(4 == len, "returned length is correct");
47 T_ASSERT(4 == strlen(out), "only the correct number of bytes copied");
48 T_ASSERT(out[3] == '\\', "half an escaped newline isn't parsed");
51 int main(int argc, char *argv[]) {
52 t_set_colors(0);
53 t_verbose = 1;
55 t_start("testing string utilities");
56 test_unescape_newlines();
58 t_end();
59 return 0;