summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorDaniel Carl <danielcarl@gmx.de>2018-06-14 00:29:24 +0200
committerDaniel Carl <danielcarl@gmx.de>2018-06-14 00:29:24 +0200
commitc8eb577660d2849a9289720dcd9c012f7a85a15a (patch)
treeb26445df6530ee2eb9bd3e5a927866cdd95e494a /tests
parent913849ae3ed66a60abea136184fd2e8194018dbd (diff)
Do not damage utf8 string on escape.
This fixes #492.
Diffstat (limited to 'tests')
-rw-r--r--tests/test-util.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/tests/test-util.c b/tests/test-util.c
index d03ac57..ad3f1cb 100644
--- a/tests/test-util.c
+++ b/tests/test-util.c
@@ -262,6 +262,35 @@ static void test_wildmatch_multi(void)
g_assert_false(util_wildmatch("foo,?", "fo"));
}
+static void test_strescape(void)
+{
+ unsigned int i;
+ char *value;
+ struct {
+ char *in;
+ char *expected;
+ char *excludes;
+ } data[] = {
+ {"", "", NULL},
+ {"foo", "foo", NULL},
+ {"a\nb\nc", "a\\nb\\nc", NULL},
+ {"foo\"bar", "foo\\bar", NULL},
+ {"s\\t", "s\\\\t", NULL},
+ {"u\bv", "u\\bv", NULL},
+ {"w\fx", "w\\fx", NULL},
+ {"y\rz", "y\\rz", NULL},
+ {"tab\tdi\t", "tab\\tdi\\t", NULL},
+ {"❧äüö\n@foo\t\"bar\"", "❧äüö\\n@foo\\t\\\"bar\\\"", NULL},
+ {"❧äüö\n@foo\t\"bar\"", "❧äüö\\n@foo\\t\"bar\"", "\""},
+ {"❧äüö\n@foo\t\"bar\"", "❧äüö\n@foo\t\\\"bar\\\"", "\n\t"},
+ };
+ for (i = 0; i < LENGTH(data); i++) {
+ value = util_strescape(data->in, data->excludes);
+ g_assert_cmpstr(value, ==, data->expected);
+ g_free(value);
+ }
+}
+
int main(int argc, char *argv[])
{
g_test_init(&argc, &argv, NULL);
@@ -279,6 +308,7 @@ int main(int argc, char *argv[])
g_test_add_func("/test-util/wildmatch-curlybraces", test_wildmatch_curlybraces);
g_test_add_func("/test-util/wildmatch-complete", test_wildmatch_complete);
g_test_add_func("/test-util/wildmatch-multi", test_wildmatch_multi);
+ g_test_add_func("/test-util/strescape", test_strescape);
return g_test_run();
}