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