From a503d218bc595c2b09ab72776b82ba7e8a259995 Mon Sep 17 00:00:00 2001 From: Choe Hwanjin Date: Sun, 26 Dec 2010 14:41:46 +0900 Subject: =?UTF-8?q?=EB=91=90=EB=B2=8C=EC=8B=9D=EA=B3=BC=20=EB=91=90?= =?UTF-8?q?=EB=B2=8C=EC=8B=9D=20=EC=98=9B=EA=B8=80=20=EC=9E=90=ED=8C=90?= =?UTF-8?q?=EC=97=90=20=EB=8C=80=ED=95=9C=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20?= =?UTF-8?q?=EC=BC=80=EC=9D=B4=EC=8A=A4=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 계속 추가할 예정 디버깅할때 편리하기 위해서 NOFORK 모드를 사용 git-svn-id: http://kldp.net/svn/hangul/libhangul/trunk@243 8f00fcd2-89fc-0310-932e-b01be5b65e01 --- test/test.c | 99 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 99 insertions(+) diff --git a/test/test.c b/test/test.c index ae20b6b..406a8bf 100644 --- a/test/test.c +++ b/test/test.c @@ -43,6 +43,102 @@ check_preedit(const char* keyboard, const char* input, ...) return true; } +static bool +check_commit(const char* keyboard, const char* input, ...) +{ + HangulInputContext* ic; + const char* p; + const ucschar* commit; + ucschar code; + va_list ap; + + ic = hangul_ic_new(keyboard); + + p = input; + while (*p != '\0') { + hangul_ic_process(ic, *p); + p++; + } + + commit = hangul_ic_get_commit_string(ic); + + va_start(ap, input); + + code = va_arg(ap, ucschar); + while (code != 0) { + if (*commit != code) + return false; + + code = va_arg(ap, ucschar); + commit++; + } + + va_end(ap); + + hangul_ic_delete(ic); + + return true; +} + +START_TEST(test_hangul_ic_process_2) +{ + /* ㄱㅏㅉ */ + fail_unless(check_commit("2", "rkW", 0xac00, 0)); + fail_unless(check_preedit("2", "rkW", 0x3149, 0)); + /* ㅂㅓㅅㅅㅡ */ + fail_unless(check_commit("2", "qjttm", 0xbc97, 0)); + fail_unless(check_preedit("2", "qjttm", 0xc2a4, 0)); + /* ㅂㅓㅆㅡ */ + fail_unless(check_commit("2", "qjTm", 0xbc84, 0)); + fail_unless(check_preedit("2", "qjTm", 0xc4f0, 0)); +} +END_TEST + +START_TEST(test_hangul_ic_process_2y) +{ + /* ㅎ */ + fail_unless(check_preedit("2y", "g", 0x314e, 0)); + /* ㅗ */ + fail_unless(check_preedit("2y", "h", 0x3157, 0)); + /* ㅌ */ + fail_unless(check_preedit("2y", "x", 0x314c, 0)); + /* ㅂㅇ */ + fail_unless(check_preedit("2y", "qd", 0x3178, 0)); + /* ᄼ */ + fail_unless(check_preedit("2y", "Z", 0x113c, 0x1160, 0)); + /* ᅐ */ + fail_unless(check_preedit("2y", "V", 0x1150, 0x1160, 0)); + /* ᅝ */ + fail_unless(check_preedit("2y", "sg", 0x115d, 0x1160, 0)); + + /* ㄱㅏㅇ */ + fail_unless(check_preedit("2y", "rkd", 0xac15, 0)); + /* ㄹㅐ */ + fail_unless(check_preedit("2y", "fo", 0xb798, 0)); + /* ㅎ. ㄴ */ + fail_unless(check_preedit("2y", "gKs", 0x1112, 0x119e, 0x11ab, 0)); + /* ㅂㅂㅇㅏㅁㅅㅅ */ + fail_unless(check_preedit("2y", "qqdhatt", 0x112c, 0x1169, 0x11de, 0)); + /* ㅂㅂㅇㅏㅁㅅㅅㅛ */ + fail_unless(check_commit("2y", "qqdhatty", 0x112c, 0x1169, 0x11dd, 0)); + fail_unless(check_preedit("2y", "qqdhatty", 0xc1fc, 0)); + /* ㅂㅂㅇㅏㅁㅆㅛ */ + fail_unless(check_commit("2y", "qqdhaTy", 0x112c, 0x1169, 0x11b7, 0)); + fail_unless(check_preedit("2y", "qqdhaTy", 0xc448, 0)); + /* 옛이응 처리 */ + /* ㅇㅇㅏㅇㅇㅏ */ + fail_unless(check_commit("2y", "ddkdd", 0x1147, 0x1161, 0x11bc, 0)); + fail_unless(check_preedit("2y", "ddkdd", 0x3147, 0)); + /* ㄱㅏㆁㆁ */ + fail_unless(check_preedit("2y", "rkDD", 0x1100, 0x1161, 0x11ee, 0)); + /* ㄱㅏㆁㆁㅏ */ + fail_unless(check_commit("2y", "rkDDk", 0x1100, 0x1161, 0x11f0, 0)); + fail_unless(check_preedit("2y", "rkDDk", 0x114c, 0x1161, 0)); + /* ㅏㅏㅏㅏ */ + fail_unless(check_preedit("2y", "kkkk", 0x115f, 0x11a2, 0)); +} +END_TEST + START_TEST(test_hangul_ic_process_3f) { /* L V T */ @@ -323,6 +419,8 @@ Suite* libhangul_suite() Suite* s = suite_create("libhangul"); TCase* hangul = tcase_create("hangul"); + tcase_add_test(hangul, test_hangul_ic_process_2); + tcase_add_test(hangul, test_hangul_ic_process_2y); 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); @@ -338,6 +436,7 @@ int main() Suite* s = libhangul_suite(); SRunner* sr = srunner_create(s); + srunner_set_fork_status(sr, CK_NOFORK); srunner_run_all(sr, CK_NORMAL); number_failed = srunner_ntests_failed(sr); -- cgit v1.2.1