]>
Commit | Line | Data |
---|---|---|
46f4442e A |
1 | |
2 | /******************************************************************** | |
3 | * COPYRIGHT: | |
729e4ab9 | 4 | * Copyright (c) 1997-2010, International Business Machines Corporation and |
46f4442e A |
5 | * others. All Rights Reserved. |
6 | ********************************************************************/ | |
7 | ||
8 | #include "unicode/utypes.h" | |
9 | ||
10 | #if !UCONFIG_NO_FORMATTING | |
11 | ||
12 | ||
13 | //TODO: define it in compiler flag | |
14 | //#define DTIFMTTS_DEBUG 1 | |
15 | ||
16 | ||
46f4442e | 17 | #ifdef DTIFMTTS_DEBUG |
729e4ab9 | 18 | #include <iostream> |
46f4442e A |
19 | #endif |
20 | ||
21 | ||
22 | #include "cstring.h" | |
23 | #include "dtifmtts.h" | |
24 | #include "unicode/gregocal.h" | |
25 | #include "unicode/dtintrv.h" | |
26 | #include "unicode/dtitvinf.h" | |
27 | #include "unicode/dtitvfmt.h" | |
28 | ||
29 | ||
30 | ||
31 | #ifdef DTIFMTTS_DEBUG | |
32 | //#define PRINTMESG(msg) { std::cout << "(" << __FILE__ << ":" << __LINE__ << ") " << msg << "\n"; } | |
33 | #define PRINTMESG(msg) { std::cout << msg; } | |
34 | #endif | |
35 | ||
36 | #define ARRAY_SIZE(array) (sizeof array / sizeof array[0]) | |
37 | ||
38 | #include <stdio.h> | |
39 | ||
40 | ||
41 | void DateIntervalFormatTest::runIndexedTest( int32_t index, UBool exec, const char* &name, char* /*par*/ ) { | |
42 | if (exec) logln("TestSuite DateIntervalFormat"); | |
43 | switch (index) { | |
44 | TESTCASE(0, testAPI); | |
45 | TESTCASE(1, testFormat); | |
46 | TESTCASE(2, testFormatUserDII); | |
47 | TESTCASE(3, testStress); | |
48 | default: name = ""; break; | |
49 | } | |
50 | } | |
51 | ||
52 | /** | |
53 | * Test various generic API methods of DateIntervalFormat for API coverage. | |
54 | */ | |
55 | void DateIntervalFormatTest::testAPI() { | |
56 | ||
57 | /* ====== Test create interval instance with default locale and skeleton | |
58 | */ | |
59 | UErrorCode status = U_ZERO_ERROR; | |
60 | logln("Testing DateIntervalFormat create instance with default locale and skeleton"); | |
61 | ||
62 | DateIntervalFormat* dtitvfmt = DateIntervalFormat::createInstance(UDAT_YEAR_MONTH_DAY, status); | |
63 | if(U_FAILURE(status)) { | |
64 | dataerrln("ERROR: Could not create DateIntervalFormat (skeleton + default locale) - exitting"); | |
65 | return; | |
66 | } else { | |
67 | delete dtitvfmt; | |
68 | } | |
69 | ||
70 | ||
71 | /* ====== Test create interval instance with given locale and skeleton | |
72 | */ | |
73 | status = U_ZERO_ERROR; | |
74 | logln("Testing DateIntervalFormat create instance with given locale and skeleton"); | |
75 | ||
76 | dtitvfmt = DateIntervalFormat::createInstance(UDAT_YEAR_MONTH_DAY, Locale::getJapanese(), status); | |
77 | if(U_FAILURE(status)) { | |
78 | dataerrln("ERROR: Could not create DateIntervalFormat (skeleton + locale) - exitting"); | |
79 | return; | |
80 | } else { | |
81 | delete dtitvfmt; | |
82 | } | |
83 | ||
84 | ||
85 | /* ====== Test create interval instance with dateIntervalInfo and skeleton | |
86 | */ | |
87 | status = U_ZERO_ERROR; | |
88 | logln("Testing DateIntervalFormat create instance with dateIntervalInfo and skeleton"); | |
89 | ||
90 | DateIntervalInfo* dtitvinf = new DateIntervalInfo(Locale::getSimplifiedChinese(), status); | |
91 | ||
92 | dtitvfmt = DateIntervalFormat::createInstance("EEEdMMMyhms", *dtitvinf, status); | |
93 | delete dtitvinf; | |
94 | ||
95 | if(U_FAILURE(status)) { | |
96 | dataerrln("ERROR: Could not create DateIntervalFormat (skeleton + DateIntervalInfo + default locale) - exitting"); | |
97 | return; | |
98 | } else { | |
99 | delete dtitvfmt; | |
100 | } | |
101 | ||
102 | ||
103 | /* ====== Test create interval instance with dateIntervalInfo and skeleton | |
104 | */ | |
105 | status = U_ZERO_ERROR; | |
106 | logln("Testing DateIntervalFormat create instance with dateIntervalInfo and skeleton"); | |
107 | ||
108 | dtitvinf = new DateIntervalInfo(Locale::getSimplifiedChinese(), status); | |
109 | ||
110 | dtitvfmt = DateIntervalFormat::createInstance("EEEdMMMyhms", Locale::getSimplifiedChinese(), *dtitvinf, status); | |
111 | delete dtitvinf; | |
112 | if(U_FAILURE(status)) { | |
113 | dataerrln("ERROR: Could not create DateIntervalFormat (skeleton + DateIntervalInfo + locale) - exitting"); | |
114 | return; | |
115 | } | |
116 | // not deleted, test clone | |
117 | ||
118 | ||
119 | // ====== Test clone() | |
120 | status = U_ZERO_ERROR; | |
121 | logln("Testing DateIntervalFormat clone"); | |
122 | ||
123 | DateIntervalFormat* another = (DateIntervalFormat*)dtitvfmt->clone(); | |
124 | if ( (*another) != (*dtitvfmt) ) { | |
125 | dataerrln("ERROR: clone failed"); | |
126 | } | |
127 | ||
729e4ab9 | 128 | |
46f4442e A |
129 | // ====== Test getDateIntervalInfo, setDateIntervalInfo, adoptDateIntervalInfo |
130 | status = U_ZERO_ERROR; | |
131 | logln("Testing DateIntervalFormat getDateIntervalInfo"); | |
132 | const DateIntervalInfo* inf = another->getDateIntervalInfo(); | |
133 | dtitvfmt->setDateIntervalInfo(*inf, status); | |
134 | const DateIntervalInfo* anotherInf = dtitvfmt->getDateIntervalInfo(); | |
135 | if ( (*inf) != (*anotherInf) || U_FAILURE(status) ) { | |
136 | dataerrln("ERROR: getDateIntervalInfo/setDateIntervalInfo failed"); | |
137 | } | |
138 | ||
139 | /* | |
140 | status = U_ZERO_ERROR; | |
141 | DateIntervalInfo* nonConstInf = inf->clone(); | |
142 | dtitvfmt->adoptDateIntervalInfo(nonConstInf, status); | |
143 | anotherInf = dtitvfmt->getDateIntervalInfo(); | |
144 | if ( (*inf) != (*anotherInf) || U_FAILURE(status) ) { | |
145 | dataerrln("ERROR: adoptDateIntervalInfo failed"); | |
146 | } | |
147 | */ | |
148 | ||
149 | // ====== Test getDateFormat, setDateFormat, adoptDateFormat | |
150 | ||
151 | status = U_ZERO_ERROR; | |
152 | logln("Testing DateIntervalFormat getDateFormat"); | |
46f4442e | 153 | /* |
729e4ab9 | 154 | const DateFormat* fmt = another->getDateFormat(); |
46f4442e A |
155 | dtitvfmt->setDateFormat(*fmt, status); |
156 | const DateFormat* anotherFmt = dtitvfmt->getDateFormat(); | |
157 | if ( (*fmt) != (*anotherFmt) || U_FAILURE(status) ) { | |
158 | dataerrln("ERROR: getDateFormat/setDateFormat failed"); | |
159 | } | |
160 | ||
161 | status = U_ZERO_ERROR; | |
162 | DateFormat* nonConstFmt = (DateFormat*)fmt->clone(); | |
163 | dtitvfmt->adoptDateFormat(nonConstFmt, status); | |
164 | anotherFmt = dtitvfmt->getDateFormat(); | |
165 | if ( (*fmt) != (*anotherFmt) || U_FAILURE(status) ) { | |
166 | dataerrln("ERROR: adoptDateFormat failed"); | |
167 | } | |
729e4ab9 | 168 | delete fmt; |
46f4442e A |
169 | */ |
170 | ||
171 | ||
172 | // ======= Test getStaticClassID() | |
173 | ||
174 | logln("Testing getStaticClassID()"); | |
175 | ||
176 | ||
177 | if(dtitvfmt->getDynamicClassID() != DateIntervalFormat::getStaticClassID()) { | |
178 | errln("ERROR: getDynamicClassID() didn't return the expected value"); | |
179 | } | |
180 | ||
181 | delete another; | |
182 | ||
183 | // ====== test constructor/copy constructor and assignment | |
184 | /* they are protected, no test | |
185 | logln("Testing DateIntervalFormat constructor and assigment operator"); | |
186 | status = U_ZERO_ERROR; | |
187 | ||
188 | DateFormat* constFmt = (constFmt*)dtitvfmt->getDateFormat()->clone(); | |
189 | inf = dtitvfmt->getDateIntervalInfo()->clone(); | |
190 | ||
191 | ||
192 | DateIntervalFormat* dtifmt = new DateIntervalFormat(fmt, inf, status); | |
193 | if(U_FAILURE(status)) { | |
194 | dataerrln("ERROR: Could not create DateIntervalFormat (default) - exitting"); | |
195 | return; | |
196 | } | |
197 | ||
198 | DateIntervalFormat* dtifmt2 = new(dtifmt); | |
199 | if ( (*dtifmt) != (*dtifmt2) ) { | |
200 | dataerrln("ERROR: Could not create DateIntervalFormat (default) - exitting"); | |
201 | return; | |
202 | } | |
203 | ||
204 | DateIntervalFormat dtifmt3 = (*dtifmt); | |
205 | if ( (*dtifmt) != dtifmt3 ) { | |
206 | dataerrln("ERROR: Could not create DateIntervalFormat (default) - exitting"); | |
207 | return; | |
208 | } | |
209 | ||
210 | delete dtifmt2; | |
211 | delete dtifmt3; | |
212 | delete dtifmt; | |
213 | */ | |
214 | ||
215 | ||
216 | //===== test format and parse ================== | |
217 | Formattable formattable; | |
218 | formattable.setInt64(10); | |
219 | UnicodeString res; | |
220 | FieldPosition pos = 0; | |
221 | status = U_ZERO_ERROR; | |
222 | dtitvfmt->format(formattable, res, pos, status); | |
223 | if ( status != U_ILLEGAL_ARGUMENT_ERROR ) { | |
224 | dataerrln("ERROR: format non-date-interval object should set U_ILLEGAL_ARGUMENT_ERROR - exitting"); | |
225 | return; | |
226 | } | |
227 | ||
228 | DateInterval* dtitv = new DateInterval(3600*24*365, 3600*24*366); | |
229 | formattable.adoptObject(dtitv); | |
230 | res.remove(); | |
231 | pos = 0; | |
232 | status = U_ZERO_ERROR; | |
233 | dtitvfmt->format(formattable, res, pos, status); | |
234 | if ( U_FAILURE(status) ) { | |
235 | dataerrln("ERROR: format date interval failed - exitting"); | |
236 | return; | |
237 | } | |
238 | ||
239 | const DateFormat* dfmt = dtitvfmt->getDateFormat(); | |
240 | Calendar* fromCal = dfmt->getCalendar()->clone(); | |
241 | Calendar* toCal = dfmt->getCalendar()->clone(); | |
242 | res.remove(); | |
243 | pos = 0; | |
244 | status = U_ZERO_ERROR; | |
245 | dtitvfmt->format(*fromCal, *toCal, res, pos, status); | |
246 | if ( U_FAILURE(status) ) { | |
247 | dataerrln("ERROR: format date interval failed - exitting"); | |
248 | return; | |
249 | } | |
250 | delete fromCal; | |
251 | delete toCal; | |
252 | ||
253 | ||
254 | Formattable fmttable; | |
255 | status = U_ZERO_ERROR; | |
256 | // TODO: why do I need cast? | |
257 | ((Format*)dtitvfmt)->parseObject(res, fmttable, status); | |
258 | if ( status != U_INVALID_FORMAT_ERROR ) { | |
259 | dataerrln("ERROR: parse should set U_INVALID_FORMAT_ERROR - exitting"); | |
260 | return; | |
261 | } | |
262 | ||
263 | delete dtitvfmt; | |
264 | ||
46f4442e A |
265 | //====== test format in testFormat() |
266 | ||
729e4ab9 A |
267 | //====== test DateInterval class (better coverage) |
268 | DateInterval dtitv1(3600*24*365, 3600*24*366); | |
269 | DateInterval dtitv2(dtitv1); | |
270 | ||
271 | if (!(dtitv1 == dtitv2)) { | |
272 | errln("ERROR: Copy constructor failed for DateInterval."); | |
273 | } | |
274 | ||
275 | DateInterval dtitv3(3600*365, 3600*366); | |
276 | dtitv3 = dtitv1; | |
277 | if (!(dtitv3 == dtitv1)) { | |
278 | errln("ERROR: Equal operator failed for DateInterval."); | |
279 | } | |
280 | ||
281 | DateInterval *dtitv4 = dtitv1.clone(); | |
282 | if (*dtitv4 != dtitv1) { | |
283 | errln("ERROR: Equal operator failed for DateInterval."); | |
284 | } | |
285 | delete dtitv4; | |
46f4442e A |
286 | } |
287 | ||
288 | ||
289 | /** | |
290 | * Test format | |
291 | */ | |
292 | void DateIntervalFormatTest::testFormat() { | |
293 | // first item is date pattern | |
294 | // followed by a group of locale/from_data/to_data/skeleton/interval_data | |
295 | const char* DATA[] = { | |
296 | "yyyy MM dd HH:mm:ss", | |
729e4ab9 A |
297 | // test root |
298 | "root", "2007 11 10 10:10:10", "2007 12 10 10:10:10", "yM", "2007-11 \\u2013 12", | |
299 | ||
300 | // test 'H' and 'h', using availableFormat in fallback | |
301 | "en", "2007 11 10 10:10:10", "2007 11 10 15:10:10", "Hms", "10:10:10 \\u2013 15:10:10", | |
302 | "en", "2007 11 10 10:10:10", "2007 11 10 15:10:10", "hms", "10:10:10 AM \\u2013 3:10:10 PM", | |
303 | ||
46f4442e A |
304 | "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "MMMM", "October 2007 \\u2013 October 2008", |
305 | "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "MMM", "Oct 2007 \\u2013 Oct 2008", | |
306 | // test skeleton with both date and time | |
307 | "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMMMyhm", "Nov 10, 2007 10:10 AM \\u2013 Nov 20, 2007 10:10 AM", | |
308 | ||
309 | "en", "2007 11 10 10:10:10", "2007 11 10 11:10:10", "dMMMyhm", "Nov 10, 2007 10:10\\u201311:10 AM", | |
310 | ||
311 | "en", "2007 11 10 10:10:10", "2007 11 10 11:10:10", "hms", "10:10:10 AM \\u2013 11:10:10 AM", | |
729e4ab9 A |
312 | "en", "2007 11 10 10:10:10", "2007 11 10 11:10:10", "Hms", "10:10:10 \\u2013 11:10:10", |
313 | "en", "2007 11 10 20:10:10", "2007 11 10 21:10:10", "Hms", "20:10:10 \\u2013 21:10:10", | |
46f4442e A |
314 | |
315 | "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EEEEdMMMMy", "Wednesday, October 10, 2007 \\u2013 Friday, October 10, 2008", | |
316 | ||
317 | "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "dMMMMy", "October 10, 2007 \\u2013 October 10, 2008", | |
318 | ||
319 | "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "dMMMM", "October 10, 2007 \\u2013 October 10, 2008", | |
320 | ||
321 | "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "MMMMy", "October 2007 \\u2013 October 2008", | |
322 | ||
323 | "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EEEEdMMMM", "Wednesday, October 10, 2007 \\u2013 Friday, October 10, 2008", | |
324 | ||
325 | "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EdMMMy", "Wed, Oct 10, 2007 \\u2013 Fri, Oct 10, 2008", | |
326 | ||
327 | "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "dMMMy", "Oct 10, 2007 \\u2013 Oct 10, 2008", | |
328 | ||
329 | "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "dMMM", "Oct 10, 2007 \\u2013 Oct 10, 2008", | |
330 | ||
331 | "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "MMMy", "Oct 2007 \\u2013 Oct 2008", | |
332 | ||
333 | "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EdMMM", "Wed, Oct 10, 2007 \\u2013 Fri, Oct 10, 2008", | |
334 | ||
335 | "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EdMy", "Wed, 10/10/07 \\u2013 Fri, 10/10/08", | |
336 | ||
337 | "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "dMy", "10/10/07 \\u2013 10/10/08", | |
338 | ||
339 | "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "dM", "10/10/07 \\u2013 10/10/08", | |
340 | ||
341 | "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "My", "10/07 \\u2013 10/08", | |
342 | ||
343 | "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EdM", "Wed, 10/10/07 \\u2013 Fri, 10/10/08", | |
344 | ||
345 | "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "d", "10/10/07 \\u2013 10/10/08", | |
346 | ||
347 | "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "Ed", "10 Wed \\u2013 10 Fri", | |
348 | ||
349 | "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "y", "2007\\u20132008", | |
350 | ||
351 | "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "M", "10/07 \\u2013 10/08", | |
352 | ||
353 | ||
354 | ||
355 | "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "hm", "10/10/2007 10:10 AM \\u2013 10/10/2008 10:10 AM", | |
729e4ab9 A |
356 | "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "Hm", "10/10/2007 10:10 \\u2013 10/10/2008 10:10", |
357 | "en", "2007 10 10 20:10:10", "2008 10 10 20:10:10", "Hm", "10/10/2007 20:10 \\u2013 10/10/2008 20:10", | |
46f4442e A |
358 | |
359 | "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "hmv", "10/10/2007 10:10 AM PT \\u2013 10/10/2008 10:10 AM PT", | |
360 | ||
361 | "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "hmz", "10/10/2007 10:10 AM PDT \\u2013 10/10/2008 10:10 AM PDT", | |
362 | ||
729e4ab9 | 363 | "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "h", "10/10/2007 10 AM \\u2013 10/10/2008 10 AM", |
46f4442e | 364 | |
729e4ab9 | 365 | "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "hv", "10/10/2007 10 AM PT \\u2013 10/10/2008 10 AM PT", |
46f4442e | 366 | |
729e4ab9 | 367 | "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "hz", "10/10/2007 10 AM PDT \\u2013 10/10/2008 10 AM PDT", |
46f4442e A |
368 | |
369 | "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EEddMMyyyy", "Wed, 10/10/07 \\u2013 Fri, 10/10/08", | |
370 | ||
371 | "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EddMMy", "Wed, 10/10/07 \\u2013 Fri, 10/10/08", | |
372 | ||
373 | "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "hhmm", "10/10/2007 10:10 AM \\u2013 10/10/2008 10:10 AM", | |
374 | ||
375 | "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "hhmmzz", "10/10/2007 10:10 AM PDT \\u2013 10/10/2008 10:10 AM PDT", | |
376 | ||
377 | "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "hms", "10/10/2007 10:10:10 AM \\u2013 10/10/2008 10:10:10 AM", | |
378 | ||
379 | "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "dMMMMMy", "O 10, 2007 \\u2013 O 10, 2008", | |
380 | ||
381 | "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EEEEEdM", "W, 10/10/07 \\u2013 F, 10/10/08", | |
382 | ||
383 | "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EEEEdMMMMy", "Wednesday, October 10 \\u2013 Saturday, November 10, 2007", | |
384 | ||
385 | "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dMMMMy", "October 10 \\u2013 November 10, 2007", | |
386 | ||
387 | "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dMMMM", "October 10 \\u2013 November 10", | |
388 | ||
389 | "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "MMMMy", "October\\u2013November 2007", | |
390 | ||
391 | "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EEEEdMMMM", "Wednesday, October 10 \\u2013 Saturday, November 10", | |
392 | ||
393 | "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EdMMMy", "Wed, Oct 10 \\u2013 Sat, Nov 10, 2007", | |
394 | ||
395 | "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dMMMy", "Oct 10 \\u2013 Nov 10, 2007", | |
396 | ||
397 | "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dMMM", "Oct 10 \\u2013 Nov 10", | |
398 | ||
399 | "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "MMMy", "Oct\\u2013Nov 2007", | |
400 | ||
401 | "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EdMMM", "Wed, Oct 10 \\u2013 Sat, Nov 10", | |
402 | ||
403 | "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EdMy", "Wed, 10/10/07 \\u2013 Sat, 11/10/07", | |
404 | ||
405 | "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dMy", "10/10/07 \\u2013 11/10/07", | |
406 | ||
407 | ||
408 | "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "My", "10/07 \\u2013 11/07", | |
409 | ||
410 | "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EdM", "Wed, 10/10 \\u2013 Sat, 11/10", | |
411 | ||
412 | "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "d", "10/10 \\u2013 11/10", | |
413 | ||
414 | "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "Ed", "10 Wed \\u2013 10 Sat", | |
415 | ||
416 | "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "y", "2007", | |
417 | ||
418 | "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "M", "10\\u201311", | |
419 | ||
420 | "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "MMM", "Oct\\u2013Nov", | |
421 | ||
422 | "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "MMMM", "October-November", | |
423 | ||
424 | "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "hm", "10/10/2007 10:10 AM \\u2013 11/10/2007 10:10 AM", | |
729e4ab9 A |
425 | "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "Hm", "10/10/2007 10:10 \\u2013 11/10/2007 10:10", |
426 | "en", "2007 10 10 20:10:10", "2007 11 10 20:10:10", "Hm", "10/10/2007 20:10 \\u2013 11/10/2007 20:10", | |
46f4442e A |
427 | |
428 | "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "hmv", "10/10/2007 10:10 AM PT \\u2013 11/10/2007 10:10 AM PT", | |
429 | ||
430 | "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "hmz", "10/10/2007 10:10 AM PDT \\u2013 11/10/2007 10:10 AM PST", | |
431 | ||
729e4ab9 | 432 | "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "h", "10/10/2007 10 AM \\u2013 11/10/2007 10 AM", |
46f4442e | 433 | |
729e4ab9 | 434 | "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "hv", "10/10/2007 10 AM PT \\u2013 11/10/2007 10 AM PT", |
46f4442e | 435 | |
729e4ab9 | 436 | "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "hz", "10/10/2007 10 AM PDT \\u2013 11/10/2007 10 AM PST", |
46f4442e A |
437 | |
438 | "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EEddMMyyyy", "Wed, 10/10/07 \\u2013 Sat, 11/10/07", | |
439 | ||
440 | "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EddMMy", "Wed, 10/10/07 \\u2013 Sat, 11/10/07", | |
441 | ||
442 | ||
443 | "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "hhmmzz", "10/10/2007 10:10 AM PDT \\u2013 11/10/2007 10:10 AM PST", | |
444 | ||
445 | "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "hms", "10/10/2007 10:10:10 AM \\u2013 11/10/2007 10:10:10 AM", | |
446 | ||
447 | "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dMMMMMy", "O 10 \\u2013 N 10, 2007", | |
448 | ||
449 | "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EEEEEdM", "W, 10/10 \\u2013 S, 11/10", | |
450 | ||
451 | "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EEEEdMMMMy", "Saturday, November 10 \\u2013 Tuesday, November 20, 2007", | |
452 | ||
453 | "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMMMMy", "November 10\\u201320, 2007", | |
454 | ||
455 | "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMMMM", "November 10\\u201320", | |
456 | ||
457 | ||
458 | "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EEEEdMMMM", "Saturday, November 10 \\u2013 Tuesday, November 20", | |
459 | ||
460 | "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EdMMMy", "Sat, Nov 10 \\u2013 Tue, Nov 20, 2007", | |
461 | ||
462 | "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMMMy", "Nov 10\\u201320, 2007", | |
463 | ||
464 | "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMMM", "Nov 10\\u201320", | |
465 | ||
466 | "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "MMMy", "Nov 2007", | |
467 | ||
468 | "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EdMMM", "Sat, Nov 10 \\u2013 Tue, Nov 20", | |
469 | ||
470 | "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EdMy", "Sat, 11/10/07 \\u2013 Tue, 11/20/07", | |
471 | ||
472 | "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMy", "11/10/07 \\u2013 11/20/07", | |
473 | ||
474 | "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dM", "11/10 \\u2013 11/20", | |
475 | ||
476 | "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "My", "11/2007", | |
477 | ||
478 | "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EdM", "Sat, 11/10 \\u2013 Tue, 11/20", | |
479 | ||
480 | "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "d", "10\\u201320", | |
481 | ||
482 | "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "Ed", "10 Sat \\u2013 20 Tue", | |
483 | ||
484 | "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "y", "2007", | |
485 | ||
486 | "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "M", "11", | |
487 | ||
488 | "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "MMM", "Nov", | |
489 | ||
490 | "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "MMMM", "November", | |
491 | ||
492 | "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "hm", "11/10/2007 10:10 AM \\u2013 11/20/2007 10:10 AM", | |
729e4ab9 A |
493 | "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "Hm", "11/10/2007 10:10 \\u2013 11/20/2007 10:10", |
494 | "en", "2007 11 10 20:10:10", "2007 11 20 20:10:10", "Hm", "11/10/2007 20:10 \\u2013 11/20/2007 20:10", | |
46f4442e A |
495 | |
496 | "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "hmv", "11/10/2007 10:10 AM PT \\u2013 11/20/2007 10:10 AM PT", | |
497 | ||
498 | "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "hmz", "11/10/2007 10:10 AM PST \\u2013 11/20/2007 10:10 AM PST", | |
499 | ||
729e4ab9 | 500 | "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "h", "11/10/2007 10 AM \\u2013 11/20/2007 10 AM", |
46f4442e | 501 | |
729e4ab9 | 502 | "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "hv", "11/10/2007 10 AM PT \\u2013 11/20/2007 10 AM PT", |
46f4442e | 503 | |
729e4ab9 | 504 | "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "hz", "11/10/2007 10 AM PST \\u2013 11/20/2007 10 AM PST", |
46f4442e A |
505 | |
506 | "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EEddMMyyyy", "Sat, 11/10/07 \\u2013 Tue, 11/20/07", | |
507 | ||
508 | "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EddMMy", "Sat, 11/10/07 \\u2013 Tue, 11/20/07", | |
509 | ||
510 | "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "hhmm", "11/10/2007 10:10 AM \\u2013 11/20/2007 10:10 AM", | |
511 | ||
512 | "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "hhmmzz", "11/10/2007 10:10 AM PST \\u2013 11/20/2007 10:10 AM PST", | |
513 | ||
514 | "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "hms", "11/10/2007 10:10:10 AM \\u2013 11/20/2007 10:10:10 AM", | |
729e4ab9 A |
515 | "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "Hms", "11/10/2007 10:10:10 \\u2013 11/20/2007 10:10:10", |
516 | "en", "2007 11 10 20:10:10", "2007 11 20 20:10:10", "Hms", "11/10/2007 20:10:10 \\u2013 11/20/2007 20:10:10", | |
46f4442e A |
517 | |
518 | "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMMMMMy", "N 10\\u201320, 2007", | |
519 | ||
520 | "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EEEEEdM", "S, 11/10 \\u2013 T, 11/20", | |
521 | ||
522 | "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EEEEdMMMMy", "Wednesday, January 10, 2007", | |
523 | ||
524 | "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "dMMMMy", "January 10, 2007", | |
525 | ||
526 | "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "dMMMM", "January 10", | |
527 | ||
528 | "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "MMMMy", "January 2007", | |
529 | ||
530 | "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EEEEdMMMM", "Wednesday, January 10", | |
531 | ||
532 | "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EdMMMy", "Wed, Jan 10, 2007", | |
533 | ||
534 | "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "dMMMy", "Jan 10, 2007", | |
535 | ||
536 | "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "dMMM", "Jan 10", | |
537 | ||
538 | "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "MMMy", "Jan 2007", | |
539 | ||
540 | "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EdMMM", "Wed, Jan 10", | |
541 | ||
542 | ||
543 | "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "dMy", "1/10/2007", | |
544 | ||
545 | "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "dM", "1/10", | |
546 | ||
547 | "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "My", "1/2007", | |
548 | ||
549 | "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EdM", "Wed, 1/10", | |
550 | ||
551 | "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "d", "10", | |
552 | ||
553 | "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "Ed", "10 Wed", | |
554 | ||
555 | "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "y", "2007", | |
556 | ||
557 | "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "M", "1", | |
558 | ||
559 | "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "MMM", "Jan", | |
560 | ||
561 | "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "MMMM", "January", | |
562 | ||
563 | "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hm", "10:00 AM \\u2013 2:10 PM", | |
729e4ab9 | 564 | "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "Hm", "10:00 \\u2013 14:10", |
46f4442e A |
565 | |
566 | "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hmv", "10:00 AM \\u2013 2:10 PM PT", | |
567 | ||
568 | "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hmz", "10:00 AM \\u2013 2:10 PM PST", | |
569 | ||
570 | "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "h", "10 AM \\u2013 2 PM", | |
729e4ab9 | 571 | "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "H", "10 \\u2013 14", |
46f4442e A |
572 | |
573 | ||
574 | "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hz", "10 AM \\u2013 2 PM PST", | |
575 | ||
576 | "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EEddMMyyyy", "Wed, 01/10/2007", | |
577 | ||
578 | "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EddMMy", "Wed, 01/10/2007", | |
579 | ||
580 | "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hhmm", "10:00 AM \\u2013 2:10 PM", | |
729e4ab9 | 581 | "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "HHmm", "10:00 \\u2013 14:10", |
46f4442e A |
582 | |
583 | "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hhmmzz", "10:00 AM \\u2013 2:10 PM PST", | |
584 | ||
585 | "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hms", "10:00:10 AM \\u2013 2:10:10 PM", | |
729e4ab9 | 586 | "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "Hms", "10:00:10 \\u2013 14:10:10", |
46f4442e A |
587 | |
588 | "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "dMMMMMy", "J 10, 2007", | |
589 | ||
590 | "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EEEEEdM", "W, 1/10", | |
591 | "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "dMMMMy", "January 10, 2007", | |
592 | ||
593 | "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "dMMMM", "January 10", | |
594 | ||
595 | "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "MMMMy", "January 2007", | |
596 | ||
597 | "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "EEEEdMMMM", "Wednesday, January 10", | |
598 | ||
599 | "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "EdMMMy", "Wed, Jan 10, 2007", | |
600 | ||
601 | "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "dMMMy", "Jan 10, 2007", | |
602 | ||
603 | "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "dMMM", "Jan 10", | |
604 | ||
605 | ||
606 | "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "EdMMM", "Wed, Jan 10", | |
607 | ||
608 | "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "EdMy", "Wed, 1/10/2007", | |
609 | ||
610 | "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "dMy", "1/10/2007", | |
611 | ||
612 | ||
613 | "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "My", "1/2007", | |
614 | ||
615 | "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "EdM", "Wed, 1/10", | |
616 | ||
617 | "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "d", "10", | |
618 | ||
619 | ||
620 | "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "y", "2007", | |
621 | ||
622 | "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "M", "1", | |
623 | ||
624 | ||
625 | ||
626 | "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hm", "10:00\\u201310:20 AM", | |
729e4ab9 | 627 | "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "Hm", "10:00 \\u2013 10:20", |
46f4442e A |
628 | |
629 | ||
630 | "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hmz", "10:00\\u201310:20 AM PST", | |
631 | ||
632 | ||
729e4ab9 | 633 | "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hv", "10 AM PT", |
46f4442e A |
634 | |
635 | ||
636 | ||
637 | "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "EddMMy", "Wed, 01/10/2007", | |
638 | ||
639 | "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hhmm", "10:00\\u201310:20 AM", | |
729e4ab9 | 640 | "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "HHmm", "10:00 \\u2013 10:20", |
46f4442e A |
641 | |
642 | "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hhmmzz", "10:00\\u201310:20 AM PST", | |
643 | ||
644 | ||
645 | "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "dMMMMMy", "J 10, 2007", | |
646 | ||
647 | ||
648 | "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "EEEEdMMMMy", "Wednesday, January 10, 2007", | |
649 | ||
650 | "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "dMMMMy", "January 10, 2007", | |
651 | ||
652 | ||
653 | "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "MMMMy", "January 2007", | |
654 | ||
655 | "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "EEEEdMMMM", "Wednesday, January 10", | |
656 | ||
657 | ||
658 | "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "dMMMy", "Jan 10, 2007", | |
659 | ||
660 | "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "dMMM", "Jan 10", | |
661 | ||
662 | ||
663 | "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "EdMMM", "Wed, Jan 10", | |
664 | ||
665 | "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "EdMy", "Wed, 1/10/2007", | |
666 | ||
667 | "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "dMy", "1/10/2007", | |
668 | ||
669 | ||
670 | "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "My", "1/2007", | |
671 | ||
672 | "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "EdM", "Wed, 1/10", | |
673 | ||
674 | "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "d", "10", | |
675 | ||
676 | ||
677 | "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "y", "2007", | |
678 | ||
679 | "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "M", "1", | |
680 | ||
681 | ||
682 | "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "MMMM", "January", | |
683 | ||
684 | "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hm", "10:10 AM", | |
729e4ab9 | 685 | "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "Hm", "10:10", |
46f4442e A |
686 | |
687 | ||
688 | "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hmz", "10:10 AM PST", | |
689 | ||
729e4ab9 | 690 | "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "h", "10 AM", |
46f4442e | 691 | |
729e4ab9 | 692 | "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hv", "10 AM PT", |
46f4442e A |
693 | |
694 | ||
695 | "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "EEddMMyyyy", "Wed, 01/10/2007", | |
696 | ||
697 | ||
698 | "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hhmm", "10:10 AM", | |
729e4ab9 | 699 | "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "HHmm", "10:10", |
46f4442e A |
700 | |
701 | "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hhmmzz", "10:10 AM PST", | |
702 | ||
703 | ||
704 | "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "dMMMMMy", "J 10, 2007", | |
705 | ||
706 | "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "EEEEEdM", "W, 1/10", | |
707 | ||
708 | "zh", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EEEEdMMMMy", "2007\\u5e7410\\u670810\\u65e5\\u661f\\u671f\\u4e09\\u81f32008\\u5e7410\\u670810\\u65e5\\u661f\\u671f\\u4e94", | |
709 | ||
710 | ||
711 | "zh", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dMMMMy", "2007\\u5e7410\\u670810\\u65e5\\u81f311\\u670810\\u65e5", | |
712 | ||
713 | ||
714 | "zh", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "MMMMy", "2007\\u5e7410\\u6708\\u81f311\\u6708", | |
715 | ||
716 | ||
729e4ab9 | 717 | "zh", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "hmv", "2007\\u5e7410\\u670810\\u65e5 \\u4e0a\\u534810:10 \\u7f8e\\u56fd (\\u6d1b\\u6749\\u77f6)\\u81f32007\\u5e7411\\u670810\\u65e5 \\u4e0a\\u534810:10 \\u7f8e\\u56fd (\\u6d1b\\u6749\\u77f6)", |
46f4442e A |
718 | |
719 | "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EEEEdMMMMy", "2007\\u5e7411\\u670810\\u65e5\\u661f\\u671f\\u516d\\u81f320\\u65e5\\u661f\\u671f\\u4e8c", | |
720 | ||
721 | ||
722 | "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMMMM", "11\\u670810\\u65e5\\u81f320\\u65e5", | |
723 | ||
724 | "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "MMMMy", "2007\\u5E7411\\u6708", // (fixed expected result per ticket:6626:) | |
725 | ||
726 | "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EEEEdMMMM", "11\\u670810\\u65e5\\u661f\\u671f\\u516d\\u81f320\\u65e5\\u661f\\u671f\\u4e8c", | |
727 | ||
728 | ||
729 | "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EdMy", "07-11-10\\u5468\\u516d\\u81f307-11-20\\u5468\\u4e8c", | |
730 | ||
731 | ||
732 | "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dM", "11-10\\u81f311-20", | |
733 | ||
734 | "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "My", "2007-11", | |
735 | ||
736 | "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EdM", "11-10\\u5468\\u516d\\u81f311-20\\u5468\\u4e8c", | |
737 | ||
738 | ||
739 | "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "y", "2007\\u5E74", // (fixed expected result per ticket:6626:) | |
740 | ||
729e4ab9 | 741 | "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "M", "11\\u6708", |
46f4442e A |
742 | |
743 | "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "MMM", "\\u5341\\u4E00\\u6708", // (fixed expected result per ticket:6626: and others) | |
744 | ||
745 | ||
729e4ab9 | 746 | "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "hmz", "2007\\u5e7411\\u670810\\u65e5 \\u4e0a\\u534810:10 \\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0800\\u81f32007\\u5e7411\\u670820\\u65e5 \\u4e0a\\u534810:10 \\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0800", |
46f4442e | 747 | |
729e4ab9 | 748 | "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "h", "2007\\u5e7411\\u670810\\u65e5 \\u4e0a\\u534810\\u65f6\\u81f32007\\u5e7411\\u670820\\u65e5 \\u4e0a\\u534810\\u65f6", |
46f4442e A |
749 | |
750 | "zh", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EEEEdMMMMy", "2007\\u5e741\\u670810\\u65e5\\u661f\\u671f\\u4e09", // (fixed expected result per ticket:6626:) | |
751 | ||
752 | "zh", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hm", "\\u4e0a\\u534810:00\\u81f3\\u4e0b\\u53482:10", | |
753 | ||
754 | ||
729e4ab9 | 755 | "zh", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hmz", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0800\\u4e0a\\u534810:00\\u81f3\\u4e0b\\u53482:10", |
46f4442e A |
756 | |
757 | "zh", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "h", "\\u4e0a\\u534810\\u81f3\\u4e0b\\u53482\\u65f6", | |
758 | ||
729e4ab9 | 759 | "zh", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hv", "\\u7f8e\\u56fd (\\u6d1b\\u6749\\u77f6)\\u4e0a\\u534810\\u81f3\\u4e0b\\u53482\\u65f6", |
46f4442e A |
760 | |
761 | "zh", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hm", "\\u4e0a\\u534810:00\\u81f310:20", | |
762 | ||
729e4ab9 | 763 | "zh", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hmv", "\\u7f8e\\u56fd (\\u6d1b\\u6749\\u77f6)\\u4e0a\\u534810:00\\u81f310:20", |
46f4442e | 764 | |
729e4ab9 | 765 | "zh", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hz", "\\u4e0a\\u534810\\u65f6 \\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0800", |
46f4442e A |
766 | |
767 | "zh", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hm", "\\u4e0a\\u534810:10", | |
768 | ||
729e4ab9 | 769 | "zh", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "h", "\\u4e0a\\u534810\\u65f6", |
46f4442e A |
770 | |
771 | "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EEEEdMMMy", "Mittwoch, 10. Okt 2007 - Freitag, 10. Okt 2008", | |
772 | ||
773 | ||
774 | "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "dMMM", "10. Okt 2007 - 10. Okt 2008", | |
775 | ||
776 | "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "MMMy", "Okt 2007 - Okt 2008", | |
777 | ||
778 | ||
779 | "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EdMy", "Mi., 10.10.07 - Fr., 10.10.08", | |
780 | ||
781 | "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "dMy", "10.10.07 - 10.10.08", | |
782 | ||
783 | ||
784 | "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "My", "10.07 - 10.08", | |
785 | ||
786 | "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EdM", "Mi., 10.10.07 - Fr., 10.10.08", | |
787 | ||
788 | ||
789 | "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "y", "2007-2008", | |
790 | ||
791 | "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "M", "10.07 - 10.08", | |
792 | ||
793 | ||
794 | "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "hm", "10.10.2007 10:10 vorm. - 10.10.2008 10:10 vorm.", | |
729e4ab9 | 795 | "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "Hm", "10.10.2007 10:10 - 10.10.2008 10:10", |
46f4442e A |
796 | |
797 | "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EEEEdMMMy", "Mittwoch, 10. Okt - Samstag, 10. Nov 2007", | |
798 | ||
799 | ||
800 | "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dMMM", "10. Okt - 10. Nov", | |
801 | ||
802 | "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "MMMy", "Okt-Nov 2007", | |
803 | ||
804 | "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EEEEdMMM", "Mittwoch, 10. Okt - Samstag, 10. Nov", | |
805 | ||
806 | ||
807 | "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dM", "10.10. - 10.11.", | |
808 | ||
809 | "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "My", "10.07 - 11.07", | |
810 | ||
811 | ||
812 | "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "d", "10.10. - 10.11.", | |
813 | ||
814 | "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "y", "2007", | |
815 | ||
816 | ||
817 | "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "MMM", "Okt-Nov", | |
818 | ||
819 | ||
820 | "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "hms", "10.10.2007 10:10:10 vorm. - 10.11.2007 10:10:10 vorm.", | |
729e4ab9 | 821 | "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "Hms", "10.10.2007 10:10:10 - 10.11.2007 10:10:10", |
46f4442e A |
822 | |
823 | "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EEEEdMMMy", "Samstag, 10. - Dienstag, 20. Nov 2007", | |
824 | ||
825 | "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMMMy", "10.-20. Nov 2007", | |
826 | ||
827 | ||
828 | "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "MMMy", "Nov 2007", | |
829 | ||
830 | "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EEEEdMMM", "Samstag, 10. - Dienstag, 20. Nov", | |
831 | ||
832 | "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EdMy", "Sa., 10.11.07 - Di., 20.11.07", | |
833 | ||
834 | ||
835 | "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dM", "10.11. - 20.11.", | |
836 | ||
729e4ab9 | 837 | "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "My", "11.2007", |
46f4442e A |
838 | |
839 | ||
840 | "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "d", "10.-20.", | |
841 | ||
842 | "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "y", "2007", | |
843 | ||
844 | ||
845 | "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "hmv", "10.11.2007 10:10 vorm. Vereinigte Staaten (Los Angeles) - 20.11.2007 10:10 vorm. Vereinigte Staaten (Los Angeles)", | |
846 | ||
847 | "de", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EEEEdMMMy", "Mittwoch, 10. Jan 2007", | |
848 | ||
849 | ||
850 | "de", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "dMMM", "10. Jan", | |
851 | ||
852 | "de", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "MMMy", "Jan 2007", | |
853 | ||
729e4ab9 | 854 | "de", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EEEEdMMM", "Mittwoch, 10. Jan", |
46f4442e A |
855 | |
856 | ||
729e4ab9 A |
857 | "de", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "h", "10 vorm. - 2 nachm.", |
858 | "de", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "H", "10-14 Uhr", | |
46f4442e | 859 | |
729e4ab9 | 860 | "de", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "EEEEdMMM", "Mittwoch, 10. Jan", |
46f4442e A |
861 | |
862 | ||
729e4ab9 | 863 | "de", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hmv", "10:00-10:20 vorm. Vereinigte Staaten (Los Angeles)", |
46f4442e | 864 | |
729e4ab9 | 865 | "de", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hmz", "10:00-10:20 vorm. GMT-08:00", |
46f4442e | 866 | |
729e4ab9 A |
867 | "de", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "h", "10 vorm.", |
868 | "de", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "H", "10 Uhr", | |
46f4442e A |
869 | |
870 | ||
729e4ab9 | 871 | "de", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hz", "10 vorm. GMT-08:00", |
46f4442e A |
872 | |
873 | "de", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "EEEEdMMMy", "Mittwoch, 10. Jan 2007", | |
874 | ||
875 | ||
876 | "de", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hmv", "10:10 vorm. Vereinigte Staaten (Los Angeles)", | |
877 | ||
878 | "de", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hmz", "10:10 vorm. GMT-08:00", | |
879 | ||
880 | ||
729e4ab9 A |
881 | "de", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hv", "10 vorm. Vereinigte Staaten (Los Angeles)", |
882 | ||
883 | "de", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hz", "10 vorm. GMT-08:00", | |
884 | ||
885 | // Thai (default calendar buddhist) | |
886 | ||
887 | "th", "2550 10 10 10:10:10", "2551 10 10 10:10:10", "EEEEdMMMy", "\\u0E27\\u0E31\\u0E19\\u0E1E\\u0E38\\u0E18 10 \\u0E15.\\u0E04. 2550 - \\u0E27\\u0E31\\u0E19\\u0E28\\u0E38\\u0E01\\u0E23\\u0E4C 10 \\u0E15.\\u0E04. 2551", | |
888 | ||
889 | ||
890 | "th", "2550 10 10 10:10:10", "2551 10 10 10:10:10", "dMMM", "10 \\u0E15.\\u0E04. 2550 - 10 \\u0E15.\\u0E04. 2551", | |
46f4442e | 891 | |
729e4ab9 A |
892 | "th", "2550 10 10 10:10:10", "2551 10 10 10:10:10", "MMMy", "\\u0E15.\\u0E04. 2550 - \\u0E15.\\u0E04. 2551", |
893 | ||
894 | ||
895 | "th", "2550 10 10 10:10:10", "2551 10 10 10:10:10", "EdMy", "\\u0E1E. 10/10/50 - \\u0E28. 10/10/51", | |
896 | ||
897 | "th", "2550 10 10 10:10:10", "2551 10 10 10:10:10", "dMy", "10/10/50 - 10/10/51", | |
898 | ||
899 | ||
900 | "th", "2550 10 10 10:10:10", "2551 10 10 10:10:10", "My", "10/50 - 10/51", | |
901 | ||
902 | "th", "2550 10 10 10:10:10", "2551 10 10 10:10:10", "EdM", "\\u0E1E. 10/10/50 - \\u0E28. 10/10/51", | |
903 | ||
904 | ||
905 | "th", "2550 10 10 10:10:10", "2551 10 10 10:10:10", "y", "2550-2551", | |
906 | ||
907 | "th", "2550 10 10 10:10:10", "2551 10 10 10:10:10", "M", "10/50 - 10/51", | |
908 | ||
909 | ||
910 | "th", "2550 10 10 10:10:10", "2550 11 10 10:10:10", "EEEEdMMMy", "\\u0E27\\u0E31\\u0E19\\u0E1E\\u0E38\\u0E18 10 \\u0E15.\\u0E04. - \\u0E27\\u0E31\\u0E19\\u0E40\\u0E2A\\u0E32\\u0E23\\u0E4C 10 \\u0E1E.\\u0E22. 2550", | |
911 | ||
912 | ||
913 | "th", "2550 10 10 10:10:10", "2550 11 10 10:10:10", "dMMM", "10 \\u0E15.\\u0E04. - 10 \\u0E1E.\\u0E22.", | |
914 | ||
915 | "th", "2550 10 10 10:10:10", "2550 11 10 10:10:10", "MMMy", "\\u0E15.\\u0E04.-\\u0E1E.\\u0E22. 2550", | |
916 | ||
917 | "th", "2550 10 10 10:10:10", "2550 11 10 10:10:10", "dM", "10/10 - 10/11", | |
918 | ||
919 | "th", "2550 10 10 10:10:10", "2550 11 10 10:10:10", "My", "10/50 - 11/50", | |
920 | ||
921 | ||
922 | "th", "2550 10 10 10:10:10", "2550 11 10 10:10:10", "d", "10/10 - 10/11", | |
923 | ||
924 | "th", "2550 10 10 10:10:10", "2550 11 10 10:10:10", "y", "2550", | |
925 | ||
926 | ||
927 | "th", "2550 10 10 10:10:10", "2550 11 10 10:10:10", "MMM", "\\u0E15.\\u0E04.-\\u0E1E.\\u0E22.", | |
928 | ||
46f4442e A |
929 | }; |
930 | expect(DATA, ARRAY_SIZE(DATA)); | |
931 | } | |
932 | ||
933 | ||
934 | void DateIntervalFormatTest::expect(const char** data, int32_t data_length) { | |
935 | int32_t i = 0; | |
936 | UErrorCode ec = U_ZERO_ERROR; | |
937 | UnicodeString str, str2; | |
938 | const char* pattern = data[0]; | |
939 | i++; | |
940 | ||
941 | #ifdef DTIFMTTS_DEBUG | |
942 | char result[1000]; | |
943 | char mesg[1000]; | |
944 | sprintf(mesg, "locale: %s\n", locName); | |
945 | PRINTMESG(mesg); | |
946 | #endif | |
947 | ||
948 | while (i<data_length) { | |
949 | const char* locName = data[i++]; | |
950 | Locale loc(locName); | |
951 | SimpleDateFormat ref(pattern, loc, ec); | |
729e4ab9 A |
952 | if (U_FAILURE(ec)) { |
953 | dataerrln("contruct SimpleDateFormat in expect failed: %s", u_errorName(ec)); | |
954 | return; | |
955 | } | |
46f4442e A |
956 | // 'f' |
957 | const char* datestr = data[i++]; | |
958 | const char* datestr_2 = data[i++]; | |
959 | #ifdef DTIFMTTS_DEBUG | |
960 | sprintf(mesg, "original date: %s - %s\n", datestr, datestr_2); | |
961 | PRINTMESG(mesg) | |
962 | #endif | |
963 | UDate date = ref.parse(ctou(datestr), ec); | |
964 | if (!assertSuccess("parse 1st data in expect", ec)) return; | |
965 | UDate date_2 = ref.parse(ctou(datestr_2), ec); | |
966 | if (!assertSuccess("parse 2nd data in expect", ec)) return; | |
967 | DateInterval dtitv(date, date_2); | |
968 | ||
969 | const UnicodeString& oneSkeleton = data[i++]; | |
970 | ||
971 | DateIntervalFormat* dtitvfmt = DateIntervalFormat::createInstance(oneSkeleton, loc, ec); | |
972 | if (!assertSuccess("createInstance(skeleton) in expect", ec)) return; | |
973 | FieldPosition pos=0; | |
974 | dtitvfmt->format(&dtitv, str.remove(), pos, ec); | |
975 | if (!assertSuccess("format in expect", ec)) return; | |
976 | assertEquals((UnicodeString)"\"" + locName + "\\" + oneSkeleton + "\\" + datestr + "\\" + datestr_2 + "\"", ctou(data[i++]), str); | |
977 | ||
978 | ||
979 | ||
980 | #ifdef DTIFMTTS_DEBUG | |
981 | str.extract(0, str.length(), result, "UTF-8"); | |
982 | sprintf(mesg, "interval date: %s\n", result); | |
983 | std::cout << "//"; | |
984 | PRINTMESG(mesg) | |
985 | std::cout << "\"" << locName << "\", " | |
986 | << "\"" << datestr << "\", " | |
987 | << "\"" << datestr_2 << "\", "; | |
988 | printUnicodeString(oneSkeleton); | |
989 | printUnicodeString(str); | |
990 | std::cout << "\n\n"; | |
991 | #endif | |
992 | delete dtitvfmt; | |
993 | } | |
994 | } | |
995 | ||
996 | ||
997 | /* | |
998 | * Test format using user defined DateIntervalInfo | |
999 | */ | |
1000 | void DateIntervalFormatTest::testFormatUserDII() { | |
1001 | // first item is date pattern | |
1002 | const char* DATA[] = { | |
1003 | "yyyy MM dd HH:mm:ss", | |
1004 | "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "Oct 10, 2007 --- Oct 10, 2008", | |
1005 | ||
1006 | "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "2007 Oct 10 - Nov 2007", | |
1007 | ||
1008 | "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "Nov 10, 2007 --- Nov 20, 2007", | |
1009 | ||
1010 | "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "Jan 10, 2007", | |
1011 | ||
1012 | "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "Jan 10, 2007", | |
1013 | ||
1014 | "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "Jan 10, 2007", | |
1015 | ||
1016 | "zh", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "2007\\u5e7410\\u670810\\u65e5 --- 2008\\u5e7410\\u670810\\u65e5", | |
1017 | ||
1018 | "zh", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "2007 10\\u6708 10 - 11\\u6708 2007", | |
1019 | ||
1020 | "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "2007\\u5e7411\\u670810\\u65e5 --- 2007\\u5e7411\\u670820\\u65e5", | |
1021 | ||
1022 | "zh", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "2007\\u5e741\\u670810\\u65e5", // (fixed expected result per ticket:6626:) | |
1023 | ||
1024 | "zh", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "2007\\u5e741\\u670810\\u65e5", // (fixed expected result per ticket:6626:) | |
1025 | ||
1026 | "zh", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "2007\\u5e741\\u670810\\u65e5", // (fixed expected result per ticket:6626:) | |
1027 | ||
1028 | "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "10. Okt 2007 --- 10. Okt 2008", | |
1029 | ||
1030 | ||
1031 | "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "10. Nov 2007 --- 20. Nov 2007", | |
1032 | ||
1033 | "de", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "10. Jan 2007", | |
1034 | ||
1035 | "de", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "10. Jan 2007", | |
1036 | ||
1037 | ||
1038 | "es", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "10 de oct de 2007 --- 10 de oct de 2008", | |
1039 | ||
1040 | "es", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "2007 oct 10 - nov 2007", | |
1041 | ||
1042 | "es", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "10 de nov de 2007 --- 20 de nov de 2007", | |
1043 | ||
1044 | "es", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "10 de ene de 2007", | |
1045 | ||
1046 | "es", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "10 de ene de 2007", | |
1047 | ||
1048 | "es", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "10 de ene de 2007", | |
1049 | }; | |
1050 | expectUserDII(DATA, ARRAY_SIZE(DATA)); | |
1051 | } | |
1052 | ||
1053 | ||
1054 | void DateIntervalFormatTest::expectUserDII(const char** data, | |
1055 | int32_t data_length) { | |
1056 | int32_t i = 0; | |
1057 | UnicodeString str; | |
1058 | UErrorCode ec = U_ZERO_ERROR; | |
1059 | const char* pattern = data[0]; | |
1060 | i++; | |
1061 | ||
1062 | while ( i < data_length ) { | |
1063 | const char* locName = data[i++]; | |
1064 | Locale loc(locName); | |
1065 | SimpleDateFormat ref(pattern, loc, ec); | |
729e4ab9 A |
1066 | if (U_FAILURE(ec)) { |
1067 | dataerrln("contruct SimpleDateFormat in expectUserDII failed: %s", u_errorName(ec)); | |
1068 | return; | |
1069 | } | |
46f4442e A |
1070 | const char* datestr = data[i++]; |
1071 | const char* datestr_2 = data[i++]; | |
1072 | UDate date = ref.parse(ctou(datestr), ec); | |
1073 | if (!assertSuccess("parse in expectUserDII", ec)) return; | |
1074 | UDate date_2 = ref.parse(ctou(datestr_2), ec); | |
1075 | if (!assertSuccess("parse in expectUserDII", ec)) return; | |
1076 | DateInterval dtitv(date, date_2); | |
1077 | ||
1078 | ec = U_ZERO_ERROR; | |
1079 | // test user created DateIntervalInfo | |
1080 | DateIntervalInfo* dtitvinf = new DateIntervalInfo(ec); | |
1081 | dtitvinf->setFallbackIntervalPattern("{0} --- {1}", ec); | |
1082 | dtitvinf->setIntervalPattern(UDAT_YEAR_ABBR_MONTH_DAY, UCAL_MONTH, "yyyy MMM d - MMM y",ec); | |
1083 | if (!assertSuccess("DateIntervalInfo::setIntervalPattern", ec)) return; | |
1084 | dtitvinf->setIntervalPattern(UDAT_YEAR_ABBR_MONTH_DAY, UCAL_HOUR_OF_DAY, "yyyy MMM d HH:mm - HH:mm", ec); | |
1085 | if (!assertSuccess("DateIntervalInfo::setIntervalPattern", ec)) return; | |
1086 | DateIntervalFormat* dtitvfmt = DateIntervalFormat::createInstance(UDAT_YEAR_ABBR_MONTH_DAY, loc, *dtitvinf, ec); | |
1087 | delete dtitvinf; | |
1088 | if (!assertSuccess("createInstance(skeleton,dtitvinf) in expectUserDII", ec)) return; | |
1089 | FieldPosition pos=0; | |
1090 | dtitvfmt->format(&dtitv, str.remove(), pos, ec); | |
1091 | if (!assertSuccess("format in expectUserDII", ec)) return; | |
1092 | assertEquals((UnicodeString)"\"" + locName + "\\" + datestr + "\\" + datestr_2 + "\"", ctou(data[i++]), str); | |
1093 | #ifdef DTIFMTTS_DEBUG | |
1094 | char result[1000]; | |
1095 | char mesg[1000]; | |
1096 | PRINTMESG("interval format using user defined DateIntervalInfo\n"); | |
1097 | str.extract(0, str.length(), result, "UTF-8"); | |
1098 | sprintf(mesg, "interval date: %s\n", result); | |
1099 | PRINTMESG(mesg); | |
1100 | #endif | |
1101 | delete dtitvfmt; | |
1102 | } | |
1103 | } | |
1104 | ||
1105 | ||
1106 | void DateIntervalFormatTest::testStress() { | |
1107 | if(quick){ | |
1108 | logln("Quick mode: Skipping test"); | |
1109 | return; | |
1110 | } | |
1111 | const char* DATA[] = { | |
1112 | "yyyy MM dd HH:mm:ss", | |
1113 | "2007 10 10 10:10:10", "2008 10 10 10:10:10", | |
1114 | "2007 10 10 10:10:10", "2007 11 10 10:10:10", | |
1115 | "2007 11 10 10:10:10", "2007 11 20 10:10:10", | |
1116 | "2007 01 10 10:00:10", "2007 01 10 14:10:10", | |
1117 | "2007 01 10 10:00:10", "2007 01 10 10:20:10", | |
1118 | "2007 01 10 10:10:10", "2007 01 10 10:10:20", | |
1119 | }; | |
1120 | ||
1121 | const char* testLocale[][3] = { | |
1122 | //{"th", "", ""}, | |
1123 | {"en", "", ""}, | |
1124 | {"zh", "", ""}, | |
1125 | {"de", "", ""}, | |
1126 | {"ar", "", ""}, | |
1127 | {"en", "GB", ""}, | |
1128 | {"fr", "", ""}, | |
1129 | {"it", "", ""}, | |
1130 | {"nl", "", ""}, | |
1131 | {"zh", "TW", ""}, | |
1132 | {"ja", "", ""}, | |
1133 | {"pt", "BR", ""}, | |
1134 | {"ru", "", ""}, | |
1135 | {"pl", "", ""}, | |
1136 | {"tr", "", ""}, | |
1137 | {"es", "", ""}, | |
1138 | {"ko", "", ""}, | |
1139 | {"sv", "", ""}, | |
1140 | {"fi", "", ""}, | |
1141 | {"da", "", ""}, | |
1142 | {"pt", "PT", ""}, | |
1143 | {"ro", "", ""}, | |
1144 | {"hu", "", ""}, | |
1145 | {"he", "", ""}, | |
1146 | {"in", "", ""}, | |
1147 | {"cs", "", ""}, | |
1148 | {"el", "", ""}, | |
1149 | {"no", "", ""}, | |
1150 | {"vi", "", ""}, | |
1151 | {"bg", "", ""}, | |
1152 | {"hr", "", ""}, | |
1153 | {"lt", "", ""}, | |
1154 | {"sk", "", ""}, | |
1155 | {"sl", "", ""}, | |
1156 | {"sr", "", ""}, | |
1157 | {"ca", "", ""}, | |
1158 | {"lv", "", ""}, | |
1159 | {"uk", "", ""}, | |
1160 | {"hi", "", ""}, | |
1161 | }; | |
1162 | ||
1163 | uint32_t localeIndex; | |
1164 | for ( localeIndex = 0; localeIndex < ARRAY_SIZE(testLocale); ++localeIndex ) { | |
1165 | char locName[32]; | |
1166 | uprv_strcpy(locName, testLocale[localeIndex][0]); | |
1167 | uprv_strcat(locName, testLocale[localeIndex][1]); | |
1168 | stress(DATA, ARRAY_SIZE(DATA), Locale(testLocale[localeIndex][0], testLocale[localeIndex][1], testLocale[localeIndex][2]), locName); | |
1169 | } | |
1170 | } | |
1171 | ||
1172 | ||
1173 | void DateIntervalFormatTest::stress(const char** data, int32_t data_length, | |
1174 | const Locale& loc, const char* locName) { | |
1175 | UnicodeString skeleton[] = { | |
1176 | "EEEEdMMMMy", | |
1177 | "dMMMMy", | |
1178 | "dMMMM", | |
1179 | "MMMMy", | |
1180 | "EEEEdMMMM", | |
1181 | "EdMMMy", | |
1182 | "dMMMy", | |
1183 | "dMMM", | |
1184 | "MMMy", | |
1185 | "EdMMM", | |
1186 | "EdMy", | |
1187 | "dMy", | |
1188 | "dM", | |
1189 | "My", | |
1190 | "EdM", | |
1191 | "d", | |
1192 | "Ed", | |
1193 | "y", | |
1194 | "M", | |
1195 | "MMM", | |
1196 | "MMMM", | |
1197 | "hm", | |
1198 | "hmv", | |
1199 | "hmz", | |
1200 | "h", | |
1201 | "hv", | |
1202 | "hz", | |
1203 | "EEddMMyyyy", // following could be normalized | |
1204 | "EddMMy", | |
1205 | "hhmm", | |
1206 | "hhmmzz", | |
1207 | "hms", // following could not be normalized | |
1208 | "dMMMMMy", | |
1209 | "EEEEEdM", | |
1210 | }; | |
1211 | ||
1212 | int32_t i = 0; | |
1213 | UErrorCode ec = U_ZERO_ERROR; | |
1214 | UnicodeString str, str2; | |
1215 | SimpleDateFormat ref(data[i++], loc, ec); | |
1216 | if (!assertSuccess("construct SimpleDateFormat", ec)) return; | |
1217 | ||
1218 | #ifdef DTIFMTTS_DEBUG | |
1219 | char result[1000]; | |
1220 | char mesg[1000]; | |
1221 | sprintf(mesg, "locale: %s\n", locName); | |
1222 | PRINTMESG(mesg); | |
1223 | #endif | |
1224 | ||
1225 | while (i<data_length) { | |
1226 | ||
1227 | // 'f' | |
1228 | const char* datestr = data[i++]; | |
1229 | const char* datestr_2 = data[i++]; | |
1230 | #ifdef DTIFMTTS_DEBUG | |
1231 | sprintf(mesg, "original date: %s - %s\n", datestr, datestr_2); | |
1232 | PRINTMESG(mesg) | |
1233 | #endif | |
1234 | UDate date = ref.parse(ctou(datestr), ec); | |
1235 | if (!assertSuccess("parse", ec)) return; | |
1236 | UDate date_2 = ref.parse(ctou(datestr_2), ec); | |
1237 | if (!assertSuccess("parse", ec)) return; | |
1238 | DateInterval dtitv(date, date_2); | |
1239 | ||
1240 | for ( uint32_t skeletonIndex = 0; | |
1241 | skeletonIndex < ARRAY_SIZE(skeleton); | |
1242 | ++skeletonIndex ) { | |
1243 | const UnicodeString& oneSkeleton = skeleton[skeletonIndex]; | |
1244 | DateIntervalFormat* dtitvfmt = DateIntervalFormat::createInstance(oneSkeleton, loc, ec); | |
1245 | if (!assertSuccess("createInstance(skeleton)", ec)) return; | |
1246 | /* | |
1247 | // reset the calendar to be Gregorian calendar for "th" | |
1248 | if ( uprv_strcmp(locName, "th") == 0 ) { | |
1249 | GregorianCalendar* gregCal = new GregorianCalendar(loc, ec); | |
1250 | if (!assertSuccess("GregorianCalendar()", ec)) return; | |
1251 | const DateFormat* dformat = dtitvfmt->getDateFormat(); | |
1252 | DateFormat* newOne = (DateFormat*)dformat->clone(); | |
1253 | newOne->adoptCalendar(gregCal); | |
1254 | //dtitvfmt->adoptDateFormat(newOne, ec); | |
1255 | dtitvfmt->setDateFormat(*newOne, ec); | |
1256 | delete newOne; | |
1257 | if (!assertSuccess("adoptDateFormat()", ec)) return; | |
1258 | } | |
1259 | */ | |
1260 | FieldPosition pos=0; | |
1261 | dtitvfmt->format(&dtitv, str.remove(), pos, ec); | |
1262 | if (!assertSuccess("format", ec)) return; | |
1263 | #ifdef DTIFMTTS_DEBUG | |
1264 | oneSkeleton.extract(0, oneSkeleton.length(), result, "UTF-8"); | |
1265 | sprintf(mesg, "interval by skeleton: %s\n", result); | |
1266 | PRINTMESG(mesg) | |
1267 | str.extract(0, str.length(), result, "UTF-8"); | |
1268 | sprintf(mesg, "interval date: %s\n", result); | |
1269 | PRINTMESG(mesg) | |
1270 | #endif | |
1271 | delete dtitvfmt; | |
1272 | } | |
1273 | ||
1274 | // test user created DateIntervalInfo | |
1275 | ec = U_ZERO_ERROR; | |
1276 | DateIntervalInfo* dtitvinf = new DateIntervalInfo(ec); | |
1277 | dtitvinf->setFallbackIntervalPattern("{0} --- {1}", ec); | |
1278 | dtitvinf->setIntervalPattern(UDAT_YEAR_ABBR_MONTH_DAY, UCAL_MONTH, "yyyy MMM d - MMM y",ec); | |
1279 | if (!assertSuccess("DateIntervalInfo::setIntervalPattern", ec)) return; | |
1280 | dtitvinf->setIntervalPattern(UDAT_YEAR_ABBR_MONTH_DAY, UCAL_HOUR_OF_DAY, "yyyy MMM d HH:mm - HH:mm", ec); | |
1281 | if (!assertSuccess("DateIntervalInfo::setIntervalPattern", ec)) return; | |
1282 | DateIntervalFormat* dtitvfmt = DateIntervalFormat::createInstance(UDAT_YEAR_ABBR_MONTH_DAY, loc, *dtitvinf, ec); | |
1283 | delete dtitvinf; | |
1284 | if (!assertSuccess("createInstance(skeleton,dtitvinf)", ec)) return; | |
1285 | FieldPosition pos=0; | |
1286 | dtitvfmt->format(&dtitv, str.remove(), pos, ec); | |
1287 | if ( uprv_strcmp(locName, "th") ) { | |
1288 | if (!assertSuccess("format", ec)) return; | |
1289 | #ifdef DTIFMTTS_DEBUG | |
1290 | PRINTMESG("interval format using user defined DateIntervalInfo\n"); | |
1291 | str.extract(0, str.length(), result, "UTF-8"); | |
1292 | sprintf(mesg, "interval date: %s\n", result); | |
1293 | PRINTMESG(mesg) | |
1294 | #endif | |
1295 | } else { | |
1296 | // for "th", the default calendar is Budhist, | |
1297 | // not Gregorian. | |
1298 | assertTrue("Default calendar for \"th\" is Budhist", ec == U_ILLEGAL_ARGUMENT_ERROR); | |
1299 | ec = U_ZERO_ERROR; | |
1300 | } | |
1301 | delete dtitvfmt; | |
1302 | } | |
1303 | } | |
1304 | ||
1305 | #endif /* #if !UCONFIG_NO_FORMATTING */ |