From e9a26422f60c5a8fb68a0b9f94076056e70c8c0f Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Tue, 16 Jul 2024 22:33:32 +0200 Subject: [PATCH] add test for escape str --- src/rename.c | 21 +++++++++++++++++++++ src/rename.h | 1 + tests/rename_tests.c | 11 +++++++++++ 3 files changed, 33 insertions(+) diff --git a/src/rename.c b/src/rename.c index 516770b..b90552c 100644 --- a/src/rename.c +++ b/src/rename.c @@ -3,6 +3,27 @@ #include #include "rename.h" +void escape_str(char* src, char* dst) +{ + int len = strlen(src); + int dstcounter = 0; + for (int i = 0; i < len; i++) { + switch(src[i]) { + case 0x20: + case 0x28: + case 0x29: + case 0x5b: + case 0x5d: + dst[dstcounter++] = '\\'; + dst[dstcounter++] = src[i]; + break; + default: + dst[dstcounter++] = src[i]; + break; + } + } +} + void rename_point_str(char* src, char* dst) { int len = strlen(src); diff --git a/src/rename.h b/src/rename.h index 19f4cdd..b7aeed8 100644 --- a/src/rename.h +++ b/src/rename.h @@ -4,6 +4,7 @@ #define STR_MAX_LENGTH 1024 typedef void (*rename_func_ptr)(char* src, char* dst); +void escape_str(char* src, char* dst); void rename_point_str(char* src, char* dst); void rename_lower_str(char* src, char* dst); void rename_str(char* src, char* dst); diff --git a/tests/rename_tests.c b/tests/rename_tests.c index 4cc58ec..fd38ea6 100644 --- a/tests/rename_tests.c +++ b/tests/rename_tests.c @@ -127,6 +127,16 @@ void rename_point_case(void **state) assert_string_equal(output, "Dies_ist_die_Geschichte_von"); } +void escape_str_test(void **state) +{ + char* output = (char*) *state; + char* input = "Dies ist [die] (Geschichte) von"; + + escape_str(input, output); + + assert_string_equal(output, "Dies\\ ist\\ \\[die\\]\\ \\(Geschichte\\)\\ von"); +} + int main() { const struct CMUnitTest tests[] = { @@ -140,6 +150,7 @@ int main() cmocka_unit_test_setup_teardown(rename_scharfes_s, setup, teardown), cmocka_unit_test_setup_teardown(rename_lower_case, setup, teardown), cmocka_unit_test_setup_teardown(rename_point_case, setup, teardown), + cmocka_unit_test_setup_teardown(escape_str_test, setup, teardown), }; return cmocka_run_group_tests(tests, NULL, NULL); -- 2.39.5