OLD | NEW |
(Empty) | |
| 1 |
| 2 /******************************************************************** |
| 3 * COPYRIGHT: |
| 4 * Copyright (c) 1997-2010, International Business Machines Corporation and |
| 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 |
| 17 #ifdef DTIFMTTS_DEBUG |
| 18 #include <iostream> |
| 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 ch
ar* &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 sk
eleton"); |
| 61 |
| 62 DateIntervalFormat* dtitvfmt = DateIntervalFormat::createInstance(UDAT_YEAR_
MONTH_DAY, status); |
| 63 if(U_FAILURE(status)) { |
| 64 dataerrln("ERROR: Could not create DateIntervalFormat (skeleton + defaul
t 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 skel
eton"); |
| 75 |
| 76 dtitvfmt = DateIntervalFormat::createInstance(UDAT_YEAR_MONTH_DAY, Locale::g
etJapanese(), 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::getSimplifiedChine
se(), status); |
| 91 |
| 92 dtitvfmt = DateIntervalFormat::createInstance("EEEdMMMyhms", *dtitvinf, stat
us); |
| 93 delete dtitvinf; |
| 94 |
| 95 if(U_FAILURE(status)) { |
| 96 dataerrln("ERROR: Could not create DateIntervalFormat (skeleton + DateIn
tervalInfo + 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::getSimp
lifiedChinese(), *dtitvinf, status); |
| 111 delete dtitvinf; |
| 112 if(U_FAILURE(status)) { |
| 113 dataerrln("ERROR: Could not create DateIntervalFormat (skeleton + DateIn
tervalInfo + 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 |
| 128 |
| 129 // ====== Test getDateIntervalInfo, setDateIntervalInfo, adoptDateIntervalIn
fo |
| 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"); |
| 153 /* |
| 154 const DateFormat* fmt = another->getDateFormat(); |
| 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 } |
| 168 delete fmt; |
| 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) - exitti
ng"); |
| 195 return; |
| 196 } |
| 197 |
| 198 DateIntervalFormat* dtifmt2 = new(dtifmt); |
| 199 if ( (*dtifmt) != (*dtifmt2) ) { |
| 200 dataerrln("ERROR: Could not create DateIntervalFormat (default) - exitti
ng"); |
| 201 return; |
| 202 } |
| 203 |
| 204 DateIntervalFormat dtifmt3 = (*dtifmt); |
| 205 if ( (*dtifmt) != dtifmt3 ) { |
| 206 dataerrln("ERROR: Could not create DateIntervalFormat (default) - exitti
ng"); |
| 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_A
RGUMENT_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 |
| 265 //====== test format in testFormat() |
| 266 |
| 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; |
| 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", |
| 297 // test root |
| 298 "root", "2007 11 10 10:10:10", "2007 12 10 10:10:10", "yM", "2007-11 \\u
2013 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 \\u
2013 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 |
| 304 "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "MMMM", "October 200
7 \\u2013 October 2008", |
| 305 "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "MMM", "Oct 2007 \\u
2013 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", |
| 312 "en", "2007 11 10 10:10:10", "2007 11 10 11:10:10", "Hms", "10:10:10 \\u
2013 11:10:10", |
| 313 "en", "2007 11 10 20:10:10", "2007 11 10 21:10:10", "Hms", "20:10:10 \\u
2013 21:10:10", |
| 314 |
| 315 "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EEEEdMMMMy", "Wedne
sday, 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 1
0, 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 20
07 \\u2013 October 2008", |
| 322 |
| 323 "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EEEEdMMMM", "Wednes
day, 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, 20
07 \\u2013 Oct 10, 2008", |
| 328 |
| 329 "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "dMMM", "Oct 10, 200
7 \\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 1
0, 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 \\u
2013 10/10/08", |
| 338 |
| 339 "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "dM", "10/10/07 \\u2
013 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/0
7 \\u2013 Fri, 10/10/08", |
| 344 |
| 345 "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "d", "10/10/07 \\u20
13 10/10/08", |
| 346 |
| 347 "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "Ed", "10 Wed \\u201
3 10 Fri", |
| 348 |
| 349 "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "y", "2007\\u2013200
8", |
| 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", |
| 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", |
| 358 |
| 359 "en", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "hmv", "10/10/2007 1
0: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 1
0:10 AM PDT \\u2013 10/10/2008 10:10 AM PDT", |
| 362 |
| 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", |
| 364 |
| 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", |
| 366 |
| 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", |
| 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/1
0/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/200
7 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 1
0: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, 20
07 \\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", "Wedne
sday, October 10 \\u2013 Saturday, November 10, 2007", |
| 384 |
| 385 "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dMMMMy", "October 1
0 \\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\\u
2013November 2007", |
| 390 |
| 391 "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EEEEdMMMM", "Wednes
day, 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 \\u
2013 Nov 10, 2007", |
| 396 |
| 397 "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dMMM", "Oct 10 \\u2
013 Nov 10", |
| 398 |
| 399 "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "MMMy", "Oct\\u2013N
ov 2007", |
| 400 |
| 401 "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EdMMM", "Wed, Oct 1
0 \\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 \\u
2013 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 \\u201
3 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\\u2013No
v", |
| 421 |
| 422 "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "MMMM", "October-Nov
ember", |
| 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", |
| 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", |
| 427 |
| 428 "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "hmv", "10/10/2007 1
0: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 1
0:10 AM PDT \\u2013 11/10/2007 10:10 AM PST", |
| 431 |
| 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", |
| 433 |
| 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", |
| 435 |
| 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", |
| 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/1
0/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/200
7 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 1
0: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 \\u
2013 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", "Satur
day, 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 1
0\\u201320", |
| 456 |
| 457 |
| 458 "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EEEEdMMMM", "Saturd
ay, 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\\u2
01320, 2007", |
| 463 |
| 464 "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMMM", "Nov 10\\u20
1320", |
| 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 1
0 \\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 \\u
2013 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 \\u201
3 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", |
| 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", |
| 495 |
| 496 "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "hmv", "11/10/2007 1
0: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 1
0:10 AM PST \\u2013 11/20/2007 10:10 AM PST", |
| 499 |
| 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", |
| 501 |
| 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", |
| 503 |
| 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", |
| 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/1
0/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/200
7 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 1
0:10:10 AM \\u2013 11/20/2007 10:10:10 AM", |
| 515 "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "Hms", "11/10/2007 1
0: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 2
0:10:10 \\u2013 11/20/2007 20:10:10", |
| 517 |
| 518 "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMMMMMy", "N 10\\u2
01320, 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", "Wedne
sday, January 10, 2007", |
| 523 |
| 524 "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "dMMMMy", "January 1
0, 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 20
07", |
| 529 |
| 530 "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EEEEdMMMM", "Wednes
day, 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, 20
07", |
| 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 1
0", |
| 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 \\u2
013 2:10 PM", |
| 564 "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "Hm", "10:00 \\u2013
14:10", |
| 565 |
| 566 "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hmv", "10:00 AM \\u
2013 2:10 PM PT", |
| 567 |
| 568 "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hmz", "10:00 AM \\u
2013 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", |
| 571 "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "H", "10 \\u2013 14"
, |
| 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/1
0/2007", |
| 579 |
| 580 "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hhmm", "10:00 AM \\
u2013 2:10 PM", |
| 581 "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "HHmm", "10:00 \\u20
13 14:10", |
| 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", |
| 586 "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "Hms", "10:00:10 \\u
2013 14:10:10", |
| 587 |
| 588 "en", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "dMMMMMy", "J 10, 20
07", |
| 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 1
0, 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 20
07", |
| 596 |
| 597 "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "EEEEdMMMM", "Wednes
day, 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, 20
07", |
| 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 1
0", |
| 607 |
| 608 "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "EdMy", "Wed, 1/10/2
007", |
| 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\\u20131
0:20 AM", |
| 627 "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "Hm", "10:00 \\u2013
10:20", |
| 628 |
| 629 |
| 630 "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hmz", "10:00\\u2013
10:20 AM PST", |
| 631 |
| 632 |
| 633 "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hv", "10 AM PT", |
| 634 |
| 635 |
| 636 |
| 637 "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "EddMMy", "Wed, 01/1
0/2007", |
| 638 |
| 639 "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hhmm", "10:00\\u201
310:20 AM", |
| 640 "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "HHmm", "10:00 \\u20
13 10:20", |
| 641 |
| 642 "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hhmmzz", "10:00\\u2
01310:20 AM PST", |
| 643 |
| 644 |
| 645 "en", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "dMMMMMy", "J 10, 20
07", |
| 646 |
| 647 |
| 648 "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "EEEEdMMMMy", "Wedne
sday, January 10, 2007", |
| 649 |
| 650 "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "dMMMMy", "January 1
0, 2007", |
| 651 |
| 652 |
| 653 "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "MMMMy", "January 20
07", |
| 654 |
| 655 "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "EEEEdMMMM", "Wednes
day, January 10", |
| 656 |
| 657 |
| 658 "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "dMMMy", "Jan 10, 20
07", |
| 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 1
0", |
| 664 |
| 665 "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "EdMy", "Wed, 1/10/2
007", |
| 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", |
| 685 "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "Hm", "10:10", |
| 686 |
| 687 |
| 688 "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hmz", "10:10 AM PST
", |
| 689 |
| 690 "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "h", "10 AM", |
| 691 |
| 692 "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hv", "10 AM PT", |
| 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", |
| 699 "en", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "HHmm", "10:10", |
| 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, 20
07", |
| 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\\u65e
5\\u661f\\u671f\\u4e94", |
| 709 |
| 710 |
| 711 "zh", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "dMMMMy", "2007\\u5e
7410\\u670810\\u65e5\\u81f311\\u670810\\u65e5", |
| 712 |
| 713 |
| 714 "zh", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "MMMMy", "2007\\u5e7
410\\u6708\\u81f311\\u6708", |
| 715 |
| 716 |
| 717 "zh", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "hmv", "2007\\u5e741
0\\u670810\\u65e5 \\u4e0a\\u534810:10 \\u7f8e\\u56fd (\\u6d1b\\u6749\\u77f6)\\u2
0132007\\u5e7411\\u670810\\u65e5 \\u4e0a\\u534810:10 \\u7f8e\\u56fd (\\u6d1b\\u6
749\\u77f6)", |
| 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\\u4e
8c", |
| 720 |
| 721 |
| 722 "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMMMM", "11\\u67081
0\\u65e5\\u81f320\\u65e5", |
| 723 |
| 724 "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "MMMMy", "2007\\u5E7
411\\u6708", // (fixed expected result per ticket:6626:) |
| 725 |
| 726 "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EEEEdMMMM", "11\\u6
70810\\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\\u
5468\\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\\u81f31
1-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 |
| 741 "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "M", "11\\u6708", |
| 742 |
| 743 "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "MMM", "\\u5341\\u4E
00\\u6708", // (fixed expected result per ticket:6626: and others) |
| 744 |
| 745 |
| 746 "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "hmz", "2007\\u5e741
1\\u670810\\u65e5 \\u4e0a\\u534810:10 \\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6
\\u65f6\\u95f4-0800\\u20132007\\u5e7411\\u670820\\u65e5 \\u4e0a\\u534810:10 \\u6
83c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0800", |
| 747 |
| 748 "zh", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "h", "2007\\u5e7411\
\u670810\\u65e5 \\u4e0a\\u534810\\u65f6\\u20132007\\u5e7411\\u670820\\u65e5 \\u4
e0a\\u534810\\u65f6", |
| 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 tic
ket:6626:) |
| 751 |
| 752 "zh", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hm", "\\u4e0a\\u534
810:00\\u81f3\\u4e0b\\u53482:10", |
| 753 |
| 754 |
| 755 "zh", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hmz", "\\u683c\\u67
97\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0800\\u4e0a\\u534810:00\\u81f3\\u4e
0b\\u53482:10", |
| 756 |
| 757 "zh", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "h", "\\u4e0a\\u5348
10\\u81f3\\u4e0b\\u53482\\u65f6", |
| 758 |
| 759 "zh", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "hv", "\\u7f8e\\u56f
d (\\u6d1b\\u6749\\u77f6)\\u4e0a\\u534810\\u81f3\\u4e0b\\u53482\\u65f6", |
| 760 |
| 761 "zh", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hm", "\\u4e0a\\u534
810:00\\u81f310:20", |
| 762 |
| 763 "zh", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hmv", "\\u7f8e\\u56
fd (\\u6d1b\\u6749\\u77f6)\\u4e0a\\u534810:00\\u81f310:20", |
| 764 |
| 765 "zh", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hz", "\\u4e0a\\u534
810\\u65f6 \\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0800", |
| 766 |
| 767 "zh", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hm", "\\u4e0a\\u534
810:10", |
| 768 |
| 769 "zh", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "h", "\\u4e0a\\u5348
10\\u65f6", |
| 770 |
| 771 "de", "2007 10 10 10:10:10", "2008 10 10 10:10:10", "EEEEdMMMy", "Mittwo
ch, 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 200
7 - 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 - 1
0.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.0
7 - 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.", |
| 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", |
| 796 |
| 797 "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EEEEdMMMy", "Mittwo
ch, 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 - 1
0. Nov", |
| 801 |
| 802 "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "MMMy", "Okt-Nov 200
7", |
| 803 |
| 804 "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "EEEEdMMM", "Mittwoc
h, 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.1
1.", |
| 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 1
0:10:10 vorm. - 10.11.2007 10:10:10 vorm.", |
| 821 "de", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "Hms", "10.10.2007 1
0:10:10 - 10.11.2007 10:10:10", |
| 822 |
| 823 "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "EEEEdMMMy", "Samsta
g, 10. - Dienstag, 20. Nov 2007", |
| 824 |
| 825 "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "dMMMy", "10.-20. No
v 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.1
1.", |
| 836 |
| 837 "de", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "My", "11.2007", |
| 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 1
0: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", "Mittwo
ch, 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 |
| 854 "de", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "EEEEdMMM", "Mittwoc
h, 10. Jan", |
| 855 |
| 856 |
| 857 "de", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "h", "10 vorm. - 2 n
achm.", |
| 858 "de", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "H", "10-14 Uhr", |
| 859 |
| 860 "de", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "EEEEdMMM", "Mittwoc
h, 10. Jan", |
| 861 |
| 862 |
| 863 "de", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hmv", "10:00-10:20
vorm. Vereinigte Staaten (Los Angeles)", |
| 864 |
| 865 "de", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hmz", "10:00-10:20
vorm. GMT-08:00", |
| 866 |
| 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", |
| 869 |
| 870 |
| 871 "de", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "hz", "10 vorm. GMT-
08:00", |
| 872 |
| 873 "de", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "EEEEdMMMy", "Mittwo
ch, 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 |
| 881 "de", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "hv", "10 vorm. Vere
inigte 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", "\\u0E2
7\\u0E31\\u0E19\\u0E1E\\u0E38\\u0E18 10 \\u0E15.\\u0E04. 2550 \\u2013 \\u0E27\\u
0E31\\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 \\u2013 10 \\u0E15.\\u0E04. 2551", |
| 891 |
| 892 "th", "2550 10 10 10:10:10", "2551 10 10 10:10:10", "MMMy", "\\u0E15.\\u
0E04. 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 \\u2013 \\u0E28. 10/10/51", |
| 896 |
| 897 "th", "2550 10 10 10:10:10", "2551 10 10 10:10:10", "dMy", "10/10/50 \\u
2013 10/10/51", |
| 898 |
| 899 |
| 900 "th", "2550 10 10 10:10:10", "2551 10 10 10:10:10", "My", "10/50 \\u2013
10/51", |
| 901 |
| 902 "th", "2550 10 10 10:10:10", "2551 10 10 10:10:10", "EdM", "\\u0E1E. 10/
10/50 \\u2013 \\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 \\u2013
10/51", |
| 908 |
| 909 |
| 910 "th", "2550 10 10 10:10:10", "2550 11 10 10:10:10", "EEEEdMMMy", "\\u0E2
7\\u0E31\\u0E19\\u0E1E\\u0E38\\u0E18 10 \\u0E15.\\u0E04. \\u2013 \\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. \\u2013 10 \\u0E1E.\\u0E22.", |
| 914 |
| 915 "th", "2550 10 10 10:10:10", "2550 11 10 10:10:10", "MMMy", "\\u0E15.\\u
0E04.-\\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 \\u2013
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.\\u0
E04.-\\u0E1E.\\u0E22.", |
| 928 |
| 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); |
| 952 if (U_FAILURE(ec)) { |
| 953 dataerrln("contruct SimpleDateFormat in expect failed: %s", u_errorN
ame(ec)); |
| 954 return; |
| 955 } |
| 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(oneSke
leton, 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 --- Oc
t 10, 2008", |
| 1005 |
| 1006 "en", "2007 10 10 10:10:10", "2007 11 10 10:10:10", "2007 Oct 10 - Nov 2
007", |
| 1007 |
| 1008 "en", "2007 11 10 10:10:10", "2007 11 20 10:10:10", "Nov 10, 2007 --- No
v 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\\u670
810\\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\\u670
810\\u65e5 --- 2007\\u5e7411\\u670820\\u65e5", |
| 1021 |
| 1022 "zh", "2007 01 10 10:00:10", "2007 01 10 14:10:10", "2007\\u5e741\\u6708
10\\u65e5", // (fixed expected result per ticket:6626:) |
| 1023 |
| 1024 "zh", "2007 01 10 10:00:10", "2007 01 10 10:20:10", "2007\\u5e741\\u6708
10\\u65e5", // (fixed expected result per ticket:6626:) |
| 1025 |
| 1026 "zh", "2007 01 10 10:10:10", "2007 01 10 10:10:20", "2007\\u5e741\\u6708
10\\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 2
007", |
| 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); |
| 1066 if (U_FAILURE(ec)) { |
| 1067 dataerrln("contruct SimpleDateFormat in expectUserDII failed: %s", u
_errorName(ec)); |
| 1068 return; |
| 1069 } |
| 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_Y
EAR_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 + "\\" + dat
estr_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], testLo
cale[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(on
eSkeleton, 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_Y
EAR_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 */ |
OLD | NEW |