Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(149)

Side by Side Diff: source/test/intltest/jamotest.cpp

Issue 2435373002: Delete source/test (Closed)
Patch Set: Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « source/test/intltest/jamotest.h ('k') | source/test/intltest/lcukocol.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 /********************************************************************
2 * COPYRIGHT:
3 * Copyright (c) 1997-2010, International Business Machines Corporation and
4 * others. All Rights Reserved.
5 ********************************************************************
6 ************************************************************************
7 * Date Name Description
8 * 02/28/2001 aliu Creation
9 * 03/01/2001 George port to HP/UX
10 ************************************************************************/
11
12 #include "unicode/utypes.h"
13
14 #if !UCONFIG_NO_TRANSLITERATION
15
16 #include "jamotest.h"
17 #include "unicode/utypes.h"
18 #include "unicode/translit.h"
19 #include "cpdtrans.h"
20
21 // SEP is the disambiguation separator used by Latin-Jamo and Jamo-Latin
22 #define SEP "-"
23
24 JamoTest::JamoTest()
25 {
26 UParseError parseError;
27 UErrorCode status = U_ZERO_ERROR;
28 NAME_JAMO = Transliterator::createFromRules("Name-Jamo",
29 UnicodeString(JAMO_NAMES_RULES, -1, US_INV),
30 UTRANS_FORWARD, parseError, status);
31
32 if (U_FAILURE(status)) {
33 delete NAME_JAMO;
34 NAME_JAMO = NULL;
35 }
36 status = U_ZERO_ERROR;
37 JAMO_NAME = Transliterator::createFromRules("Jamo-Name",
38 UnicodeString(JAMO_NAMES_RULES, -1, US_INV),
39 UTRANS_REVERSE, parseError, status);
40 if (U_FAILURE(status)) {
41 delete JAMO_NAME;
42 JAMO_NAME = NULL;
43 }
44 }
45
46 JamoTest::~JamoTest()
47 {
48 delete NAME_JAMO;
49 delete JAMO_NAME;
50 }
51
52 void
53 JamoTest::runIndexedTest(int32_t index, UBool exec,
54 const char* &name, char* /*par*/) {
55 switch (index) {
56 TESTCASE(0,TestJamo);
57 TESTCASE(1,TestRealText);
58 TESTCASE(2,TestPiecemeal);
59 default: name = ""; break;
60 }
61 }
62
63 void
64 JamoTest::TestJamo() {
65 UParseError parseError;
66 UErrorCode status = U_ZERO_ERROR;
67 Transliterator* latinJamo = Transliterator::createInstance("Latin-Jamo", UTR ANS_FORWARD, parseError, status);
68
69 if (latinJamo == 0 || U_FAILURE(status)) {
70 dataerrln("FAIL: createInstance() returned 0 - %s", u_errorName(status)) ;
71 return;
72 }
73
74 Transliterator* jamoLatin = latinJamo->createInverse(status);
75
76 if (jamoLatin == 0) {
77 delete latinJamo;
78 errln("FAIL: createInverse() returned 0");
79 return;
80 }
81
82 static const char* CASE[] = {
83 // Column 1 is the latin text L1 to be fed to Latin-Jamo
84 // to yield output J.
85
86 // Column 2 is expected value of J. J is fed to
87 // Jamo-Latin to yield output L2.
88
89 // Column 3 is expected value of L2. If the expected
90 // value of L2 is L1, then L2 is NULL.
91
92 // add tests for the update to fix problems where it didn't foll ow the standard
93 // see also http://www.unicode.org/cldr/data/charts/transforms/L atin-Hangul.html
94 "gach", "(Gi)(A)(Cf)", NULL,
95 "geumhui", "(Gi)(EU)(Mf)(Hi)(YI)", NULL,
96 "choe", "(Ci)(OE)", NULL,
97 "wo", "(IEUNG)(WEO)", NULL,
98 "Wonpil", "(IEUNG)(WEO)(Nf)(Pi)(I)(L)", "wonpil",
99 "GIPPEUM", "(Gi)(I)(BB)(EU)(Mf)", "gippeum",
100 "EUTTEUM", "(IEUNG)(EU)(DD)(EU)(Mf)", "eutteum",
101 "KKOTNAE", "(GGi)(O)(Tf)(Ni)(AE)", "kkotnae",
102 "gaga", "(Gi)(A)(Gi)(A)", NULL,
103 "gag-a", "(Gi)(A)(Gf)(IEUNG)(A)", NULL,
104 "gak-ka", "(Gi)(A)(Kf)(Ki)(A)", NULL,
105 "gakka", "(Gi)(A)(GGi)(A)", NULL,
106 "gakk-a", "(Gi)(A)(GGf)(IEUNG)(A)", NULL,
107 "gakkka", "(Gi)(A)(GGf)(Ki)(A)", NULL,
108 "gak-kka", "(Gi)(A)(Kf)(GGi)(A)", NULL,
109
110 "bab", "(Bi)(A)(Bf)", NULL,
111 "babb", "(Bi)(A)(Bf)(Bi)(EU)", "babbeu",
112 "babbba", "(Bi)(A)(Bf)(Bi)(EU)(Bi)(A)", "babbeuba",
113 "bagg", "(Bi)(A)(Gf)(Gi)(EU)", "baggeu",
114 "baggga", "(Bi)(A)(Gf)(Gi)(EU)(Gi)(A)", "baggeuga",
115 //"bag" SEP "gga", "(Bi)(A)(Gf)" SEP "(Gi)(EU)(Gi)(A)", "bag" SEP "geuga ",
116 "kabsa", "(Ki)(A)(Bf)(Si)(A)", NULL,
117 "kabska", "(Ki)(A)(BS)(Ki)(A)", NULL,
118 "gabsbka", "(Gi)(A)(BS)(Bi)(EU)(Ki)(A)", "gabsbeuka", // not (Kf)
119 "gga", "(Gi)(EU)(Gi)(A)", "geuga",
120 "bsa", "(Bi)(EU)(Si)(A)", "beusa",
121 "agg", "(IEUNG)(A)(Gf)(Gi)(EU)", "aggeu",
122 "agga", "(IEUNG)(A)(Gf)(Gi)(A)", NULL,
123 "la", "(R)(A)", NULL,
124 "bs", "(Bi)(EU)(Sf)", "beus",
125 "kalgga", "(Ki)(A)(L)(Gi)(EU)(Gi)(A)", "kalgeuga",
126
127 // 'r' in a final position is treated like 'l'
128 "karka", "(Ki)(A)(L)(Ki)(A)", "kalka",
129 };
130
131 enum { CASE_length = sizeof(CASE) / sizeof(CASE[0]) };
132
133 int32_t i;
134 for (i=0; i<CASE_length; i+=3) {
135 UnicodeString jamo = nameToJamo(CASE[i+1]);
136 if (CASE[i+2] == NULL) {
137 expect(*latinJamo, CASE[i], jamo, *jamoLatin);
138 } else {
139 // Handle case where round-trip is expected to fail
140 expect(*latinJamo, CASE[i], jamo);
141 expect(*jamoLatin, jamo, CASE[i+2]);
142 }
143 }
144
145 delete latinJamo;
146 delete jamoLatin;
147 }
148
149 /**
150 * Test various step-at-a-time transformation of hangul to jamo to
151 * latin and back.
152 */
153 void JamoTest::TestPiecemeal(void) {
154 UnicodeString hangul; hangul.append((UChar)0xBC0F);
155 UnicodeString jamo = nameToJamo("(Mi)(I)(Cf)");
156 UnicodeString latin("mic");
157 UnicodeString latin2("mich");
158
159 Transliterator *t = NULL;
160 UErrorCode status = U_ZERO_ERROR;
161
162 t = Transliterator::createInstance("NFD", UTRANS_FORWARD, status); // was Ha ngul-Jamo
163 if (U_FAILURE(status) || t == 0) {
164 dataerrln("FAIL: createInstance failed");
165 return;
166 }
167 expect(*t, hangul, jamo);
168 delete t;
169
170 t = Transliterator::createInstance("NFC", UTRANS_FORWARD, status); // was Ja mo-Hangul
171 if (U_FAILURE(status) || t == 0) {
172 errln("FAIL: createInstance failed");
173 return;
174 }
175 expect(*t, jamo, hangul);
176 delete t;
177
178 t = Transliterator::createInstance("Latin-Jamo", UTRANS_FORWARD, status);
179 if (U_FAILURE(status) || t == 0) {
180 dataerrln("FAIL: createInstance failed - %s", u_errorName(status));
181 return;
182 }
183 expect(*t, latin, jamo);
184 delete t;
185
186 t = Transliterator::createInstance("Jamo-Latin", UTRANS_FORWARD, status);
187 if (U_FAILURE(status) || t == 0) {
188 errln("FAIL: createInstance failed");
189 return;
190 }
191 expect(*t, jamo, latin2);
192 delete t;
193
194 t = Transliterator::createInstance("Hangul-Latin", UTRANS_FORWARD, status);
195 if (U_FAILURE(status) || t == 0) {
196 errln("FAIL: createInstance failed");
197 return;
198 }
199 expect(*t, hangul, latin2);
200 delete t;
201
202 t = Transliterator::createInstance("Latin-Hangul", UTRANS_FORWARD, status);
203 if (U_FAILURE(status) || t == 0) {
204 errln("FAIL: createInstance failed");
205 return;
206 }
207 expect(*t, latin, hangul);
208 delete t;
209
210 t = Transliterator::createInstance("Hangul-Latin; Latin-Jamo", UTRANS_FORWAR D, status);
211 if (U_FAILURE(status) || t == 0) {
212 errln("FAIL: createInstance failed");
213 return;
214 }
215 expect(*t, hangul, jamo);
216 delete t;
217
218 t = Transliterator::createInstance("Jamo-Latin; Latin-Hangul", UTRANS_FORWAR D, status);
219 if (U_FAILURE(status) || t == 0) {
220 errln("FAIL: createInstance failed");
221 return;
222 }
223 expect(*t, jamo, hangul);
224 delete t;
225
226 t = Transliterator::createInstance("Hangul-Latin; Latin-Hangul", UTRANS_FORW ARD, status);
227 if (U_FAILURE(status) || t == 0) {
228 errln("FAIL: createInstance failed");
229 return;
230 }
231 expect(*t, hangul, hangul);
232 delete t;
233 }
234
235 void
236 JamoTest::TestRealText() {
237 // Test text taken from the Unicode web site
238 static const char* const WHAT_IS_UNICODE[] = {
239 "\\uc720\\ub2c8\\ucf54\\ub4dc\\uc5d0", "\\ub300\\ud574", "?",
240
241 "\\uc5b4\\ub5a4", "\\ud50c\\ub7ab\\ud3fc,", "\\uc5b4\\ub5a4",
242 "\\ud504\\ub85c\\uadf8\\ub7a8,", "\\uc5b4\\ub5a4", "\\uc5b8\\uc5b4\\uc5d0\ \ub3c4",
243 "\\uc0c1\\uad00\\uc5c6\\uc774", "\\uc720\\ub2c8\\ucf54\\ub4dc\\ub294", "\\ ubaa8\\ub4e0",
244 "\\ubb38\\uc790\\uc5d0", "\\ub300\\ud574", "\\uace0\\uc720", "\\ubc88\\ud6 38\\ub97c",
245 "\\uc81c\\uacf5\\ud569\\ub2c8\\ub2e4.",
246
247 "\\uae30\\ubcf8\\uc801\\uc73c\\ub85c", "\\ucef4\\ud4e8\\ud130\\ub294",
248 "\\uc22b\\uc790\\ub9cc", "\\ucc98\\ub9ac\\ud569\\ub2c8\\ub2e4.", "\\uae00\ \uc790\\ub098",
249 "\\ub2e4\\ub978", "\\ubb38\\uc790\\uc5d0\\ub3c4", "\\uc22b\\uc790\\ub97c",
250 "\\uc9c0\\uc815\\ud558\\uc5ec",
251 "\\uc800\\uc7a5\\ud569\\ub2c8\\ub2e4.", "\\uc720\\ub2c8\\ucf54\\ub4dc\\uac 00",
252 "\\uac1c\\ubc1c\\ub418\\uae30", "\\uc804\\uc5d0\\ub294", "\\uc774\\ub7ec\\ ud55c",
253 "\\uc22b\\uc790\\ub97c", "\\uc9c0\\uc815\\ud558\\uae30", "\\uc704\\ud574", "\\uc218\\ubc31",
254 "\\uac00\\uc9c0\\uc758", "\\ub2e4\\ub978", "\\uae30\\ud638\\ud654",
255 "\\uc2dc\\uc2a4\\ud15c\\uc744",
256 "\\uc0ac\\uc6a9\\ud588\\uc2b5\\ub2c8\\ub2e4.", "\\ub2e8\\uc77c", "\\uae30\ \ud638\\ud654",
257 "\\ubc29\\ubc95\\uc73c\\ub85c\\ub294", "\\ubaa8\\ub4e0", "\\ubb38\\uc790\\ ub97c",
258 "\\ud3ec\\ud568\\ud560", "\\uc218", "\\uc5c6\\uc5c8\\uc2b5\\ub2c8\\ub2e4." , "\\uc608\\ub97c",
259 "\\ub4e4\\uc5b4", "\\uc720\\ub7fd", "\\uc5f0\\ud569\\uc5d0\\uc11c\\ub9cc",
260 "\\ubcf4\\ub354\\ub77c\\ub3c4", "\\ubaa8\\ub4e0", "\\uac01", "\\ub098\\ub7 7c\\ubcc4",
261 "\\uc5b8\\uc5b4\\ub97c", "\\ucc98\\ub9ac\\ud558\\ub824\\uba74", "\\uc5ec\\ ub7ec",
262 "\\uac1c\\uc758", "\\ub2e4\\ub978", "\\uae30\\ud638\\ud654", "\\ubc29\\ubc 95\\uc774",
263 "\\ud544\\uc694\\ud569\\ub2c8\\ub2e4.", "\\uc601\\uc5b4\\uc640", "\\uac19\ \uc740",
264 "\\ub2e8\\uc77c", "\\uc5b8\\uc5b4\\uc758", "\\uacbd\\uc6b0\\ub3c4",
265 "\\uacf5\\ud1b5\\uc801\\uc73c\\ub85c", "\\uc0ac\\uc6a9\\ub418\\ub294", "\\ ubaa8\\ub4e0",
266 "\\uae00\\uc790,", "\\ubb38\\uc7a5", "\\ubd80\\ud638", "\\ubc0f",
267 "\\ud14c\\ud06c\\ub2c8\\uceec", "\\uae30\\ud638\\uc5d0", "\\ub9de\\ub294", "\\ub2e8\\uc77c",
268 "\\uae30\\ud638\\ud654", "\\ubc29\\ubc95\\uc744", "\\uac16\\uace0", "\\uc7 88\\uc9c0",
269 "\\ubabb\\ud558\\uc600\\uc2b5\\ub2c8\\ub2e4.",
270
271 "\\uc774\\ub7ec\\ud55c", "\\uae30\\ud638\\ud654", "\\uc2dc\\uc2a4\\ud15c\\ uc740",
272 "\\ub610\\ud55c", "\\ub2e4\\ub978", "\\uae30\\ud638\\ud654", "\\uc2dc\\uc2 a4\\ud15c\\uacfc",
273 "\\ucda9\\ub3cc\\ud569\\ub2c8\\ub2e4.", "\\uc989", "\\ub450", "\\uac00\\uc 9c0",
274 "\\uae30\\ud638\\ud654", "\\ubc29\\ubc95\\uc774", "\\ub450", "\\uac1c\\uc7 58", "\\ub2e4\\ub978",
275 "\\ubb38\\uc790\\uc5d0", "\\ub300\\ud574", "\\uac19\\uc740", "\\ubc88\\ud6 38\\ub97c",
276 "\\uc0ac\\uc6a9\\ud558\\uac70\\ub098", "\\uac19\\uc740", "\\ubb38\\uc790\\ uc5d0",
277 "\\ub300\\ud574", "\\ub2e4\\ub978", "\\ubc88\\ud638\\ub97c", "\\uc0ac\\uc6 a9\\ud560", "\\uc218",
278 "\\uc788\\uc2b5\\ub2c8\\ub2e4.", "\\uc8fc\\uc5b4\\uc9c4", "\\ubaa8\\ub4e0" ,
279 "\\ucef4\\ud4e8\\ud130(\\ud2b9\\ud788", "\\uc11c\\ubc84)\\ub294", "\\uc11c \\ub85c",
280 "\\ub2e4\\ub978", "\\uc5ec\\ub7ec", "\\uac00\\uc9c0", "\\uae30\\ud638\\ud6 54",
281 "\\ubc29\\ubc95\\uc744", "\\uc9c0\\uc6d0\\ud574\\uc57c",
282 "\\ud569\\ub2c8\\ub2e4.", "\\uadf8\\ub7ec\\ub098,", "\\ub370\\uc774\\ud130 \\ub97c",
283 "\\uc11c\\ub85c", "\\ub2e4\\ub978", "\\uae30\\ud638\\ud654", "\\ubc29\\ubc 95\\uc774\\ub098",
284 "\\ud50c\\ub7ab\\ud3fc", "\\uac04\\uc5d0", "\\uc804\\ub2ec\\ud560", "\\ub5 4c\\ub9c8\\ub2e4",
285 "\\uadf8", "\\ub370\\uc774\\ud130\\ub294", "\\ud56d\\uc0c1", "\\uc190\\uc0 c1\\uc758",
286 "\\uc704\\ud5d8\\uc744", "\\uacaa\\uac8c", "\\ub429\\ub2c8\\ub2e4.",
287
288 "\\uc720\\ub2c8\\ucf54\\ub4dc\\ub85c", "\\ubaa8\\ub4e0", "\\uac83\\uc744",
289 "\\ud574\\uacb0\\ud560", "\\uc218", "\\uc788\\uc2b5\\ub2c8\\ub2e4!",
290 "\\uc720\\ub2c8\\ucf54\\ub4dc\\ub294", "\\uc0ac\\uc6a9", "\\uc911\\uc778",
291 "\\ud50c\\ub7ab\\ud3fc,", "\\ud504\\ub85c\\uadf8\\ub7a8,", "\\uc5b8\\uc5b4 \\uc5d0",
292 "\\uad00\\uacc4\\uc5c6\\uc774", "\\ubb38\\uc790\\ub9c8\\ub2e4", "\\uace0\\ uc720\\ud55c",
293 "\\uc22b\\uc790\\ub97c",
294 "\\uc81c\\uacf5\\ud569\\ub2c8\\ub2e4.", "\\uc720\\ub2c8\\ucf54\\ub4dc",
295 "\\ud45c\\uc900\\uc740", // "Apple, HP, IBM, JustSystem, Microsoft, Oracle , SAP, "
296 // "Sun, Sybase, Unisys "
297 "\\ubc0f", "\\uae30\\ud0c0", "\\uc5ec\\ub7ec",
298 "\\ud68c\\uc0ac\\uc640", "\\uac19\\uc740", "\\uc5c5\\uacc4",
299 "\\uc120\\ub450\\uc8fc\\uc790\\uc5d0", "\\uc758\\ud574",
300 "\\ucc44\\ud0dd\\ub418\\uc5c8\\uc2b5\\ub2c8\\ub2e4.", "\\uc720\\ub2c8\\ucf 54\\ub4dc\\ub294",
301 // "XML, Java, ECMAScript(JavaScript), LDAP, CORBA 3.0, WML "
302 "\\ub4f1\\uacfc",
303 "\\uac19\\uc774", "\\ud604\\uc7ac", "\\ub110\\ub9ac", "\\uc0ac\\uc6a9\\ub4 18\\ub294",
304 "\\ud45c\\uc900\\uc5d0\\uc11c", "\\ud544\\uc694\\ud558\\uba70", "\\uc774\\ ub294", // "ISO/IEC",
305 "10646\\uc744", "\\uad6c\\ud604\\ud558\\ub294", "\\uacf5\\uc2dd\\uc801\\uc 778",
306 "\\ubc29\\ubc95\\uc785\\ub2c8\\ub2e4.", "\\uc774\\ub294", "\\ub9ce\\uc740" , "\\uc6b4\\uc601",
307 "\\uccb4\\uc81c,", "\\uc694\\uc998", "\\uc0ac\\uc6a9\\ub418\\ub294", "\\ub aa8\\ub4e0",
308 "\\ube0c\\ub77c\\uc6b0\\uc800", "\\ubc0f", "\\uae30\\ud0c0", "\\ub9ce\\uc7 40",
309 "\\uc81c\\ud488\\uc5d0\\uc11c",
310 "\\uc9c0\\uc6d0\\ub429\\ub2c8\\ub2e4.", "\\uc720\\ub2c8\\ucf54\\ub4dc",
311 "\\ud45c\\uc900\\uc758", "\\ubd80\\uc0c1\\uacfc", "\\uc774\\ub97c",
312 "\\uc9c0\\uc6d0\\ud558\\ub294", "\\ub3c4\\uad6c\\uc758", "\\uac00\\uc6a9\\ uc131\\uc740",
313 "\\ucd5c\\uadfc", "\\uc804", "\\uc138\\uacc4\\uc5d0", "\\ubd88\\uace0", "\ \uc788\\ub294",
314 "\\uae30\\uc220", "\\uacbd\\ud5a5\\uc5d0\\uc11c", "\\uac00\\uc7a5", "\\uc9 11\\uc694\\ud55c",
315 "\\ubd80\\ubd84\\uc744", "\\ucc28\\uc9c0\\ud558\\uace0", "\\uc788\\uc2b5\\ ub2c8\\ub2e4.",
316
317 "\\uc720\\ub2c8\\ucf54\\ub4dc\\ub97c",
318 // Replaced a hyphen with a space to make the test case work with CLDR1.5
319 //"\\ud074\\ub77c\\uc774\\uc5b8\\ud2b8-\\uc11c\\ubc84", "\\ub610\\ub294",
320 "\\ud074\\ub77c\\uc774\\uc5b8\\ud2b8 \\uc11c\\ubc84", "\\ub610\\ub294",
321 // Replaced a hyphen with a space.
322 //"\\ub2e4\\uc911-\\uc5f0\\uacb0", "\\uc751\\uc6a9", "\\ud504\\ub85c\\uadf 8\\ub7a8\\uacfc",
323 "\\ub2e4\\uc911 \\uc5f0\\uacb0", "\\uc751\\uc6a9", "\\ud504\\ub85c\\uadf8\ \ub7a8\\uacfc",
324 "\\uc6f9", "\\uc0ac\\uc774\\ud2b8\\uc5d0", "\\ud1b5\\ud569\\ud558\\uba74",
325 "\\ub808\\uac70\\uc2dc", "\\ubb38\\uc790", "\\uc138\\ud2b8", "\\uc0ac\\uc6 a9\\uc5d0",
326 "\\uc788\\uc5b4\\uc11c", "\\uc0c1\\ub2f9\\ud55c", "\\ube44\\uc6a9", "\\uc8 08\\uac10",
327 "\\ud6a8\\uacfc\\uac00",
328 "\\ub098\\ud0c0\\ub0a9\\ub2c8\\ub2e4.", "\\uc720\\ub2c8\\ucf54\\ub4dc\\ub9 7c",
329 "\\ud1b5\\ud574", "\\ub9ac\\uc5d4\\uc9c0\\ub2c8\\uc5b4\\ub9c1", "\\uc5c6\\ uc774",
330 "\\ub2e4\\uc911", "\\ud50c\\ub7ab\\ud3fc,", "\\uc5b8\\uc5b4", "\\ubc0f", " \\uad6d\\uac00",
331 "\\uac04\\uc5d0", "\\ub2e8\\uc77c", "\\uc18c\\ud504\\ud2b8\\uc6e8\\uc5b4",
332 "\\ud50c\\ub7ab\\ud3fc", "\\ub610\\ub294", "\\ub2e8\\uc77c", "\\uc6f9",
333 "\\uc0ac\\uc774\\ud2b8\\ub97c", "\\ubaa9\\ud45c\\ub85c", "\\uc0bc\\uc744", "\\uc218",
334 "\\uc788\\uc2b5\\ub2c8\\ub2e4.", "\\uc774\\ub97c", "\\uc0ac\\uc6a9\\ud558\ \uba74",
335 "\\ub370\\uc774\\ud130\\ub97c", "\\uc190\\uc0c1", "\\uc5c6\\uc774", "\\uc5 ec\\ub7ec",
336 "\\uc2dc\\uc2a4\\ud15c\\uc744", "\\ud1b5\\ud574", "\\uc804\\uc1a1\\ud560", "\\uc218",
337 "\\uc788\\uc2b5\\ub2c8\\ub2e4.",
338
339 "\\uc720\\ub2c8\\ucf54\\ub4dc", "\\ucf58\\uc18c\\uc2dc\\uc5c4\\uc5d0", "\\ ub300\\ud574",
340 "\\uc720\\ub2c8\\ucf54\\ub4dc", "\\ucf58\\uc18c\\uc2dc\\uc5c4\\uc740",
341 "\\ube44\\uc601\\ub9ac", "\\uc870\\uc9c1\\uc73c\\ub85c\\uc11c", "\\ud604\\ ub300",
342 "\\uc18c\\ud504\\ud2b8\\uc6e8\\uc5b4", "\\uc81c\\ud488\\uacfc",
343 "\\ud45c\\uc900\\uc5d0\\uc11c", "\\ud14d\\uc2a4\\ud2b8\\uc758", "\\ud45c\\ ud604\\uc744",
344 "\\uc9c0\\uc815\\ud558\\ub294", "\\uc720\\ub2c8\\ucf54\\ub4dc", "\\ud45c\\ uc900\\uc758",
345 "\\uc0ac\\uc6a9\\uc744", "\\uac1c\\ubc1c\\ud558\\uace0", "\\ud655\\uc7a5\\ ud558\\uba70",
346 "\\uc7a5\\ub824\\ud558\\uae30", "\\uc704\\ud574",
347 "\\uc138\\uc6cc\\uc84c\\uc2b5\\ub2c8\\ub2e4.", "\\ucf58\\uc18c\\uc2dc\\uc5 c4",
348 "\\uba64\\ubc84\\uc27d\\uc740", "\\ucef4\\ud4e8\\ud130\\uc640", "\\uc815\\ ubcf4",
349 "\\ucc98\\ub9ac", "\\uc0b0\\uc5c5\\uc5d0", "\\uc885\\uc0ac\\ud558\\uace0", "\\uc788\\ub294",
350 "\\uad11\\ubc94\\uc704\\ud55c", "\\ud68c\\uc0ac", "\\ubc0f", "\\uc870\\uc9 c1\\uc758",
351 "\\ubc94\\uc704\\ub97c",
352 "\\ub098\\ud0c0\\ub0c5\\ub2c8\\ub2e4.", "\\ucf58\\uc18c\\uc2dc\\uc5c4\\uc7 58",
353 "\\uc7ac\\uc815\\uc740", "\\uc804\\uc801\\uc73c\\ub85c", "\\ud68c\\ube44\\ uc5d0",
354 "\\uc758\\ud574", "\\ucda9\\ub2f9\\ub429\\ub2c8\\ub2e4.", "\\uc720\\ub2c8\ \ucf54\\ub4dc",
355 "\\ucee8\\uc18c\\uc2dc\\uc5c4\\uc5d0\\uc11c\\uc758", "\\uba64\\ubc84\\uc27 d\\uc740",
356 "\\uc804", "\\uc138\\uacc4", "\\uc5b4\\ub290", "\\uacf3\\uc5d0\\uc11c\\ub0 98",
357 "\\uc720\\ub2c8\\ucf54\\ub4dc", "\\ud45c\\uc900\\uc744", "\\uc9c0\\uc6d0\\ ud558\\uace0",
358 "\\uadf8", "\\ud655\\uc7a5\\uacfc", "\\uad6c\\ud604\\uc744",
359 "\\uc9c0\\uc6d0\\ud558\\uace0\\uc790\\ud558\\ub294", "\\uc870\\uc9c1\\uacf c",
360 "\\uac1c\\uc778\\uc5d0\\uac8c", "\\uac1c\\ubc29\\ub418\\uc5b4",
361 "\\uc788\\uc2b5\\ub2c8\\ub2e4.",
362
363 "\\ub354", "\\uc790\\uc138\\ud55c", "\\ub0b4\\uc6a9\\uc740", "\\uc6a9\\uc5 b4\\uc9d1,",
364 "\\uc608\\uc81c", "\\uc720\\ub2c8\\ucf54\\ub4dc", "\\uc0ac\\uc6a9", "\\uac 00\\ub2a5",
365 "\\uc81c\\ud488,", "\\uae30\\uc220", "\\uc815\\ubcf4", "\\ubc0f", "\\uae30 \\ud0c0",
366 "\\uc720\\uc6a9\\ud55c", "\\uc815\\ubcf4\\ub97c",
367 "\\ucc38\\uc870\\ud558\\uc2ed\\uc2dc\\uc624."
368 };
369
370 enum { WHAT_IS_UNICODE_length = sizeof(WHAT_IS_UNICODE) / sizeof(WHAT_IS_UNI CODE[0]) };
371
372 UParseError parseError;
373 UErrorCode status = U_ZERO_ERROR;
374 Transliterator* latinJamo = Transliterator::createInstance("Latin-Jamo", UTR ANS_FORWARD, parseError, status);
375 Transliterator* jamoHangul = Transliterator::createInstance("NFC(NFD)", UTRA NS_FORWARD, parseError, status);
376 if (latinJamo == 0 || jamoHangul == 0 || U_FAILURE(status)) {
377 delete latinJamo;
378 delete jamoHangul;
379 dataerrln("FAIL: createInstance returned NULL - %s", u_errorName(status) );
380 return;
381 }
382 Transliterator* jamoLatin = latinJamo->createInverse(status);
383 Transliterator* hangulJamo = jamoHangul->createInverse(status);
384 if (jamoLatin == 0 || hangulJamo == 0) {
385 errln("FAIL: createInverse returned NULL");
386 delete latinJamo;
387 delete jamoLatin;
388 delete jamoHangul;
389 delete hangulJamo;
390 return;
391 }
392
393 Transliterator* tarray[4] =
394 { hangulJamo, jamoLatin, latinJamo, jamoHangul };
395 CompoundTransliterator rt(tarray, 4);
396
397 UnicodeString buf;
398 int32_t total = 0;
399 int32_t errors = 0;
400 int32_t i;
401 for (i=0; i < WHAT_IS_UNICODE_length; ++i) {
402 ++total;
403 UnicodeString hangul = UnicodeString(WHAT_IS_UNICODE[i], -1, US_INV);
404 hangul = hangul.unescape(); // Parse backslash-u escapes
405 UnicodeString hangulX = hangul;
406 rt.transliterate(hangulX);
407 if (hangul != hangulX) {
408 ++errors;
409 UnicodeString jamo = hangul; hangulJamo->transliterate(jamo);
410 UnicodeString latin = jamo; jamoLatin->transliterate(latin);
411 UnicodeString jamo2 = latin; latinJamo->transliterate(jamo2);
412 UnicodeString hangul2 = jamo2; jamoHangul->transliterate(hangul2);
413
414 buf.remove(0);
415 buf.append("FAIL: ");
416 if (hangul2 != hangulX) {
417 buf.append((UnicodeString)"(Weird: " + hangulX + " != " + hangul 2 + ")");
418 }
419 // The Hangul-Jamo conversion is not usually the
420 // bug here, so we hide it from display.
421 // Uncomment lines to see the Hangul.
422 buf.append(//hangul + " => " +
423 jamoToName(jamo) + " => " +
424 latin + " => " + jamoToName(jamo2)
425 //+ " => " + hangul2
426 );
427 errln(prettify(buf));
428 }
429 }
430 if (errors != 0) {
431 errln((UnicodeString)"Test word failures: " + errors + " out of " + tota l);
432 } else {
433 logln((UnicodeString)"All " + total + " test words passed");
434 }
435
436 delete latinJamo;
437 delete jamoLatin;
438 delete jamoHangul;
439 delete hangulJamo;
440 }
441
442 // Override TransliteratorTest
443 void
444 JamoTest::expectAux(const UnicodeString& tag,
445 const UnicodeString& summary, UBool pass,
446 const UnicodeString& expectedResult) {
447 UnicodeString jsum = jamoToName(summary);
448 UnicodeString jexp = jamoToName(expectedResult);
449 TransliteratorTest::expectAux(tag, jsum, pass, jexp);
450 }
451
452 const char* JamoTest::JAMO_NAMES_RULES =
453 "'(Gi)' <> \\u1100;"
454 "'(GGi)' <> \\u1101;"
455 "'(Ni)' <> \\u1102;"
456 "'(Di)' <> \\u1103;"
457 "'(DD)' <> \\u1104;"
458 "'(R)' <> \\u1105;"
459 "'(Mi)' <> \\u1106;"
460 "'(Bi)' <> \\u1107;"
461 "'(BB)' <> \\u1108;"
462 "'(Si)' <> \\u1109;"
463 "'(SSi)' <> \\u110A;"
464 "'(IEUNG)' <> \\u110B;"
465 "'(Ji)' <> \\u110C;"
466 "'(JJ)' <> \\u110D;"
467 "'(Ci)' <> \\u110E;"
468 "'(Ki)' <> \\u110F;"
469 "'(Ti)' <> \\u1110;"
470 "'(Pi)' <> \\u1111;"
471 "'(Hi)' <> \\u1112;"
472
473 "'(A)' <> \\u1161;"
474 "'(AE)' <> \\u1162;"
475 "'(YA)' <> \\u1163;"
476 "'(YAE)' <> \\u1164;"
477 "'(EO)' <> \\u1165;"
478 "'(E)' <> \\u1166;"
479 "'(YEO)' <> \\u1167;"
480 "'(YE)' <> \\u1168;"
481 "'(O)' <> \\u1169;"
482 "'(WA)' <> \\u116A;"
483 "'(WAE)' <> \\u116B;"
484 "'(OE)' <> \\u116C;"
485 "'(YO)' <> \\u116D;"
486 "'(U)' <> \\u116E;"
487 "'(WEO)' <> \\u116F;"
488 "'(WE)' <> \\u1170;"
489 "'(WI)' <> \\u1171;"
490 "'(YU)' <> \\u1172;"
491 "'(EU)' <> \\u1173;"
492 "'(YI)' <> \\u1174;"
493 "'(I)' <> \\u1175;"
494
495 "'(Gf)' <> \\u11A8;"
496 "'(GGf)' <> \\u11A9;"
497 "'(GS)' <> \\u11AA;"
498 "'(Nf)' <> \\u11AB;"
499 "'(NJ)' <> \\u11AC;"
500 "'(NH)' <> \\u11AD;"
501 "'(Df)' <> \\u11AE;"
502 "'(L)' <> \\u11AF;"
503 "'(LG)' <> \\u11B0;"
504 "'(LM)' <> \\u11B1;"
505 "'(LB)' <> \\u11B2;"
506 "'(LS)' <> \\u11B3;"
507 "'(LT)' <> \\u11B4;"
508 "'(LP)' <> \\u11B5;"
509 "'(LH)' <> \\u11B6;"
510 "'(Mf)' <> \\u11B7;"
511 "'(Bf)' <> \\u11B8;"
512 "'(BS)' <> \\u11B9;"
513 "'(Sf)' <> \\u11BA;"
514 "'(SSf)' <> \\u11BB;"
515 "'(NG)' <> \\u11BC;"
516 "'(Jf)' <> \\u11BD;"
517 "'(Cf)' <> \\u11BE;"
518 "'(Kf)' <> \\u11BF;"
519 "'(Tf)' <> \\u11C0;"
520 "'(Pf)' <> \\u11C1;"
521 "'(Hf)' <> \\u11C2;";
522
523 /**
524 * Convert short names to actual jamo. E.g., "x(LG)y" returns
525 * "x\u11B0y". See JAMO_NAMES for table of names.
526 */
527 UnicodeString
528 JamoTest::nameToJamo(const UnicodeString& input) {
529 if (NAME_JAMO == 0) {
530 errln("Failed to create NAME_JAMO");
531 return input; /* failure! */
532 }
533 UnicodeString result(input);
534 NAME_JAMO->transliterate(result);
535 return result;
536 }
537
538 /**
539 * Convert jamo to short names. E.g., "x\u11B0y" returns
540 * "x(LG)y". See JAMO_NAMES for table of names.
541 */
542 UnicodeString
543 JamoTest::jamoToName(const UnicodeString& input) {
544 if (NAME_JAMO == 0) {
545 errln("Failed to create NAME_JAMO");
546 return input; /* failure! */
547 }
548 UnicodeString result(input);
549 JAMO_NAME->transliterate(result);
550 return result;
551 }
552
553 #endif /* #if !UCONFIG_NO_TRANSLITERATION */
OLDNEW
« no previous file with comments | « source/test/intltest/jamotest.h ('k') | source/test/intltest/lcukocol.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698