uint16_t dest_count = 0;
size_t length = strlen(src);
uint8_t wide_char_len = 0;
+ uint8_t replaced = 0;
for (size_t i = 0; i < length; i++) {
wide_char_len = wide_char_length(src[i]);
switch (wide_char_len) {
case 2:
- dest_count += _replace_two_byte_wide_char(src[i + 1], &dest[dest_count]);
+ replaced = _replace_two_byte_wide_char(src[i + 1], &dest[dest_count]);
+ if (replaced > 0) {
+ dest_count += replaced;
+ } else {
+ dest[dest_count++] = src[i];
+ dest[dest_count++] = src[i + 1];
+ }
i++;
break;
default:
output = NULL;
}
+void none_replace_wide_char()
+{
+ const char* none_replace = "ō";
+
+ char* output = rename_string(none_replace);
+
+ assert_string_equal(output, none_replace);
+
+ free(output);
+ output = NULL;
+}
+
void rename_lower_case()
{
const char* input = "Gruß Gott, hat der Biergarten offen?";
cmocka_unit_test(rename_Oe),
cmocka_unit_test(rename_ue),
cmocka_unit_test(rename_Ue),
+ cmocka_unit_test(none_replace_wide_char),
cmocka_unit_test(rename_scharfes_s),
cmocka_unit_test(rename_lower_case),
cmocka_unit_test(rename_point_case),