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
18int 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
32ConverterPerformanceTest::ConverterPerformanceTest(int32_t argc, const char* argv[], UErrorCode& status)
33: UPerfTest(argc,argv,status){
34
35}
36
37ConverterPerformanceTest::~ConverterPerformanceTest(){
38
39}
40
41UPerfFunction* 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
122UPerfFunction* 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
131UPerfFunction* 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
140UPerfFunction* 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
149UPerfFunction*  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
159UPerfFunction* 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
168UPerfFunction*  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
177UPerfFunction* 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
186UPerfFunction*  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
197UPerfFunction* 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
206UPerfFunction*  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
216UPerfFunction* 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
225UPerfFunction*  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
234UPerfFunction* 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
243UPerfFunction*  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
254UPerfFunction* 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
263UPerfFunction*  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
273UPerfFunction* 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
282UPerfFunction*  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}
290UPerfFunction* 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
299UPerfFunction*  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
311UPerfFunction* 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
320UPerfFunction*  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
330UPerfFunction* 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
339UPerfFunction*  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
348UPerfFunction* 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
357UPerfFunction*  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
368UPerfFunction* 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
377UPerfFunction*  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
387UPerfFunction* 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
396UPerfFunction*  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
405UPerfFunction* 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
414UPerfFunction*  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
427UPerfFunction* 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
436UPerfFunction*  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
446UPerfFunction* 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
455UPerfFunction*  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
464UPerfFunction* 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
473UPerfFunction*  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
486UPerfFunction* 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
495UPerfFunction*  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
505UPerfFunction* 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
514UPerfFunction*  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
523UPerfFunction* 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
532UPerfFunction*  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
544UPerfFunction* 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
553UPerfFunction*  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
563UPerfFunction* 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
572UPerfFunction*  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
581UPerfFunction* 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
590UPerfFunction*  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
601UPerfFunction* 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
610UPerfFunction*  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
620UPerfFunction* 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
629UPerfFunction*  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
638UPerfFunction* 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
647UPerfFunction*  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}