1 //
2 //********************************************************************
3 // Copyright (C) 2002-2003, International Business Machines
4 // Corporation and others. All Rights Reserved.
5 //********************************************************************
6 //
7 // File converttest.cpp
8 //
9
10 #include "threadtest.h"
11 #include "unicode/utypes.h"
12 #include "unicode/ucnv.h"
13 #include "unicode/uclean.h"
14 #include "stdio.h"
15
16 U_CAPI UBool U_EXPORT2 ucnv_cleanup();
17
18 class ConvertThreadTest: public AbstractThreadTest {
19 public:
20 ConvertThreadTest();
21 virtual ~ConvertThreadTest();
22 virtual void check();
23 virtual void runOnce();
24
25 private:
26 UConverter *fCnv;
27 };
28
29
ConvertThreadTest()30 ConvertThreadTest::ConvertThreadTest() {
31 UErrorCode err = U_ZERO_ERROR;
32
33 fCnv = ucnv_open("gb18030", &err);
34 if (U_FAILURE(err)) {
35 fprintf(stderr, "ConvertTest - could not ucnv_open(\"gb18030\")\n");
36 fCnv = NULL;
37 }
38 };
39
40
~ConvertThreadTest()41 ConvertThreadTest::~ConvertThreadTest() {
42 ucnv_close(fCnv);
43 fCnv = 0;
44 }
45
runOnce()46 void ConvertThreadTest::runOnce() {
47 UErrorCode err = U_ZERO_ERROR;
48 UConverter *cnv1;
49 UConverter *cnv2;
50 char buf[U_CNV_SAFECLONE_BUFFERSIZE];
51 int32_t bufSize = U_CNV_SAFECLONE_BUFFERSIZE;
52
53 cnv1 = ucnv_open("shift_jis", &err);
54 if (U_FAILURE(err)) {
55 fprintf(stderr, "ucnv_open(\"shift_jis\") failed.\n");
56 }
57
58 cnv2 = ucnv_safeClone(fCnv, // The source converter, common to all threads.
59 buf,
60 &bufSize,
61 &err);
62 if (U_FAILURE(err)) {
63 fprintf(stderr, "ucnv_safeClone() failed.\n");
64 }
65 ucnv_close(cnv1);
66 ucnv_close(cnv2);
67 ucnv_flushCache();
68 }
69
check()70 void ConvertThreadTest::check() {
71 UErrorCode err = U_ZERO_ERROR;
72
73 if (fCnv) {ucnv_close(fCnv);}
74 //if (ucnv_cleanup () == FALSE) {
75 // fprintf(stderr, "ucnv_cleanup() failed - cache was not empty.\n");
76 //}
77 fCnv = ucnv_open("gb18030", &err);
78 if (U_FAILURE(err)) {
79 fprintf(stderr, "ConvertTest::check() - could not redo ucnv_open(\"gb18030\")\n");
80 fCnv = NULL;
81 }
82 }
83
84
createConvertTest()85 AbstractThreadTest *createConvertTest() {
86 return new ConvertThreadTest();
87 }
88
89