Implement read/write tests for Unicode.

This commit is contained in:
Michael Jumper 2013-08-05 20:06:31 -07:00
parent 8e08a72eda
commit bd84933b6b

View File

@ -42,6 +42,9 @@
void test_guac_unicode() { void test_guac_unicode() {
int codepoint;
char buffer[16];
/* Test character length */ /* Test character length */
CU_ASSERT_EQUAL(1, guac_utf8_charsize(UTF8_1b[0])); CU_ASSERT_EQUAL(1, guac_utf8_charsize(UTF8_1b[0]));
CU_ASSERT_EQUAL(2, guac_utf8_charsize(UTF8_2b[0])); CU_ASSERT_EQUAL(2, guac_utf8_charsize(UTF8_2b[0]));
@ -60,8 +63,35 @@ void test_guac_unicode() {
CU_ASSERT_EQUAL(5, guac_utf8_strlen("hello")); CU_ASSERT_EQUAL(5, guac_utf8_strlen("hello"));
CU_ASSERT_EQUAL(9, guac_utf8_strlen("guacamole")); CU_ASSERT_EQUAL(9, guac_utf8_strlen("guacamole"));
/*int guac_utf8_write(int codepoint, char* utf8, int length); /* Test writes */
int guac_utf8_read(const char* utf8, int length, int* codepoint);*/ CU_ASSERT_EQUAL(1, guac_utf8_write(0x00065, &(buffer[0]), 10));
CU_ASSERT_EQUAL(2, guac_utf8_write(0x00654, &(buffer[1]), 9));
CU_ASSERT_EQUAL(3, guac_utf8_write(0x00876, &(buffer[3]), 7));
CU_ASSERT_EQUAL(4, guac_utf8_write(0x12345, &(buffer[6]), 4));
CU_ASSERT_EQUAL(0, guac_utf8_write(0x00066, &(buffer[10]), 0));
/* Test result of write */
CU_ASSERT(memcmp("\x65", &(buffer[0]), 1) == 0); /* U+0065 */
CU_ASSERT(memcmp("\xD9\x94", &(buffer[1]), 2) == 0); /* U+0654 */
CU_ASSERT(memcmp("\xE0\xA1\xB6", &(buffer[3]), 3) == 0); /* U+0876 */
CU_ASSERT(memcmp("\xF0\x92\x8D\x85", &(buffer[6]), 4) == 0); /* U+12345 */
/* Test reads */
CU_ASSERT_EQUAL(1, guac_utf8_read(&(buffer[0]), 10, &codepoint));
CU_ASSERT_EQUAL(0x0065, codepoint);
CU_ASSERT_EQUAL(2, guac_utf8_read(&(buffer[1]), 9, &codepoint));
CU_ASSERT_EQUAL(0x0654, codepoint);
CU_ASSERT_EQUAL(3, guac_utf8_read(&(buffer[3]), 7, &codepoint));
CU_ASSERT_EQUAL(0x0876, codepoint);
CU_ASSERT_EQUAL(4, guac_utf8_read(&(buffer[6]), 4, &codepoint));
CU_ASSERT_EQUAL(0x12345, codepoint);
CU_ASSERT_EQUAL(0, guac_utf8_read(&(buffer[10]), 0, &codepoint));
CU_ASSERT_EQUAL(0x12345, codepoint);
} }