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

Side by Side Diff: source/test/perf/normperf/dtfmtrtperf.h

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/perf/normperf/NormPerf_r.pl ('k') | source/test/perf/normperf/dtfmtrtperf.cpp » ('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 **********************************************************************
3 * Copyright (c) 2010-2011,International Business Machines
4 * Corporation and others. All Rights Reserved.
5 **********************************************************************
6 **********************************************************************
7 */
8
9 #ifndef _DTFMTRTPERF_H
10 #define _DTFMTRTPERF_H
11
12 #include "unicode/utypes.h"
13 #include "unicode/uperf.h"
14 #include "unicode/timezone.h"
15 #include "unicode/simpletz.h"
16 #include "unicode/calendar.h"
17 #include "unicode/strenum.h"
18 #include "unicode/smpdtfmt.h"
19 #include "unicode/uchar.h"
20 #include "unicode/basictz.h"
21 #include "cstring.h"
22
23 #include "unicode/uperf.h"
24 #include "unicode/unistr.h"
25 #include "unicode/datefmt.h"
26 #include "unicode/calendar.h"
27 #include "unicode/uclean.h"
28 #include "unicode/brkiter.h"
29 #include "util.h"
30
31 static const char* PATTERNS[] = {"z", "zzzz", "Z", "ZZZZ", "v", "vvvv", "V", "VV VV"};
32 static const int NUM_PATTERNS = sizeof(PATTERNS)/sizeof(const char*);
33
34 #include <iostream>
35 #include <stdlib.h>
36 #include <fstream>
37 #include <string>
38 using namespace std;
39
40 // Stubs for Windows API functions when building on UNIXes.
41 //
42 #if U_PLATFORM_USES_ONLY_WIN32_API
43 // do nothing
44 #else
45 #define _UNICODE
46 typedef int DWORD;
47 inline int FoldStringW(DWORD dwMapFlags, const UChar* lpSrcStr,int cchSrc, UChar * lpDestStr,int cchDest);
48 #endif
49
50 class DateTimeRoundTripFunction : public UPerfFunction
51 {
52 private:
53 int nLocales;
54 public:
55
56 DateTimeRoundTripFunction()
57 {
58 nLocales = 0;
59 }
60
61 DateTimeRoundTripFunction(int locs)
62 {
63 nLocales = locs;
64 }
65
66 virtual void call(UErrorCode* status)
67 {
68 *status = U_ZERO_ERROR;
69
70 SimpleTimeZone unknownZone(-31415, (UnicodeString)"Etc/Unknown");
71 int32_t badDstOffset = -1234;
72 int32_t badZoneOffset = -2345;
73
74 int32_t testDateData[][3] = {
75 {2007, 1, 15},
76 {2007, 6, 15},
77 {1990, 1, 15},
78 {1990, 6, 15},
79 {1960, 1, 15},
80 {1960, 6, 15},
81 };
82
83 Calendar *cal = Calendar::createInstance(*status);
84 if (U_FAILURE(*status)) {
85 //dataerrln("Calendar::createInstance failed: %s", u_errorName(*stat us));
86 return;
87 }
88
89 // Set up rule equivalency test range
90 UDate low, high;
91 cal->set(1900, UCAL_JANUARY, 1);
92 low = cal->getTime(*status);
93 cal->set(2040, UCAL_JANUARY, 1);
94 high = cal->getTime(*status);
95 if (U_FAILURE(*status)) {
96 //errln("getTime failed");
97 return;
98 }
99
100 // Set up test dates
101 UDate DATES[(sizeof(testDateData)/sizeof(int32_t))/3];
102 const int32_t nDates = (sizeof(testDateData)/sizeof(int32_t))/3;
103 cal->clear();
104 for (int32_t i = 0; i < nDates; i++) {
105 cal->set(testDateData[i][0], testDateData[i][1], testDateData[i][2]) ;
106 DATES[i] = cal->getTime(*status);
107 if (U_FAILURE(*status)) {
108 //errln("getTime failed");
109 return;
110 }
111 }
112
113 // Set up test locales
114 const Locale testLocales[] = {
115 Locale("en"),
116 Locale("en_US"),
117 Locale("en_AU"),
118 Locale("de_DE"),
119 Locale("fr"),
120 Locale("ja_JP"),
121 Locale("ko"),
122 Locale("pt"),
123 Locale("th_TH"),
124 Locale("zh_Hans"),
125
126 Locale("it"),
127
128 Locale("en"),
129 Locale("en_US"),
130 Locale("en_AU"),
131 Locale("de_DE"),
132 Locale("fr"),
133 Locale("ja_JP"),
134 Locale("ko"),
135 Locale("pt"),
136 Locale("th_TH"),
137 Locale("zh_Hans"),
138 };
139
140 const Locale *LOCALES;
141 LOCALES = testLocales;
142
143 StringEnumeration *tzids = TimeZone::createEnumeration();
144 if (U_FAILURE(*status)) {
145 //errln("tzids->count failed");
146 return;
147 }
148
149 // Run the roundtrip test
150 for (int32_t locidx = 0; locidx < nLocales; locidx++) {
151 for (int32_t patidx = 0; patidx < NUM_PATTERNS; patidx++) {
152 SimpleDateFormat *sdf = new SimpleDateFormat((UnicodeString)PATT ERNS[patidx], LOCALES[locidx], *status);
153 if (U_FAILURE(*status)) {
154 //errcheckln(*status, (UnicodeString)"new SimpleDateFormat f ailed for pattern " +
155 // PATTERNS[patidx] + " for locale " + LOCALES[locidx].ge tName() + " - " + u_errorName(*status));
156 *status = U_ZERO_ERROR;
157 continue;
158 }
159
160 tzids->reset(*status);
161 const UnicodeString *tzid;
162 while ((tzid = tzids->snext(*status))) {
163 TimeZone *tz = TimeZone::createTimeZone(*tzid);
164
165 for (int32_t datidx = 0; datidx < nDates; datidx++) {
166 UnicodeString tzstr;
167 FieldPosition fpos(0);
168
169 // Format
170 sdf->setTimeZone(*tz);
171 sdf->format(DATES[datidx], tzstr, fpos);
172
173 // Before parse, set unknown zone to SimpleDateFormat in stance
174 // just for making sure that it does not depends on the time zone
175 // originally set.
176 sdf->setTimeZone(unknownZone);
177
178 // Parse
179 ParsePosition pos(0);
180 Calendar *outcal = Calendar::createInstance(unknownZone, *status);
181 if (U_FAILURE(*status)) {
182 //errln("Failed to create an instance of calendar fo r receiving parse result.");
183 *status = U_ZERO_ERROR;
184 continue;
185 }
186 outcal->set(UCAL_DST_OFFSET, badDstOffset);
187 outcal->set(UCAL_ZONE_OFFSET, badZoneOffset);
188 sdf->parse(tzstr, *outcal, pos);
189
190 // clean loop
191 delete outcal;
192
193 }
194 delete tz;
195 // break time zone loop
196 break;
197
198 }
199 delete sdf;
200 }
201 }
202 delete cal;
203 delete tzids;
204
205 }
206
207 virtual long getOperationsPerIteration()
208 {
209 return NUM_PATTERNS * nLocales * 6;
210 }
211 };
212
213
214 class DateTimeRoundTripPerfTest : public UPerfTest
215 {
216 private:
217
218 public:
219
220 DateTimeRoundTripPerfTest(int32_t argc, const char* argv[], UErrorCode& status);
221 ~DateTimeRoundTripPerfTest();
222 virtual UPerfFunction* runIndexedTest(int32_t index, UBool exec,const ch ar* &name, char* par);
223
224 UPerfFunction* RoundTripLocale1();
225 UPerfFunction* RoundTripLocale10();
226 UPerfFunction* RoundTripLocale11();
227 UPerfFunction* RoundTripLocale21();
228 };
229
230
231 #endif // DateTimeRoundTripPerfTest
OLDNEW
« no previous file with comments | « source/test/perf/normperf/NormPerf_r.pl ('k') | source/test/perf/normperf/dtfmtrtperf.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698