diff options
author | Choe Hwanjin <choe.hwanjin@gmail.com> | 2010-12-19 13:53:20 +0900 |
---|---|---|
committer | Choe Hwanjin <choe.hwanjin@gmail.com> | 2010-12-19 13:53:20 +0900 |
commit | c9a9473e8ba5df76670237572e2150e404f05640 (patch) | |
tree | 921b3a00181ebb80722a47cdd8d69269d595b9b5 /test | |
parent | 759613591ae49b4371f604b69814ec84f63516a1 (diff) | |
download | libhangul-c9a9473e8ba5df76670237572e2150e404f05640.tar.gz |
완성 음절로 표현이 불가능한 경우 한글 자모로 표현
지금까지는 완성 음절로 표현이 불가능한 중성 + 종성 같은 음절의 경우
호환자모 중성과 종성을 나열하여 표현하였는데, 이제는 한글 자모 영역의
글자를 사용하여 초성채움 + 중성 + 종성으로 표현한다.
이렇게 기능을 수정하면, 옛한글 자판의 경우도 hangul_buffer_get_string()
함수를 그대로 사용할 수 있으므로 자판 관리가 좀더 편리해지는 측면이 있다.
그러나 단점으로 세벌식에서 모아치기 기능을 활용하는 중에 한글 자모로 표현한
글자가 나타날 수 있는데, 이때에 이 글자를 제대로 렌더링 하지 못할 가능성이
있다.
git-svn-id: http://kldp.net/svn/hangul/libhangul/trunk@233 8f00fcd2-89fc-0310-932e-b01be5b65e01
Diffstat (limited to 'test')
-rw-r--r-- | test/test.c | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/test/test.c b/test/test.c index 2b4b85f..ae20b6b 100644 --- a/test/test.c +++ b/test/test.c @@ -1,3 +1,4 @@ +#include <stdarg.h> #include <stdlib.h> #include <check.h> @@ -5,6 +6,64 @@ #define countof(x) ((sizeof(x)) / (sizeof(x[0]))) +static bool +check_preedit(const char* keyboard, const char* input, ...) +{ + HangulInputContext* ic; + const char* p; + const ucschar* preedit; + ucschar code; + va_list ap; + + ic = hangul_ic_new(keyboard); + + p = input; + while (*p != '\0') { + hangul_ic_process(ic, *p); + p++; + } + + preedit = hangul_ic_get_preedit_string(ic); + + va_start(ap, input); + + code = va_arg(ap, ucschar); + while (code != 0) { + if (*preedit != code) + return false; + + code = va_arg(ap, ucschar); + preedit++; + } + + va_end(ap); + + hangul_ic_delete(ic); + + return true; +} + +START_TEST(test_hangul_ic_process_3f) +{ + /* L V T */ + /* ㅎ */ + fail_unless(check_preedit("3f", "m", 0x314e, 0)); + /* ㅗ */ + fail_unless(check_preedit("3f", "v", 0x3157, 0)); + /* ㅌ */ + fail_unless(check_preedit("3f", "W", 0x314c, 0)); + + /* ㄱㅏㅇ */ + fail_unless(check_preedit("3f", "kfa", 0xac15, 0)); + /* ㄹㅐ */ + fail_unless(check_preedit("3f", "yr", 0xb798, 0)); + /* ㄴ ㅁ */ + fail_unless(check_preedit("3f", "hz", 0x1102, 0x1160, 0x11b7, 0)); + /* ㅜㅅ */ + fail_unless(check_preedit("3f", "tq", 0x115f, 0x1165, 0x11ba, 0)); +} +END_TEST + START_TEST(test_hangul_ic_process_romaja) { HangulInputContext* ic; @@ -264,6 +323,7 @@ Suite* libhangul_suite() Suite* s = suite_create("libhangul"); TCase* hangul = tcase_create("hangul"); + tcase_add_test(hangul, test_hangul_ic_process_3f); tcase_add_test(hangul, test_hangul_ic_process_romaja); tcase_add_test(hangul, test_syllable_iterator); tcase_add_test(hangul, test_hangul_keyboard); |