summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMatt Jordan <mjordan@digium.com>2015-07-17 08:51:04 -0500
committerGerrit Code Review <gerrit2@gerrit.digium.api>2015-07-17 08:51:04 -0500
commitf90beeaea6269386d6daf041f6d1a9a953f15de1 (patch)
treee168f232a7064ffc1e83da69c9e7880ea881ccb0 /tests
parentdaf284944b8b0b78f2c073e15dd73c3108f061f9 (diff)
parentb34c4528abfff6759fe184adc6360a0e22705e2c (diff)
Merge "strings.h: Fix issues with escape string functions."
Diffstat (limited to 'tests')
-rw-r--r--tests/test_strings.c46
1 files changed, 41 insertions, 5 deletions
diff --git a/tests/test_strings.c b/tests/test_strings.c
index d1ff2f036..a39ac6334 100644
--- a/tests/test_strings.c
+++ b/tests/test_strings.c
@@ -460,7 +460,32 @@ AST_TEST_DEFINE(escape_test)
char buf[128];
#define TEST_ESCAPE(s, to_escape, expected) \
- !strcmp(ast_escape(buf, s, sizeof(buf) / sizeof(char), to_escape), expected)
+ !strcmp(ast_escape(buf, s, ARRAY_LEN(buf), to_escape), expected)
+
+#define TEST_ESCAPE_C(s, expected) \
+ !strcmp(ast_escape_c(buf, s, ARRAY_LEN(buf)), expected)
+
+#define TEST_ESCAPE_ALLOC(s, to_escape, expected) \
+ ({ \
+ int res = 0; \
+ char *a_buf = ast_escape_alloc(s, to_escape); \
+ if (a_buf) { \
+ res = !strcmp(a_buf, expected); \
+ ast_free(a_buf); \
+ } \
+ res; \
+ })
+
+#define TEST_ESCAPE_C_ALLOC(s, expected) \
+ ({ \
+ int res = 0; \
+ char *a_buf = ast_escape_c_alloc(s); \
+ if (a_buf) { \
+ res = !strcmp(a_buf, expected); \
+ ast_free(a_buf); \
+ } \
+ res; \
+ })
switch (cmd) {
case TEST_INIT:
@@ -474,16 +499,27 @@ AST_TEST_DEFINE(escape_test)
}
ast_test_validate(test, TEST_ESCAPE("null escape", NULL, "null escape"));
+ ast_test_validate(test, TEST_ESCAPE("empty escape", "", "empty escape"));
+ ast_test_validate(test, TEST_ESCAPE("", "Z", ""));
ast_test_validate(test, TEST_ESCAPE("no matching escape", "Z", "no matching escape"));
ast_test_validate(test, TEST_ESCAPE("escape Z", "Z", "escape \\Z"));
ast_test_validate(test, TEST_ESCAPE("Z", "Z", "\\Z"));
- ast_test_validate(test, TEST_ESCAPE(";;", ";;", "\\;\\;"));
+ ast_test_validate(test, TEST_ESCAPE(";;", ";", "\\;\\;"));
ast_test_validate(test, TEST_ESCAPE("escape \n", "\n", "escape \\n"));
ast_test_validate(test, TEST_ESCAPE("escape \n again \n", "\n", "escape \\n again \\n"));
- ast_test_validate(test, !strcmp(ast_escape_c(buf, "escape \a\b\f\n\r\t\v\\\'\"\?",
- sizeof(buf) / sizeof(char)),
- "escape \\a\\b\\f\\n\\r\\t\\v\\\\\\\'\\\"\\?"));
+ ast_test_validate(test, TEST_ESCAPE_C("", ""));
+ ast_test_validate(test, TEST_ESCAPE_C("escape \a\b\f\n\r\t\v\\\'\"\?",
+ "escape \\a\\b\\f\\n\\r\\t\\v\\\\\\\'\\\"\\?"));
+
+ ast_test_validate(test, TEST_ESCAPE_ALLOC("", "Z", ""));
+ ast_test_validate(test, TEST_ESCAPE_ALLOC("Z", "Z", "\\Z"));
+ ast_test_validate(test, TEST_ESCAPE_ALLOC("a", "Z", "a"));
+
+ ast_test_validate(test, TEST_ESCAPE_C_ALLOC("", ""));
+ ast_test_validate(test, TEST_ESCAPE_C_ALLOC("\n", "\\n"));
+ ast_test_validate(test, TEST_ESCAPE_C_ALLOC("a", "a"));
+
return AST_TEST_PASS;
}