#include <string.h>
#include "rename.h"
+unsigned int wide_char_length(const char character)
+{
+ unsigned int count = 0;
+ for (int i = 7; i > 0; i--) {
+ if (character >> i & 1)
+ count++;
+ else
+ break;
+ }
+
+ return count;
+}
+
char* escape(const char* src)
{
char* dest = malloc(sizeof(char) * STR_MAX_LENGTH);
typedef char* (*rename_ptr)(const char* src);
+unsigned int wide_char_length(const char character);
char* escape(const char* src);
char* rename_point(const char* src);
char* rename_lower(const char* src);
output = NULL;
}
+void no_wide_character()
+{
+ const char input = 0;
+
+ unsigned int length = wide_char_length(input);
+
+ assert_int_equal(length, 0);
+}
+
+void two_byte_wide_character()
+{
+ const char input = (char) 0x80;
+
+ unsigned int length = wide_char_length(input);
+
+ assert_int_equal(length, 1);
+}
+
+void three_byte_wide_character()
+{
+ const char input = (char) 0xc0;
+
+ unsigned int length = wide_char_length((char) 0xc0);
+
+ assert_int_equal(length, 2);
+}
+
+void four_byte_wide_character()
+{
+ const char input = 0xd0;
+
+ unsigned int length = wide_char_length((char) 0xe0);
+
+ assert_int_equal(length, 3);
+}
+
int main()
{
const struct CMUnitTest tests[] = {
cmocka_unit_test(rename_revert_ue),
cmocka_unit_test(rename_revert_Ue),
cmocka_unit_test(rename_revert_ss),
+ cmocka_unit_test(no_wide_character),
+ cmocka_unit_test(two_byte_wide_character),
+ cmocka_unit_test(three_byte_wide_character),
+ cmocka_unit_test(four_byte_wide_character),
};
return cmocka_run_group_tests(tests, NULL, NULL);