• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2 **********************************************************************
3 * Copyright (c) 2002-2005, International Business Machines
4 * Corporation and others.  All Rights Reserved.
5 **********************************************************************
6 **********************************************************************
7 */
8 /**
9  * This Program tests the performance of ICU's Normalization engine against Windows
10  * to run it use the command like
11  *
12  * c:\normperf.exe -s C:\work\ICUCupertinoRep\icu4c\collation-perf-data  -i 10 -p 15 -f TestNames_Asian.txt -u -e UTF-8  -l
13  */
14 #include "convperf.h"
15 #include "data.h"
16 #include <stdio.h>
17 
main(int argc,const char * argv[])18 int main(int argc, const char* argv[]){
19     UErrorCode status = U_ZERO_ERROR;
20     ConverterPerformanceTest test(argc, argv, status);
21     if(U_FAILURE(status)){
22         return status;
23     }
24     if(test.run()==FALSE){
25         fprintf(stderr,"FAILED: Tests could not be run please check the arguments.\n");
26         return -1;
27     }
28     return 0;
29 }
30 
31 
ConverterPerformanceTest(int32_t argc,const char * argv[],UErrorCode & status)32 ConverterPerformanceTest::ConverterPerformanceTest(int32_t argc, const char* argv[], UErrorCode& status)
33 : UPerfTest(argc,argv,status){
34 
35 }
36 
~ConverterPerformanceTest()37 ConverterPerformanceTest::~ConverterPerformanceTest(){
38 
39 }
40 
runIndexedTest(int32_t index,UBool exec,const char * & name,char * par)41 UPerfFunction* ConverterPerformanceTest::runIndexedTest(int32_t index, UBool exec,const char* &name, char* par) {
42     switch (index) {
43         TESTCASE(0,TestICU_CleanOpenAllConverters);// This calls u_cleanup()
44         TESTCASE(1,TestICU_OpenAllConverters);// This doesn't call u_cleanup()
45 
46         TESTCASE(2,TestICU_UTF8_ToUnicode);
47         TESTCASE(3,TestICU_UTF8_FromUnicode);
48         TESTCASE(4,TestWinANSI_UTF8_ToUnicode);
49         TESTCASE(5,TestWinANSI_UTF8_FromUnicode);
50         TESTCASE(6,TestWinIML2_UTF8_ToUnicode);
51         TESTCASE(7,TestWinIML2_UTF8_FromUnicode);
52 
53         TESTCASE(8,TestICU_Latin1_ToUnicode);
54         TESTCASE(9,TestICU_Latin1_FromUnicode);
55         TESTCASE(10,TestWinIML2_Latin1_ToUnicode);
56         TESTCASE(11,TestWinIML2_Latin1_FromUnicode);
57 
58         TESTCASE(12,TestICU_Latin8_ToUnicode);
59         TESTCASE(13,TestICU_Latin8_FromUnicode);
60         TESTCASE(14,TestWinIML2_Latin8_ToUnicode);
61         TESTCASE(15,TestWinIML2_Latin8_FromUnicode);
62 
63         TESTCASE(16,TestICU_EBCDIC_Arabic_ToUnicode);
64         TESTCASE(17,TestICU_EBCDIC_Arabic_FromUnicode);
65         TESTCASE(18,TestWinIML2_EBCDIC_Arabic_ToUnicode);
66         TESTCASE(19,TestWinIML2_EBCDIC_Arabic_FromUnicode);
67 
68         TESTCASE(20,TestICU_SJIS_ToUnicode);
69         TESTCASE(21,TestICU_SJIS_FromUnicode);
70         TESTCASE(22,TestWinIML2_SJIS_ToUnicode);
71         TESTCASE(23,TestWinIML2_SJIS_FromUnicode);
72 
73         TESTCASE(24,TestICU_EUCJP_ToUnicode);
74         TESTCASE(25,TestICU_EUCJP_FromUnicode);
75         TESTCASE(26,TestWinIML2_EUCJP_ToUnicode);
76         TESTCASE(27,TestWinIML2_EUCJP_FromUnicode);
77 
78         TESTCASE(28,TestICU_GB2312_FromUnicode);
79         TESTCASE(29,TestICU_GB2312_ToUnicode);
80         TESTCASE(30,TestWinIML2_GB2312_ToUnicode);
81         TESTCASE(31,TestWinIML2_GB2312_FromUnicode);
82 
83         TESTCASE(32,TestICU_ISO2022KR_ToUnicode);
84         TESTCASE(33,TestICU_ISO2022KR_FromUnicode);
85         TESTCASE(34,TestWinIML2_ISO2022KR_ToUnicode);
86         TESTCASE(35,TestWinIML2_ISO2022KR_FromUnicode);
87 
88         TESTCASE(36,TestICU_ISO2022JP_ToUnicode);
89         TESTCASE(37,TestICU_ISO2022JP_FromUnicode);
90         TESTCASE(38,TestWinIML2_ISO2022JP_ToUnicode);
91         TESTCASE(39,TestWinIML2_ISO2022JP_FromUnicode);
92 
93         TESTCASE(40,TestWinANSI_Latin1_ToUnicode);
94         TESTCASE(41,TestWinANSI_Latin1_FromUnicode);
95 
96         TESTCASE(42,TestWinANSI_Latin8_ToUnicode);
97         TESTCASE(43,TestWinANSI_Latin8_FromUnicode);
98 
99         TESTCASE(44,TestWinANSI_SJIS_ToUnicode);
100         TESTCASE(45,TestWinANSI_SJIS_FromUnicode);
101 
102         TESTCASE(46,TestWinANSI_EUCJP_ToUnicode);
103         TESTCASE(47,TestWinANSI_EUCJP_FromUnicode);
104 
105         TESTCASE(48,TestWinANSI_GB2312_ToUnicode);
106         TESTCASE(49,TestWinANSI_GB2312_FromUnicode);
107 
108         TESTCASE(50,TestWinANSI_ISO2022KR_ToUnicode);
109         TESTCASE(51,TestWinANSI_ISO2022KR_FromUnicode);
110 
111         TESTCASE(52,TestWinANSI_ISO2022JP_ToUnicode);
112         TESTCASE(53,TestWinANSI_ISO2022JP_FromUnicode);
113 
114         default:
115             name = "";
116             return NULL;
117     }
118     return NULL;
119 
120 }
121 
TestICU_CleanOpenAllConverters()122 UPerfFunction* ConverterPerformanceTest::TestICU_CleanOpenAllConverters() {
123     UErrorCode status = U_ZERO_ERROR;
124     UPerfFunction* pf = new ICUOpenAllConvertersFunction(TRUE, status);
125     if(U_FAILURE(status)){
126         return NULL;
127     }
128     return pf;
129 }
130 
TestICU_OpenAllConverters()131 UPerfFunction* ConverterPerformanceTest::TestICU_OpenAllConverters() {
132     UErrorCode status = U_ZERO_ERROR;
133     UPerfFunction* pf = new ICUOpenAllConvertersFunction(FALSE, status);
134     if(U_FAILURE(status)){
135         return NULL;
136     }
137     return pf;
138 }
139 
TestICU_UTF8_FromUnicode()140 UPerfFunction* ConverterPerformanceTest::TestICU_UTF8_FromUnicode(){
141     UErrorCode status = U_ZERO_ERROR;
142     ICUFromUnicodePerfFunction* pf = new ICUFromUnicodePerfFunction("utf-8",utf8_uniSource, LENGTHOF(utf8_uniSource), status);
143     if(U_FAILURE(status)){
144         return NULL;
145     }
146     return pf;
147 }
148 
TestICU_UTF8_ToUnicode()149 UPerfFunction*  ConverterPerformanceTest::TestICU_UTF8_ToUnicode(){
150     UErrorCode status = U_ZERO_ERROR;
151     UPerfFunction* pf = new ICUToUnicodePerfFunction("utf-8",(char*)utf8_encSource, LENGTHOF(utf8_encSource), status);
152     if(U_FAILURE(status)){
153         return NULL;
154     }
155     return pf;
156 }
157 
158 
TestWinIML2_UTF8_FromUnicode()159 UPerfFunction* ConverterPerformanceTest::TestWinIML2_UTF8_FromUnicode(){
160     UErrorCode status = U_ZERO_ERROR;
161     UPerfFunction* pf = new WinIMultiLanguage2FromUnicodePerfFunction("utf-8",utf8_uniSource, LENGTHOF(utf8_uniSource), status);
162     if(U_FAILURE(status)){
163         return NULL;
164     }
165     return pf;
166 }
167 
TestWinIML2_UTF8_ToUnicode()168 UPerfFunction*  ConverterPerformanceTest::TestWinIML2_UTF8_ToUnicode(){
169     UErrorCode status = U_ZERO_ERROR;
170     UPerfFunction* pf = new WinIMultiLanguage2ToUnicodePerfFunction("utf-8",(char*)utf8_encSource, LENGTHOF(utf8_encSource), status);
171     if(U_FAILURE(status)){
172         return NULL;
173     }
174     return pf;
175 }
176 
TestWinANSI_UTF8_FromUnicode()177 UPerfFunction* ConverterPerformanceTest::TestWinANSI_UTF8_FromUnicode(){
178     UErrorCode status = U_ZERO_ERROR;
179     UPerfFunction* pf = new WinANSIFromUnicodePerfFunction("utf-8",utf8_uniSource, LENGTHOF(utf8_uniSource), status);
180     if(U_FAILURE(status)){
181         return NULL;
182     }
183     return pf;
184 }
185 
TestWinANSI_UTF8_ToUnicode()186 UPerfFunction*  ConverterPerformanceTest::TestWinANSI_UTF8_ToUnicode(){
187     UErrorCode status = U_ZERO_ERROR;
188     UPerfFunction* pf = new WinANSIToUnicodePerfFunction("utf-8",(char*)utf8_encSource, LENGTHOF(utf8_encSource), status);
189     if(U_FAILURE(status)){
190         return NULL;
191     }
192     return pf;
193 }
194 
195 //################
196 
TestICU_Latin1_FromUnicode()197 UPerfFunction* ConverterPerformanceTest::TestICU_Latin1_FromUnicode(){
198     UErrorCode status = U_ZERO_ERROR;
199     ICUFromUnicodePerfFunction* pf = new ICUFromUnicodePerfFunction("iso-8859-1",latin1_uniSource, LENGTHOF(latin1_uniSource), status);
200     if(U_FAILURE(status)){
201         return NULL;
202     }
203     return pf;
204 }
205 
TestICU_Latin1_ToUnicode()206 UPerfFunction*  ConverterPerformanceTest::TestICU_Latin1_ToUnicode(){
207     UErrorCode status = U_ZERO_ERROR;
208     UPerfFunction* pf = new ICUToUnicodePerfFunction("iso-8859-1",(char*)latin1_encSource, LENGTHOF(latin1_encSource), status);
209     if(U_FAILURE(status)){
210         return NULL;
211     }
212     return pf;
213 }
214 
215 
TestWinIML2_Latin1_FromUnicode()216 UPerfFunction* ConverterPerformanceTest::TestWinIML2_Latin1_FromUnicode(){
217     UErrorCode status = U_ZERO_ERROR;
218     UPerfFunction* pf = new WinIMultiLanguage2FromUnicodePerfFunction("iso-8859-1",latin1_uniSource, LENGTHOF(latin1_uniSource), status);
219     if(U_FAILURE(status)){
220         return NULL;
221     }
222     return pf;
223 }
224 
TestWinIML2_Latin1_ToUnicode()225 UPerfFunction*  ConverterPerformanceTest::TestWinIML2_Latin1_ToUnicode(){
226     UErrorCode status = U_ZERO_ERROR;
227     UPerfFunction* pf = new WinIMultiLanguage2ToUnicodePerfFunction("iso-8859-1",(char*)latin1_encSource, LENGTHOF(latin1_encSource), status);
228     if(U_FAILURE(status)){
229         return NULL;
230     }
231     return pf;
232 }
233 
TestWinANSI_Latin1_FromUnicode()234 UPerfFunction* ConverterPerformanceTest::TestWinANSI_Latin1_FromUnicode(){
235     UErrorCode status = U_ZERO_ERROR;
236     UPerfFunction* pf = new WinANSIFromUnicodePerfFunction("iso-8859-1",latin1_uniSource, LENGTHOF(latin1_uniSource), status);
237     if(U_FAILURE(status)){
238         return NULL;
239     }
240     return pf;
241 }
242 
TestWinANSI_Latin1_ToUnicode()243 UPerfFunction*  ConverterPerformanceTest::TestWinANSI_Latin1_ToUnicode(){
244     UErrorCode status = U_ZERO_ERROR;
245     UPerfFunction* pf = new WinANSIToUnicodePerfFunction("iso-8859-1",(char*)latin1_encSource, LENGTHOF(latin1_encSource), status);
246     if(U_FAILURE(status)){
247         return NULL;
248     }
249     return pf;
250 }
251 
252 //##################
253 
TestICU_Latin8_FromUnicode()254 UPerfFunction* ConverterPerformanceTest::TestICU_Latin8_FromUnicode(){
255     UErrorCode status = U_ZERO_ERROR;
256     ICUFromUnicodePerfFunction* pf = new ICUFromUnicodePerfFunction("iso-8859-8",latin8_uniSource, LENGTHOF(latin8_uniSource), status);
257     if(U_FAILURE(status)){
258         return NULL;
259     }
260     return pf;
261 }
262 
TestICU_Latin8_ToUnicode()263 UPerfFunction*  ConverterPerformanceTest::TestICU_Latin8_ToUnicode(){
264     UErrorCode status = U_ZERO_ERROR;
265     UPerfFunction* pf = new ICUToUnicodePerfFunction("iso-8859-8",(char*)latin8_encSource, LENGTHOF(latin8_encSource), status);
266     if(U_FAILURE(status)){
267         return NULL;
268     }
269     return pf;
270 }
271 
272 
TestWinIML2_Latin8_FromUnicode()273 UPerfFunction* ConverterPerformanceTest::TestWinIML2_Latin8_FromUnicode(){
274     UErrorCode status = U_ZERO_ERROR;
275     UPerfFunction* pf = new WinIMultiLanguage2FromUnicodePerfFunction("iso-8859-8",latin8_uniSource, LENGTHOF(latin8_uniSource), status);
276     if(U_FAILURE(status)){
277         return NULL;
278     }
279     return pf;
280 }
281 
TestWinIML2_Latin8_ToUnicode()282 UPerfFunction*  ConverterPerformanceTest::TestWinIML2_Latin8_ToUnicode(){
283     UErrorCode status = U_ZERO_ERROR;
284     UPerfFunction* pf = new WinIMultiLanguage2ToUnicodePerfFunction("iso-8859-8",(char*)latin8_encSource, LENGTHOF(latin8_encSource), status);
285     if(U_FAILURE(status)){
286         return NULL;
287     }
288     return pf;
289 }
TestWinANSI_Latin8_FromUnicode()290 UPerfFunction* ConverterPerformanceTest::TestWinANSI_Latin8_FromUnicode(){
291     UErrorCode status = U_ZERO_ERROR;
292     UPerfFunction* pf = new WinANSIFromUnicodePerfFunction("iso-8859-8",latin8_uniSource, LENGTHOF(latin8_uniSource), status);
293     if(U_FAILURE(status)){
294         return NULL;
295     }
296     return pf;
297 }
298 
TestWinANSI_Latin8_ToUnicode()299 UPerfFunction*  ConverterPerformanceTest::TestWinANSI_Latin8_ToUnicode(){
300     UErrorCode status = U_ZERO_ERROR;
301     UPerfFunction* pf = new WinANSIToUnicodePerfFunction("iso-8859-8",(char*)latin8_encSource, LENGTHOF(latin8_encSource), status);
302     if(U_FAILURE(status)){
303         return NULL;
304     }
305     return pf;
306 }
307 
308 //#################
309 
310 
TestICU_EBCDIC_Arabic_FromUnicode()311 UPerfFunction* ConverterPerformanceTest::TestICU_EBCDIC_Arabic_FromUnicode(){
312     UErrorCode status = U_ZERO_ERROR;
313     ICUFromUnicodePerfFunction* pf = new ICUFromUnicodePerfFunction("x-EBCDIC-Arabic",ebcdic_arabic_uniSource, LENGTHOF(ebcdic_arabic_uniSource), status);
314     if(U_FAILURE(status)){
315         return NULL;
316     }
317     return pf;
318 }
319 
TestICU_EBCDIC_Arabic_ToUnicode()320 UPerfFunction*  ConverterPerformanceTest::TestICU_EBCDIC_Arabic_ToUnicode(){
321     UErrorCode status = U_ZERO_ERROR;
322     UPerfFunction* pf = new ICUToUnicodePerfFunction("x-EBCDIC-Arabic",(char*)ebcdic_arabic_encSource, LENGTHOF(ebcdic_arabic_encSource), status);
323     if(U_FAILURE(status)){
324         return NULL;
325     }
326     return pf;
327 }
328 
329 
TestWinIML2_EBCDIC_Arabic_FromUnicode()330 UPerfFunction* ConverterPerformanceTest::TestWinIML2_EBCDIC_Arabic_FromUnicode(){
331     UErrorCode status = U_ZERO_ERROR;
332     UPerfFunction* pf = new WinIMultiLanguage2FromUnicodePerfFunction("x-EBCDIC-Arabic",ebcdic_arabic_uniSource, LENGTHOF(ebcdic_arabic_uniSource), status);
333     if(U_FAILURE(status)){
334         return NULL;
335     }
336     return pf;
337 }
338 
TestWinIML2_EBCDIC_Arabic_ToUnicode()339 UPerfFunction*  ConverterPerformanceTest::TestWinIML2_EBCDIC_Arabic_ToUnicode(){
340     UErrorCode status = U_ZERO_ERROR;
341     UPerfFunction* pf = new WinIMultiLanguage2ToUnicodePerfFunction("x-EBCDIC-Arabic",(char*)ebcdic_arabic_encSource, LENGTHOF(ebcdic_arabic_encSource), status);
342     if(U_FAILURE(status)){
343         return NULL;
344     }
345     return pf;
346 }
347 
TestWinANSI_EBCDIC_Arabic_FromUnicode()348 UPerfFunction* ConverterPerformanceTest::TestWinANSI_EBCDIC_Arabic_FromUnicode(){
349     UErrorCode status = U_ZERO_ERROR;
350     UPerfFunction* pf = new WinANSIFromUnicodePerfFunction("x-EBCDIC-Arabic",ebcdic_arabic_uniSource, LENGTHOF(ebcdic_arabic_uniSource), status);
351     if(U_FAILURE(status)){
352         return NULL;
353     }
354     return pf;
355 }
356 
TestWinANSI_EBCDIC_Arabic_ToUnicode()357 UPerfFunction*  ConverterPerformanceTest::TestWinANSI_EBCDIC_Arabic_ToUnicode(){
358     UErrorCode status = U_ZERO_ERROR;
359     UPerfFunction* pf = new WinANSIToUnicodePerfFunction("x-EBCDIC-Arabic",(char*)ebcdic_arabic_encSource, LENGTHOF(ebcdic_arabic_encSource), status);
360     if(U_FAILURE(status)){
361         return NULL;
362     }
363     return pf;
364 }
365 //#################
366 
367 
TestICU_SJIS_FromUnicode()368 UPerfFunction* ConverterPerformanceTest::TestICU_SJIS_FromUnicode(){
369     UErrorCode status = U_ZERO_ERROR;
370     ICUFromUnicodePerfFunction* pf = new ICUFromUnicodePerfFunction("sjis",sjis_uniSource, LENGTHOF(sjis_uniSource), status);
371     if(U_FAILURE(status)){
372         return NULL;
373     }
374     return pf;
375 }
376 
TestICU_SJIS_ToUnicode()377 UPerfFunction*  ConverterPerformanceTest::TestICU_SJIS_ToUnicode(){
378     UErrorCode status = U_ZERO_ERROR;
379     UPerfFunction* pf = new ICUToUnicodePerfFunction("sjis",(char*)sjis_encSource, LENGTHOF(sjis_encSource), status);
380     if(U_FAILURE(status)){
381         return NULL;
382     }
383     return pf;
384 }
385 
386 
TestWinIML2_SJIS_FromUnicode()387 UPerfFunction* ConverterPerformanceTest::TestWinIML2_SJIS_FromUnicode(){
388     UErrorCode status = U_ZERO_ERROR;
389     UPerfFunction* pf = new WinIMultiLanguage2FromUnicodePerfFunction("sjis",sjis_uniSource, LENGTHOF(sjis_uniSource), status);
390     if(U_FAILURE(status)){
391         return NULL;
392     }
393     return pf;
394 }
395 
TestWinIML2_SJIS_ToUnicode()396 UPerfFunction*  ConverterPerformanceTest::TestWinIML2_SJIS_ToUnicode(){
397     UErrorCode status = U_ZERO_ERROR;
398     UPerfFunction* pf = new WinIMultiLanguage2ToUnicodePerfFunction("sjis",(char*)sjis_encSource, LENGTHOF(sjis_encSource), status);
399     if(U_FAILURE(status)){
400         return NULL;
401     }
402     return pf;
403 }
404 
TestWinANSI_SJIS_FromUnicode()405 UPerfFunction* ConverterPerformanceTest::TestWinANSI_SJIS_FromUnicode(){
406     UErrorCode status = U_ZERO_ERROR;
407     UPerfFunction* pf = new WinANSIFromUnicodePerfFunction("sjis",sjis_uniSource, LENGTHOF(sjis_uniSource), status);
408     if(U_FAILURE(status)){
409         return NULL;
410     }
411     return pf;
412 }
413 
TestWinANSI_SJIS_ToUnicode()414 UPerfFunction*  ConverterPerformanceTest::TestWinANSI_SJIS_ToUnicode(){
415     UErrorCode status = U_ZERO_ERROR;
416     UPerfFunction* pf = new WinANSIToUnicodePerfFunction("sjis",(char*)sjis_encSource, LENGTHOF(sjis_encSource), status);
417     if(U_FAILURE(status)){
418         return NULL;
419     }
420     return pf;
421 }
422 
423 
424 //#################
425 
426 
TestICU_EUCJP_FromUnicode()427 UPerfFunction* ConverterPerformanceTest::TestICU_EUCJP_FromUnicode(){
428     UErrorCode status = U_ZERO_ERROR;
429     ICUFromUnicodePerfFunction* pf = new ICUFromUnicodePerfFunction("euc-jp",eucjp_uniSource, LENGTHOF(eucjp_uniSource), status);
430     if(U_FAILURE(status)){
431         return NULL;
432     }
433     return pf;
434 }
435 
TestICU_EUCJP_ToUnicode()436 UPerfFunction*  ConverterPerformanceTest::TestICU_EUCJP_ToUnicode(){
437     UErrorCode status = U_ZERO_ERROR;
438     UPerfFunction* pf = new ICUToUnicodePerfFunction("euc-jp",(char*)eucjp_encSource, LENGTHOF(eucjp_encSource), status);
439     if(U_FAILURE(status)){
440         return NULL;
441     }
442     return pf;
443 }
444 
445 
TestWinIML2_EUCJP_FromUnicode()446 UPerfFunction* ConverterPerformanceTest::TestWinIML2_EUCJP_FromUnicode(){
447     UErrorCode status = U_ZERO_ERROR;
448     UPerfFunction* pf = new WinIMultiLanguage2FromUnicodePerfFunction("euc-jp",eucjp_uniSource, LENGTHOF(eucjp_uniSource), status);
449     if(U_FAILURE(status)){
450         return NULL;
451     }
452     return pf;
453 }
454 
TestWinIML2_EUCJP_ToUnicode()455 UPerfFunction*  ConverterPerformanceTest::TestWinIML2_EUCJP_ToUnicode(){
456     UErrorCode status = U_ZERO_ERROR;
457     UPerfFunction* pf = new WinIMultiLanguage2ToUnicodePerfFunction("euc-jp",(char*)eucjp_encSource, LENGTHOF(eucjp_encSource), status);
458     if(U_FAILURE(status)){
459         return NULL;
460     }
461     return pf;
462 }
463 
TestWinANSI_EUCJP_FromUnicode()464 UPerfFunction* ConverterPerformanceTest::TestWinANSI_EUCJP_FromUnicode(){
465     UErrorCode status = U_ZERO_ERROR;
466     UPerfFunction* pf = new WinANSIFromUnicodePerfFunction("euc-jp",eucjp_uniSource, LENGTHOF(eucjp_uniSource), status);
467     if(U_FAILURE(status)){
468         return NULL;
469     }
470     return pf;
471 }
472 
TestWinANSI_EUCJP_ToUnicode()473 UPerfFunction*  ConverterPerformanceTest::TestWinANSI_EUCJP_ToUnicode(){
474     UErrorCode status = U_ZERO_ERROR;
475     UPerfFunction* pf = new WinANSIToUnicodePerfFunction("euc-jp",(char*)eucjp_encSource, LENGTHOF(eucjp_encSource), status);
476     if(U_FAILURE(status)){
477         return NULL;
478     }
479     return pf;
480 }
481 
482 
483 //#################
484 
485 
TestICU_GB2312_FromUnicode()486 UPerfFunction* ConverterPerformanceTest::TestICU_GB2312_FromUnicode(){
487     UErrorCode status = U_ZERO_ERROR;
488     ICUFromUnicodePerfFunction* pf = new ICUFromUnicodePerfFunction("gb2312",gb2312_uniSource, LENGTHOF(gb2312_uniSource), status);
489     if(U_FAILURE(status)){
490         return NULL;
491     }
492     return pf;
493 }
494 
TestICU_GB2312_ToUnicode()495 UPerfFunction*  ConverterPerformanceTest::TestICU_GB2312_ToUnicode(){
496     UErrorCode status = U_ZERO_ERROR;
497     UPerfFunction* pf = new ICUToUnicodePerfFunction("gb2312",(char*)gb2312_encSource, LENGTHOF(gb2312_encSource), status);
498     if(U_FAILURE(status)){
499         return NULL;
500     }
501     return pf;
502 }
503 
504 
TestWinIML2_GB2312_FromUnicode()505 UPerfFunction* ConverterPerformanceTest::TestWinIML2_GB2312_FromUnicode(){
506     UErrorCode status = U_ZERO_ERROR;
507     UPerfFunction* pf = new WinIMultiLanguage2FromUnicodePerfFunction("gb2312",gb2312_uniSource, LENGTHOF(gb2312_uniSource), status);
508     if(U_FAILURE(status)){
509         return NULL;
510     }
511     return pf;
512 }
513 
TestWinIML2_GB2312_ToUnicode()514 UPerfFunction*  ConverterPerformanceTest::TestWinIML2_GB2312_ToUnicode(){
515     UErrorCode status = U_ZERO_ERROR;
516     UPerfFunction* pf = new WinIMultiLanguage2ToUnicodePerfFunction("gb2312",(char*)gb2312_encSource, LENGTHOF(gb2312_encSource), status);
517     if(U_FAILURE(status)){
518         return NULL;
519     }
520     return pf;
521 }
522 
TestWinANSI_GB2312_FromUnicode()523 UPerfFunction* ConverterPerformanceTest::TestWinANSI_GB2312_FromUnicode(){
524     UErrorCode status = U_ZERO_ERROR;
525     UPerfFunction* pf = new WinANSIFromUnicodePerfFunction("gb2312",gb2312_uniSource, LENGTHOF(gb2312_uniSource), status);
526     if(U_FAILURE(status)){
527         return NULL;
528     }
529     return pf;
530 }
531 
TestWinANSI_GB2312_ToUnicode()532 UPerfFunction*  ConverterPerformanceTest::TestWinANSI_GB2312_ToUnicode(){
533     UErrorCode status = U_ZERO_ERROR;
534     UPerfFunction* pf = new WinANSIToUnicodePerfFunction("gb2312",(char*)gb2312_encSource, LENGTHOF(gb2312_encSource), status);
535     if(U_FAILURE(status)){
536         return NULL;
537     }
538     return pf;
539 }
540 
541 //#################
542 
543 
TestICU_ISO2022KR_FromUnicode()544 UPerfFunction* ConverterPerformanceTest::TestICU_ISO2022KR_FromUnicode(){
545     UErrorCode status = U_ZERO_ERROR;
546     ICUFromUnicodePerfFunction* pf = new ICUFromUnicodePerfFunction("iso-2022-kr",iso2022kr_uniSource, LENGTHOF(iso2022kr_uniSource), status);
547     if(U_FAILURE(status)){
548         return NULL;
549     }
550     return pf;
551 }
552 
TestICU_ISO2022KR_ToUnicode()553 UPerfFunction*  ConverterPerformanceTest::TestICU_ISO2022KR_ToUnicode(){
554     UErrorCode status = U_ZERO_ERROR;
555     UPerfFunction* pf = new ICUToUnicodePerfFunction("iso-2022-kr",(char*)iso2022kr_encSource, LENGTHOF(iso2022kr_encSource), status);
556     if(U_FAILURE(status)){
557         return NULL;
558     }
559     return pf;
560 }
561 
562 
TestWinIML2_ISO2022KR_FromUnicode()563 UPerfFunction* ConverterPerformanceTest::TestWinIML2_ISO2022KR_FromUnicode(){
564     UErrorCode status = U_ZERO_ERROR;
565     UPerfFunction* pf = new WinIMultiLanguage2FromUnicodePerfFunction("iso-2022-kr",iso2022kr_uniSource, LENGTHOF(iso2022kr_uniSource), status);
566     if(U_FAILURE(status)){
567         return NULL;
568     }
569     return pf;
570 }
571 
TestWinIML2_ISO2022KR_ToUnicode()572 UPerfFunction*  ConverterPerformanceTest::TestWinIML2_ISO2022KR_ToUnicode(){
573     UErrorCode status = U_ZERO_ERROR;
574     UPerfFunction* pf = new WinIMultiLanguage2ToUnicodePerfFunction("iso-2022-kr",(char*)iso2022kr_encSource, LENGTHOF(iso2022kr_encSource), status);
575     if(U_FAILURE(status)){
576         return NULL;
577     }
578     return pf;
579 }
580 
TestWinANSI_ISO2022KR_FromUnicode()581 UPerfFunction* ConverterPerformanceTest::TestWinANSI_ISO2022KR_FromUnicode(){
582     UErrorCode status = U_ZERO_ERROR;
583     UPerfFunction* pf = new WinANSIFromUnicodePerfFunction("iso-2022-kr",iso2022kr_uniSource, LENGTHOF(iso2022kr_uniSource), status);
584     if(U_FAILURE(status)){
585         return NULL;
586     }
587     return pf;
588 }
589 
TestWinANSI_ISO2022KR_ToUnicode()590 UPerfFunction*  ConverterPerformanceTest::TestWinANSI_ISO2022KR_ToUnicode(){
591     UErrorCode status = U_ZERO_ERROR;
592     UPerfFunction* pf = new WinANSIToUnicodePerfFunction("iso-2022-kr",(char*)iso2022kr_encSource, LENGTHOF(iso2022kr_encSource), status);
593     if(U_FAILURE(status)){
594         return NULL;
595     }
596     return pf;
597 }
598 //#################
599 
600 
TestICU_ISO2022JP_FromUnicode()601 UPerfFunction* ConverterPerformanceTest::TestICU_ISO2022JP_FromUnicode(){
602     UErrorCode status = U_ZERO_ERROR;
603     ICUFromUnicodePerfFunction* pf = new ICUFromUnicodePerfFunction("iso-2022-jp",iso2022jp_uniSource, LENGTHOF(iso2022jp_uniSource), status);
604     if(U_FAILURE(status)){
605         return NULL;
606     }
607     return pf;
608 }
609 
TestICU_ISO2022JP_ToUnicode()610 UPerfFunction*  ConverterPerformanceTest::TestICU_ISO2022JP_ToUnicode(){
611     UErrorCode status = U_ZERO_ERROR;
612     UPerfFunction* pf = new ICUToUnicodePerfFunction("iso-2022-jp",(char*)iso2022jp_encSource, LENGTHOF(iso2022jp_encSource), status);
613     if(U_FAILURE(status)){
614         return NULL;
615     }
616     return pf;
617 }
618 
619 
TestWinIML2_ISO2022JP_FromUnicode()620 UPerfFunction* ConverterPerformanceTest::TestWinIML2_ISO2022JP_FromUnicode(){
621     UErrorCode status = U_ZERO_ERROR;
622     UPerfFunction* pf = new WinIMultiLanguage2FromUnicodePerfFunction("iso-2022-jp",iso2022jp_uniSource, LENGTHOF(iso2022jp_uniSource), status);
623     if(U_FAILURE(status)){
624         return NULL;
625     }
626     return pf;
627 }
628 
TestWinIML2_ISO2022JP_ToUnicode()629 UPerfFunction*  ConverterPerformanceTest::TestWinIML2_ISO2022JP_ToUnicode(){
630     UErrorCode status = U_ZERO_ERROR;
631     UPerfFunction* pf = new WinIMultiLanguage2ToUnicodePerfFunction("iso-2022-jp",(char*)iso2022jp_encSource, LENGTHOF(iso2022jp_encSource), status);
632     if(U_FAILURE(status)){
633         return NULL;
634     }
635     return pf;
636 }
637 
TestWinANSI_ISO2022JP_FromUnicode()638 UPerfFunction* ConverterPerformanceTest::TestWinANSI_ISO2022JP_FromUnicode(){
639     UErrorCode status = U_ZERO_ERROR;
640     UPerfFunction* pf = new WinANSIFromUnicodePerfFunction("iso-2022-jp",iso2022jp_uniSource, LENGTHOF(iso2022jp_uniSource), status);
641     if(U_FAILURE(status)){
642         return NULL;
643     }
644     return pf;
645 }
646 
TestWinANSI_ISO2022JP_ToUnicode()647 UPerfFunction*  ConverterPerformanceTest::TestWinANSI_ISO2022JP_ToUnicode(){
648     UErrorCode status = U_ZERO_ERROR;
649     UPerfFunction* pf = new WinANSIToUnicodePerfFunction("iso-2022-jp",(char*)iso2022jp_encSource, LENGTHOF(iso2022jp_encSource), status);
650     if(U_FAILURE(status)){
651         return NULL;
652     }
653     return pf;
654 }