Add tests for replace_substring

This commit is contained in:
Sebastian Ramacher 2013-01-25 23:19:26 +01:00
parent b47d55338c
commit a45c58f0b5
2 changed files with 42 additions and 1 deletions

View file

@ -25,6 +25,38 @@ START_TEST(test_file_valid_extension_null) {
fail_unless(file_valid_extension(NULL, "pdf") == false, NULL); fail_unless(file_valid_extension(NULL, "pdf") == false, NULL);
} END_TEST } END_TEST
START_TEST(test_strings_replace_substrings_invalid) {
fail_unless(replace_substring(NULL, NULL, NULL) == NULL);
fail_unless(replace_substring("", NULL, NULL) == NULL);
fail_unless(replace_substring("", "", NULL) == NULL);
} END_TEST
START_TEST(test_strings_replace_substrings_nothing_to_replace) {
fail_unless(replace_substring("test", "n", "y") == NULL);
} END_TEST
START_TEST(test_strings_replace_substrings_1) {
char* result = replace_substring("test", "e", "f");
fail_unless(result != NULL);
fail_unless(strncmp(result, "tfst", 5) == 0);
g_free(result);
} END_TEST
START_TEST(test_strings_replace_substrings_2) {
char* result = replace_substring("test", "es", "f");
fail_unless(result != NULL);
fail_unless(strncmp(result, "tft", 4) == 0);
g_free(result);
} END_TEST
START_TEST(test_strings_replace_substrings_3) {
char* result = replace_substring("test", "e", "fg");
fail_unless(result != NULL);
fail_unless(strncmp(result, "tfgst", 6) == 0);
g_free(result);
} END_TEST
Suite* suite_utils() Suite* suite_utils()
{ {
TCase* tcase = NULL; TCase* tcase = NULL;
@ -42,5 +74,14 @@ Suite* suite_utils()
tcase_add_test(tcase, test_file_valid_extension_null); tcase_add_test(tcase, test_file_valid_extension_null);
suite_add_tcase(suite, tcase); suite_add_tcase(suite, tcase);
/* strings */
tcase = tcase_create("strings");
tcase_add_test(tcase, test_strings_replace_substrings_invalid);
tcase_add_test(tcase, test_strings_replace_substrings_nothing_to_replace);
tcase_add_test(tcase, test_strings_replace_substrings_1);
tcase_add_test(tcase, test_strings_replace_substrings_2);
tcase_add_test(tcase, test_strings_replace_substrings_3);
suite_add_tcase(suite, tcase);
return suite; return suite;
} }

View file

@ -461,7 +461,7 @@ replace_substring(const char* string, const char* old, const char* new)
/* replace */ /* replace */
while (*string != '\0') { while (*string != '\0') {
if (strstr(string, old) == string) { if (strstr(string, old) == string) {
strcpy(&ret[i], new); strncpy(&ret[i], new, new_len);
i += new_len; i += new_len;
string += old_len; string += old_len;
} else { } else {