OLD | NEW |
(Empty) | |
| 1 /******************************************************************** |
| 2 * COPYRIGHT: |
| 3 * Copyright (c) 2008-2010, International Business Machines Corporation and |
| 4 * others. All Rights Reserved. |
| 5 ********************************************************************/ |
| 6 |
| 7 #include "unicode/utypes.h" |
| 8 |
| 9 #if !UCONFIG_NO_FORMATTING |
| 10 |
| 11 #include <stdio.h> |
| 12 #include <stdlib.h> |
| 13 #include "dtptngts.h" |
| 14 |
| 15 #include "unicode/calendar.h" |
| 16 #include "unicode/smpdtfmt.h" |
| 17 #include "unicode/dtfmtsym.h" |
| 18 #include "unicode/dtptngen.h" |
| 19 #include "loctest.h" |
| 20 |
| 21 |
| 22 // This is an API test, not a unit test. It doesn't test very many cases, and d
oesn't |
| 23 // try to test the full functionality. It just calls each function in the class
and |
| 24 // verifies that it works on a basic level. |
| 25 |
| 26 void IntlTestDateTimePatternGeneratorAPI::runIndexedTest( int32_t index, UBool e
xec, const char* &name, char* /*par*/ ) |
| 27 { |
| 28 if (exec) logln("TestSuite DateTimePatternGeneratorAPI"); |
| 29 switch (index) { |
| 30 TESTCASE(0, testAPI); |
| 31 TESTCASE(1, testOptions); |
| 32 default: name = ""; break; |
| 33 } |
| 34 } |
| 35 |
| 36 #define MAX_LOCALE 9 |
| 37 |
| 38 /** |
| 39 * Test various generic API methods of DateTimePatternGenerator for API coverage
. |
| 40 */ |
| 41 void IntlTestDateTimePatternGeneratorAPI::testAPI(/*char *par*/) |
| 42 { |
| 43 UnicodeString patternData[] = { |
| 44 UnicodeString("yM"), // 00 |
| 45 UnicodeString("yMMM"), // 01 |
| 46 UnicodeString("yMd"), // 02 |
| 47 UnicodeString("yMMMd"), // 03 |
| 48 UnicodeString("Md"), // 04 |
| 49 UnicodeString("MMMd"), // 05 |
| 50 UnicodeString("yQQQ"), // 06 |
| 51 UnicodeString("hhmm"), // 07 |
| 52 UnicodeString("HHmm"), // 08 |
| 53 UnicodeString("jjmm"), // 09 |
| 54 UnicodeString("mmss"), // 10 |
| 55 UnicodeString("yyyyMMMM"), // 11 |
| 56 UnicodeString("MMMEd"), // 12 |
| 57 UnicodeString("Ed"), // 13 |
| 58 UnicodeString(), |
| 59 }; |
| 60 |
| 61 const char* testLocale[MAX_LOCALE][4] = { |
| 62 {"en", "US", "", ""}, // 0 |
| 63 {"en", "US", "", "calendar=japanese"}, // 1 |
| 64 {"de", "DE", "", ""}, // 2 |
| 65 {"fi", "", "", ""}, // 3 |
| 66 {"ja", "", "", ""}, // 4 |
| 67 {"ja", "", "", "calendar=japanese"}, // 5 |
| 68 {"zh", "Hans", "CN", ""}, // 6 |
| 69 {"zh", "TW", "", "calendar=roc"}, // 7 |
| 70 {"ru", "", "", ""}, // 8 |
| 71 }; |
| 72 |
| 73 // For Weds, Jan 13, 1999, 23:58:59 |
| 74 UnicodeString patternResults[] = { |
| 75 // en_US // 0 en_US |
| 76 UnicodeString("1/1999"), // 00: yM |
| 77 UnicodeString("Jan 1999"), // 01: yMMM |
| 78 UnicodeString("1/13/1999"), // 02: yMd |
| 79 UnicodeString("Jan 13, 1999"), // 03: yMMMd |
| 80 UnicodeString("1/13"), // 04: Md |
| 81 UnicodeString("Jan 13"), // 05: MMMd |
| 82 UnicodeString("Q1 1999"), // 06: yQQQ |
| 83 UnicodeString("11:58 PM"), // 07: hhmm |
| 84 UnicodeString("23:58"), // 08: HHmm |
| 85 UnicodeString("11:58 PM"), // 09: jjmm |
| 86 UnicodeString("58:59"), // 10: mmss |
| 87 UnicodeString("January 1999"), // 11: yyyyMMMM |
| 88 UnicodeString("Wed, Jan 13"), // 12: MMMEd -> EE
E, MMM d" |
| 89 UnicodeString("13 Wed"), // 13: Ed -> d
EEE |
| 90 |
| 91 // en_US@calendar=japanese // 1 en_US@calenda
r=japanese |
| 92 UnicodeString("1/11 Heisei"), // 0: yM |
| 93 UnicodeString("Jan 11 Heisei"), // 1: yMMM |
| 94 UnicodeString("H 11-01-13"), // 2: yMd |
| 95 UnicodeString("H 11 Jan 13"), // 3: yMMMd |
| 96 UnicodeString("1/13"), // 4: Md |
| 97 UnicodeString("Jan 13"), // 5: MMMd |
| 98 UnicodeString("Q1 11 Heisei"), // 6: yQQQ |
| 99 UnicodeString("11:58 PM"), // 7: hhmm |
| 100 UnicodeString("23:58"), // 8: HHmm |
| 101 UnicodeString("11:58 PM"), // 9: jjmm |
| 102 UnicodeString("58:59"), // 10: mmss |
| 103 UnicodeString("January 11 Heisei"), // 11: yyyyMMMM |
| 104 UnicodeString("Wed, Jan 13"), // 12: MMMEd -> EE
E, MMM d" |
| 105 UnicodeString("13 Wed"), // 13: Ed -> d
EEE |
| 106 |
| 107 // de_DE // 2 de_DE |
| 108 UnicodeString("1.1999"), // 00: yM |
| 109 UnicodeString("Jan 1999"), // 01: yMMM |
| 110 UnicodeString("13.1.1999"), // 02: yMd |
| 111 UnicodeString("13. Jan 1999"), // 03: yMMMd |
| 112 UnicodeString("13.1."), // 04: Md |
| 113 UnicodeString("13. Jan"), // 05: MMMd |
| 114 UnicodeString("Q1 1999"), // 06: yQQQ |
| 115 UnicodeString("11:58 nachm."), // 07: hhmm |
| 116 UnicodeString("23:58"), // 08: HHmm |
| 117 UnicodeString("23:58"), // 09: jjmm |
| 118 UnicodeString("58:59"), // 10: mmss |
| 119 UnicodeString("Januar 1999"), // 11: yyyyMMMM |
| 120 UnicodeString("Mi., 13. Jan"), // 12: MMMEd -> EE
E, d. MMM |
| 121 UnicodeString("Mi., 13."), // 13: Ed -> EE
E, d. |
| 122 |
| 123 // fi // 3 fi |
| 124 UnicodeString("1.1999"), // 00: yM (fixed e
xpected result per ticket:6626:) |
| 125 UnicodeString("tammi 1999"), // 01: yMMM |
| 126 UnicodeString("13.1.1999"), // 02: yMd |
| 127 UnicodeString("13. tammikuuta 1999"), // 03: yMMMd |
| 128 UnicodeString("13.1."), // 04: Md |
| 129 UnicodeString("13. tammikuuta"), // 05: MMMd |
| 130 UnicodeString("1. nelj. 1999"), // 06: yQQQ |
| 131 UnicodeString("11.58 ip."), // 07: hhmm |
| 132 UnicodeString("23.58"), // 08: HHmm |
| 133 UnicodeString("23.58"), // 09: jjmm |
| 134 UnicodeString("58.59"), // 10: mmss |
| 135 UnicodeString("tammikuu 1999"), // 11: yyyyMMMM |
| 136 UnicodeString("ke 13. tammikuuta"), // 12: MMMEd -> EE
E d. MMM |
| 137 UnicodeString("ke 13."), // 13: Ed -> cc
c d. |
| 138 |
| 139 // ja // 4 j
a |
| 140 UnicodeString("1999/1"), // 00:
yM -> y/M |
| 141 CharsToUnicodeString("1999\\u5E741\\u6708"), // 01:
yMMM -> y\u5E74M\u6708 |
| 142 UnicodeString("1999/1/13"), // 02:
yMd -> y/M/d |
| 143 CharsToUnicodeString("1999\\u5E741\\u670813\\u65E5"), // 03:
yMMMd -> y\u5E74M\u6708d\u65E5 |
| 144 UnicodeString("1/13"), // 04:
Md -> M/d |
| 145 CharsToUnicodeString("1\\u670813\\u65E5"), // 05:
MMMd -> M\u6708d\u65E5 |
| 146 UnicodeString("1999Q1"), // 06:
yQQQ -> yQQQ |
| 147 CharsToUnicodeString("\\u5348\\u5F8C11:58"), // 07:
hhmm |
| 148 UnicodeString("23:58"), // 08:
HHmm -> HH:mm |
| 149 UnicodeString("23:58"), // 09:
jjmm |
| 150 UnicodeString("58:59"), // 10:
mmss -> mm:ss |
| 151 CharsToUnicodeString("1999\\u5E741\\u6708"), // 11:
yyyyMMMM -> y\u5E74M\u6708 |
| 152 CharsToUnicodeString("1\\u670813\\u65E5(\\u6C34)"), // 12:
MMMEd -> M\u6708d\u65E5(EEE) |
| 153 CharsToUnicodeString("13\\u65E5(\\u6C34)"), // 13:
Ed -> d\u65E5(EEE) |
| 154 |
| 155 // ja@calendar=japanese // 5 j
a@calendar=japanese |
| 156 CharsToUnicodeString("\\u5E73\\u621011/1"), // 00:
yM -> Gy/m |
| 157 CharsToUnicodeString("\\u5E73\\u621011\\u5E741\\u6708"), // 01:
yMMM -> Gy\u5E74M\u6708 |
| 158 CharsToUnicodeString("\\u5E73\\u621011/1/13"), // 02:
yMd -> Gy/m/d |
| 159 CharsToUnicodeString("\\u5E73\\u621011\\u5E741\\u670813\\u65E5"), // 03:
yMMMd -> Gy\u5E74M\u6708d\u65E5 |
| 160 UnicodeString("1/13"), // 04:
Md -> M/d |
| 161 CharsToUnicodeString("1\\u670813\\u65E5"), // 05:
MMMd -> M\u6708d\u65E5 |
| 162 CharsToUnicodeString("\\u5E73\\u621011/Q1"), // 06:
yQQQ -> Gy/QQQ |
| 163 CharsToUnicodeString("\\u5348\\u5F8C11:58"), // 07:
hhmm -> |
| 164 UnicodeString("23:58"), // 08:
HHmm -> HH:mm (as for ja) |
| 165 UnicodeString("23:58"), // 09:
jjmm |
| 166 UnicodeString("58:59"), // 10:
mmss -> mm:ss (as for ja) |
| 167 CharsToUnicodeString("\\u5E73\\u621011\\u5E741\\u6708"), // 11:
yyyyMMMM -> Gyyyy\u5E74M\u6708 |
| 168 CharsToUnicodeString("1\\u670813\\u65E5(\\u6C34)"), // 12:
MMMEd -> M\u6708d\u65E5(EEE) |
| 169 CharsToUnicodeString("13\\u65E5(\\u6C34)"), // 13:
Ed -> d\u65E5(EEE) |
| 170 |
| 171 // zh_Hans_CN // 6 z
h_Hans_CN |
| 172 UnicodeString("1999-1", -1, US_INV), // 00:
yM |
| 173 CharsToUnicodeString("1999\\u5E741\\u6708"), // 01:
yMMM -> yyyy\u5E74MMM (fixed expected result per ticket:6626:) |
| 174 CharsToUnicodeString("1999\\u5E741\\u670813\\u65E5"), // 02:
yMd |
| 175 CharsToUnicodeString("1999\\u5E741\\u670813\\u65E5"), // 03:
yMMMd -> yyyy\u5E74MMMd\u65E5 (fixed expected result per ticket:6626:) |
| 176 UnicodeString("1-13"), // 04:
Md |
| 177 CharsToUnicodeString("1\\u670813\\u65E5"), // 05:
MMMd -> MMMd\u65E5 (fixed expected result per ticket:6626:) |
| 178 CharsToUnicodeString("1999\\u5E741\\u5B63"), // 06:
yQQQ |
| 179 CharsToUnicodeString("\\u4E0B\\u534811:58"), // 07:
hhmm |
| 180 UnicodeString("23:58"), // 08:
HHmm |
| 181 CharsToUnicodeString("\\u4E0B\\u534811:58"), // 09:
jjmm |
| 182 UnicodeString("58:59"), // 10:
mmss |
| 183 CharsToUnicodeString("1999\\u5E741\\u6708"), // 11:
yyyyMMMM -> yyyy\u5E74MMM |
| 184 CharsToUnicodeString("1\\u670813\\u65E5\\u5468\\u4E09"), // 12:
MMMEd -> MMMd\u65E5EEE |
| 185 CharsToUnicodeString("13\\u65E5\\u5468\\u4E09"), // 13:
Ed -> d\u65E5EEE |
| 186 |
| 187 // zh_TW@calendar=roc // 7 z
h_TW@calendar=roc |
| 188 CharsToUnicodeString("\\u6C11\\u570B88/1"), // 00:
yM -> Gy/M |
| 189 CharsToUnicodeString("\\u6C11\\u570B88\\u5E741\\u6708"), // 01:
yMMM -> Gy\u5E74M\u6708 |
| 190 CharsToUnicodeString("\\u6C11\\u570B88/1/13"), // 02:
yMd -> Gy/M/d |
| 191 CharsToUnicodeString("\\u6C11\\u570B88\\u5E741\\u670813\\u65E5"), // 03:
yMMMd -> Gy\u5E74M\u6708d\u65E5 |
| 192 UnicodeString("1/13"), // 04:
Md -> M/d |
| 193 CharsToUnicodeString("1\\u670813\\u65E5"), // 05:
MMMd ->M\u6708d\u65E5 |
| 194 CharsToUnicodeString("\\u6C11\\u570B88 1\\u5B63"), // 06:
yQQQ -> Gy QQQ |
| 195 CharsToUnicodeString("\\u4E0B\\u534811:58"), // 07:
hhmm -> |
| 196 UnicodeString("23:58"), // 08:
HHmm -> |
| 197 CharsToUnicodeString("\\u4E0B\\u534811:58"), // 09:
jjmm |
| 198 UnicodeString("58:59"), // 10:
mmss -> |
| 199 CharsToUnicodeString("\\u6C11\\u570B88\\u5E741\\u6708"), // 11:
yyyyMMMM -> Gy\u5E74M\u670 |
| 200 CharsToUnicodeString("1\\u670813\\u65E5\\u9031\\u4E09"), // 12:
MMMEd -> M\u6708d\u65E5EEE |
| 201 CharsToUnicodeString("13\\u65E5(\\u9031\\u4E09)"), // 13:
Ed -> d\u65E5(EEE) |
| 202 |
| 203 // ru // 8 r
u |
| 204 UnicodeString("1.1999"), // 00:
yM -> M.y |
| 205 CharsToUnicodeString("\\u044F\\u043D\\u0432. 1999"), // 01:
yMMM -> LLL y |
| 206 UnicodeString("13.1.1999"), // 02:
yMd -> d.M.y |
| 207 CharsToUnicodeString("13 \\u044F\\u043D\\u0432. 1999\\u00A0\\u0433."), /
/ 03: yMMMd -> d MMM y |
| 208 UnicodeString("13.1"), // 04:
Md -> d.M |
| 209 CharsToUnicodeString("13 \\u044F\\u043D\\u0432."), // 05:
MMMd -> d MMM |
| 210 CharsToUnicodeString("1999 1-\\u0439 \\u043A\\u0432."), // 06:
yQQQ -> y QQQ |
| 211 UnicodeString("11:58 PM"), // 07:
hhmm -> hh:mm a |
| 212 UnicodeString("23:58"), // 08:
HHmm -> HH:mm |
| 213 UnicodeString("23:58"), // 09:
jjmm -> HH:mm |
| 214 UnicodeString("58:59"), // 10:
mmss -> mm:ss |
| 215 CharsToUnicodeString("\\u042F\\u043D\\u0432\\u0430\\u0440\\u044C 1999"),
// 11: yyyyMMMM -> LLLL y |
| 216 CharsToUnicodeString("\\u0421\\u0440, 13 \\u044F\\u043D\\u0432."), // 12
: MMMEd -> ccc, d MMM |
| 217 CharsToUnicodeString("\\u0441\\u0440, 13"), // 13:
Ed -> EEE, d |
| 218 |
| 219 UnicodeString(), |
| 220 }; |
| 221 |
| 222 UnicodeString patternTests2[] = { |
| 223 UnicodeString("yyyyMMMdd"), |
| 224 UnicodeString("yyyyqqqq"), |
| 225 UnicodeString("yMMMdd"), |
| 226 UnicodeString("EyyyyMMMdd"), |
| 227 UnicodeString("yyyyMMdd"), |
| 228 UnicodeString("yyyyMMM"), |
| 229 UnicodeString("yyyyMM"), |
| 230 UnicodeString("yyMM"), |
| 231 UnicodeString("yMMMMMd"), |
| 232 UnicodeString("EEEEEMMMMMd"), |
| 233 UnicodeString("MMMd"), |
| 234 UnicodeString("MMMdhmm"), |
| 235 UnicodeString("EMMMdhmms"), |
| 236 UnicodeString("MMdhmm"), |
| 237 UnicodeString("EEEEMMMdhmms"), |
| 238 UnicodeString("yyyyMMMddhhmmss"), |
| 239 UnicodeString("EyyyyMMMddhhmmss"), |
| 240 UnicodeString("hmm"), |
| 241 UnicodeString("hhmm"), |
| 242 UnicodeString("hhmmVVVV"), |
| 243 UnicodeString(""), |
| 244 }; |
| 245 UnicodeString patternResults2[] = { |
| 246 UnicodeString("Oct 14, 1999"), |
| 247 UnicodeString("4th quarter 1999"), |
| 248 UnicodeString("Oct 14, 1999"), |
| 249 UnicodeString("Thu, Oct 14, 1999"), |
| 250 UnicodeString("10/14/1999"), |
| 251 UnicodeString("Oct 1999"), |
| 252 UnicodeString("10/1999"), |
| 253 UnicodeString("10/99"), |
| 254 UnicodeString("O 14, 1999"), |
| 255 UnicodeString("T, O 14"), |
| 256 UnicodeString("Oct 14"), |
| 257 UnicodeString("Oct 14 6:58 AM"), |
| 258 UnicodeString("Thu, Oct 14 6:58:59 AM"), |
| 259 UnicodeString("10/14 6:58 AM"), |
| 260 UnicodeString("Thursday, Oct 14 6:58:59 AM"), |
| 261 UnicodeString("Oct 14, 1999 6:58:59 AM"), |
| 262 UnicodeString("Thu, Oct 14, 1999 6:58:59 AM"), |
| 263 UnicodeString("6:58 AM"), |
| 264 UnicodeString("6:58 AM"), |
| 265 UnicodeString("6:58 AM GMT+00:00"), |
| 266 UnicodeString(""), |
| 267 }; |
| 268 |
| 269 // results for getSkeletons() and getPatternForSkeleton() |
| 270 const UnicodeString testSkeletonsResults[] = { |
| 271 UnicodeString("HH:mm"), |
| 272 UnicodeString("MMMMd"), |
| 273 UnicodeString("MMMMMd"), |
| 274 }; |
| 275 |
| 276 const UnicodeString testBaseSkeletonsResults[] = { |
| 277 UnicodeString("Hm"), |
| 278 UnicodeString("MMMd"), |
| 279 UnicodeString("MMMd"), |
| 280 }; |
| 281 |
| 282 UnicodeString newDecimal(" "); // space |
| 283 UnicodeString newAppendItemName("hrs."); |
| 284 UnicodeString newAppendItemFormat("{1} {0}"); |
| 285 UnicodeString newDateTimeFormat("{1} {0}"); |
| 286 UErrorCode status = U_ZERO_ERROR; |
| 287 UnicodeString conflictingPattern; |
| 288 UDateTimePatternConflict conflictingStatus; |
| 289 |
| 290 // ======= Test CreateInstance with default locale |
| 291 logln("Testing DateTimePatternGenerator createInstance from default locale")
; |
| 292 |
| 293 DateTimePatternGenerator *instFromDefaultLocale=DateTimePatternGenerator::cr
eateInstance(status); |
| 294 if (U_FAILURE(status)) { |
| 295 dataerrln("ERROR: Could not create DateTimePatternGenerator (default) -
exitting"); |
| 296 return; |
| 297 } |
| 298 else { |
| 299 delete instFromDefaultLocale; |
| 300 } |
| 301 |
| 302 // ======= Test CreateInstance with given locale |
| 303 logln("Testing DateTimePatternGenerator createInstance from French locale"); |
| 304 status = U_ZERO_ERROR; |
| 305 DateTimePatternGenerator *instFromLocale=DateTimePatternGenerator::createIns
tance(Locale::getFrench(), status); |
| 306 if (U_FAILURE(status)) { |
| 307 dataerrln("ERROR: Could not create DateTimePatternGenerator (Locale::get
French()) - exitting"); |
| 308 return; |
| 309 } |
| 310 |
| 311 // ======= Test clone DateTimePatternGenerator |
| 312 logln("Testing DateTimePatternGenerator::clone()"); |
| 313 status = U_ZERO_ERROR; |
| 314 |
| 315 |
| 316 UnicodeString decimalSymbol = instFromLocale->getDecimal(); |
| 317 UnicodeString newDecimalSymbol = UnicodeString("*"); |
| 318 decimalSymbol = instFromLocale->getDecimal(); |
| 319 instFromLocale->setDecimal(newDecimalSymbol); |
| 320 DateTimePatternGenerator *cloneDTPatternGen=instFromLocale->clone(); |
| 321 decimalSymbol = cloneDTPatternGen->getDecimal(); |
| 322 if (decimalSymbol != newDecimalSymbol) { |
| 323 errln("ERROR: inconsistency is found in cloned object."); |
| 324 } |
| 325 if ( !(*cloneDTPatternGen == *instFromLocale) ) { |
| 326 errln("ERROR: inconsistency is found in cloned object."); |
| 327 } |
| 328 |
| 329 if ( *cloneDTPatternGen != *instFromLocale ) { |
| 330 errln("ERROR: inconsistency is found in cloned object."); |
| 331 } |
| 332 |
| 333 delete instFromLocale; |
| 334 delete cloneDTPatternGen; |
| 335 |
| 336 // ======= Test simple use cases |
| 337 logln("Testing simple use cases"); |
| 338 status = U_ZERO_ERROR; |
| 339 Locale deLocale=Locale::getGermany(); |
| 340 UDate sampleDate=LocaleTest::date(99, 9, 13, 23, 58, 59); |
| 341 DateTimePatternGenerator *gen = DateTimePatternGenerator::createInstance(deL
ocale, status); |
| 342 if (U_FAILURE(status)) { |
| 343 dataerrln("ERROR: Could not create DateTimePatternGenerator (Locale::get
Germany()) - exitting"); |
| 344 return; |
| 345 } |
| 346 UnicodeString findPattern = gen->getBestPattern(UnicodeString("MMMddHmm"), s
tatus); |
| 347 SimpleDateFormat *format = new SimpleDateFormat(findPattern, deLocale, statu
s); |
| 348 if (U_FAILURE(status)) { |
| 349 dataerrln("ERROR: Could not create SimpleDateFormat (Locale::getGermany(
))"); |
| 350 delete gen; |
| 351 return; |
| 352 } |
| 353 TimeZone *zone = TimeZone::createTimeZone(UnicodeString("ECT")); |
| 354 if (zone==NULL) { |
| 355 dataerrln("ERROR: Could not create TimeZone ECT"); |
| 356 delete gen; |
| 357 delete format; |
| 358 return; |
| 359 } |
| 360 format->setTimeZone(*zone); |
| 361 UnicodeString dateReturned, expectedResult; |
| 362 dateReturned.remove(); |
| 363 dateReturned = format->format(sampleDate, dateReturned, status); |
| 364 expectedResult=UnicodeString("14. Okt 08:58", -1, US_INV); |
| 365 if ( dateReturned != expectedResult ) { |
| 366 errln("ERROR: Simple test in getBestPattern with Locale::getGermany())."
); |
| 367 } |
| 368 // add new pattern |
| 369 status = U_ZERO_ERROR; |
| 370 conflictingStatus = gen->addPattern(UnicodeString("d'. von' MMMM", -1, US_IN
V), true, conflictingPattern, status); |
| 371 if (U_FAILURE(status)) { |
| 372 errln("ERROR: Could not addPattern - d\'. von\' MMMM"); |
| 373 } |
| 374 status = U_ZERO_ERROR; |
| 375 UnicodeString testPattern=gen->getBestPattern(UnicodeString("MMMMdd"), statu
s); |
| 376 testPattern=gen->getBestPattern(UnicodeString("MMMddHmm"), status); |
| 377 format->applyPattern(gen->getBestPattern(UnicodeString("MMMMdHmm"), status))
; |
| 378 dateReturned.remove(); |
| 379 dateReturned = format->format(sampleDate, dateReturned, status); |
| 380 expectedResult=UnicodeString("14. von Oktober 08:58", -1, US_INV); |
| 381 if ( dateReturned != expectedResult ) { |
| 382 errln(UnicodeString("ERROR: Simple test addPattern failed!: d\'. von\' M
MMM Got: ") + dateReturned + UnicodeString(" Expected: ") + expectedResult); |
| 383 } |
| 384 delete format; |
| 385 |
| 386 // get a pattern and modify it |
| 387 format = (SimpleDateFormat *)DateFormat::createDateTimeInstance(DateFormat::
kFull, DateFormat::kFull, |
| 388 deLocale); |
| 389 format->setTimeZone(*zone); |
| 390 UnicodeString pattern; |
| 391 pattern = format->toPattern(pattern); |
| 392 dateReturned.remove(); |
| 393 dateReturned = format->format(sampleDate, dateReturned, status); |
| 394 expectedResult=CharsToUnicodeString("Donnerstag, 14. Oktober 1999 08:58:59 M
itteleurop\\u00E4ische Sommerzeit"); |
| 395 if ( dateReturned != expectedResult ) { |
| 396 errln("ERROR: Simple test uses full date format."); |
| 397 errln(UnicodeString(" Got: ") + dateReturned + UnicodeString(" Expected:
") + expectedResult); |
| 398 } |
| 399 |
| 400 // modify it to change the zone. |
| 401 UnicodeString newPattern = gen->replaceFieldTypes(pattern, UnicodeString("vv
vv"), status); |
| 402 format->applyPattern(newPattern); |
| 403 dateReturned.remove(); |
| 404 dateReturned = format->format(sampleDate, dateReturned, status); |
| 405 expectedResult=UnicodeString("Donnerstag, 14. Oktober 1999 08:58:59 (Frankre
ich)"); |
| 406 if ( dateReturned != expectedResult ) { |
| 407 errln("ERROR: Simple test modify the timezone!"); |
| 408 errln(UnicodeString(" Got: ")+ dateReturned + UnicodeString(" Expected:
") + expectedResult); |
| 409 } |
| 410 |
| 411 // setDeciaml(), getDeciaml() |
| 412 gen->setDecimal(newDecimal); |
| 413 if (newDecimal != gen->getDecimal()) { |
| 414 errln("ERROR: unexpected result from setDecimal() and getDecimal()!.\n")
; |
| 415 } |
| 416 |
| 417 // setAppenItemName() , getAppendItemName() |
| 418 gen->setAppendItemName(UDATPG_HOUR_FIELD, newAppendItemName); |
| 419 if (newAppendItemName != gen->getAppendItemName(UDATPG_HOUR_FIELD)) { |
| 420 errln("ERROR: unexpected result from setAppendItemName() and getAppendIt
emName()!.\n"); |
| 421 } |
| 422 |
| 423 // setAppenItemFormat() , getAppendItemFormat() |
| 424 gen->setAppendItemFormat(UDATPG_HOUR_FIELD, newAppendItemFormat); |
| 425 if (newAppendItemFormat != gen->getAppendItemFormat(UDATPG_HOUR_FIELD)) { |
| 426 errln("ERROR: unexpected result from setAppendItemFormat() and getAppend
ItemFormat()!.\n"); |
| 427 } |
| 428 |
| 429 // setDateTimeFormat() , getDateTimeFormat() |
| 430 gen->setDateTimeFormat(newDateTimeFormat); |
| 431 if (newDateTimeFormat != gen->getDateTimeFormat()) { |
| 432 errln("ERROR: unexpected result from setDateTimeFormat() and getDateTime
Format()!.\n"); |
| 433 } |
| 434 |
| 435 // ======== Test getSkeleton and getBaseSkeleton |
| 436 status = U_ZERO_ERROR; |
| 437 pattern = UnicodeString("dd-MMM"); |
| 438 UnicodeString expectedSkeleton = UnicodeString("MMMdd"); |
| 439 UnicodeString expectedBaseSkeleton = UnicodeString("MMMd"); |
| 440 UnicodeString retSkeleton = gen->getSkeleton(pattern, status); |
| 441 if(U_FAILURE(status) || retSkeleton != expectedSkeleton ) { |
| 442 errln("ERROR: Unexpected result from getSkeleton().\n"); |
| 443 errln(UnicodeString(" Got: ") + retSkeleton + UnicodeString(" Expected:
") + expectedSkeleton ); |
| 444 } |
| 445 retSkeleton = gen->getBaseSkeleton(pattern, status); |
| 446 if(U_FAILURE(status) || retSkeleton != expectedBaseSkeleton) { |
| 447 errln("ERROR: Unexpected result from getBaseSkeleton().\n"); |
| 448 errln(UnicodeString(" Got: ") + retSkeleton + UnicodeString(" Expected:
")+ expectedBaseSkeleton); |
| 449 } |
| 450 |
| 451 pattern = UnicodeString("dd/MMMM/yy"); |
| 452 expectedSkeleton = UnicodeString("yyMMMMdd"); |
| 453 expectedBaseSkeleton = UnicodeString("yMMMd"); |
| 454 retSkeleton = gen->getSkeleton(pattern, status); |
| 455 if(U_FAILURE(status) || retSkeleton != expectedSkeleton ) { |
| 456 errln("ERROR: Unexpected result from getSkeleton().\n"); |
| 457 errln(UnicodeString(" Got: ") + retSkeleton + UnicodeString(" Expected:
") + expectedSkeleton ); |
| 458 } |
| 459 retSkeleton = gen->getBaseSkeleton(pattern, status); |
| 460 if(U_FAILURE(status) || retSkeleton != expectedBaseSkeleton) { |
| 461 errln("ERROR: Unexpected result from getBaseSkeleton().\n"); |
| 462 errln(UnicodeString(" Got: ") + retSkeleton + UnicodeString(" Expected:
")+ expectedBaseSkeleton); |
| 463 } |
| 464 delete format; |
| 465 delete zone; |
| 466 delete gen; |
| 467 |
| 468 { |
| 469 // Trac# 6104 |
| 470 status = U_ZERO_ERROR; |
| 471 pattern = UnicodeString("YYYYMMM"); |
| 472 UnicodeString expR = CharsToUnicodeString("1999\\u5E741\\u6708"); // fix
ed expected result per ticket:6626: |
| 473 Locale loc("ja"); |
| 474 UDate testDate1= LocaleTest::date(99, 0, 13, 23, 58, 59); |
| 475 DateTimePatternGenerator *patGen=DateTimePatternGenerator::createInstanc
e(loc, status); |
| 476 if(U_FAILURE(status)) { |
| 477 dataerrln("ERROR: Could not create DateTimePatternGenerator"); |
| 478 return; |
| 479 } |
| 480 UnicodeString bPattern = patGen->getBestPattern(pattern, status); |
| 481 UnicodeString rDate; |
| 482 SimpleDateFormat sdf(bPattern, loc, status); |
| 483 rDate.remove(); |
| 484 rDate = sdf.format(testDate1, rDate); |
| 485 |
| 486 logln(UnicodeString(" ja locale with skeleton: YYYYMMM Best Pattern:")
+ bPattern); |
| 487 logln(UnicodeString(" Formatted date:") + rDate); |
| 488 |
| 489 if ( expR!= rDate ) { |
| 490 errln(UnicodeString("\nERROR: Test Japanese month hack Got: ") + rDa
te + |
| 491 UnicodeString(" Expected: ") + expR ); |
| 492 } |
| 493 |
| 494 delete patGen; |
| 495 } |
| 496 { // Trac# 6104 |
| 497 Locale loc("zh"); |
| 498 UnicodeString expR = CharsToUnicodeString("1999\\u5E741\\u6708"); // fix
ed expected result per ticket:6626: |
| 499 UDate testDate1= LocaleTest::date(99, 0, 13, 23, 58, 59); |
| 500 DateTimePatternGenerator *patGen=DateTimePatternGenerator::createInstanc
e(loc, status); |
| 501 if(U_FAILURE(status)) { |
| 502 dataerrln("ERROR: Could not create DateTimePatternGenerator"); |
| 503 return; |
| 504 } |
| 505 UnicodeString bPattern = patGen->getBestPattern(pattern, status); |
| 506 UnicodeString rDate; |
| 507 SimpleDateFormat sdf(bPattern, loc, status); |
| 508 rDate.remove(); |
| 509 rDate = sdf.format(testDate1, rDate); |
| 510 |
| 511 logln(UnicodeString(" zh locale with skeleton: YYYYMMM Best Pattern:")
+ bPattern); |
| 512 logln(UnicodeString(" Formatted date:") + rDate); |
| 513 if ( expR!= rDate ) { |
| 514 errln(UnicodeString("\nERROR: Test Chinese month hack Got: ") + rDat
e + |
| 515 UnicodeString(" Expected: ") + expR ); |
| 516 } |
| 517 delete patGen; |
| 518 } |
| 519 |
| 520 { |
| 521 // Trac# 6172 duplicate time pattern |
| 522 status = U_ZERO_ERROR; |
| 523 pattern = UnicodeString("hmv"); |
| 524 UnicodeString expR = UnicodeString("h:mm a v"); // avail formats has hm
-> "h:mm a" (fixed expected result per ticket:6626:) |
| 525 Locale loc("en"); |
| 526 DateTimePatternGenerator *patGen=DateTimePatternGenerator::createInstan
ce(loc, status); |
| 527 if(U_FAILURE(status)) { |
| 528 dataerrln("ERROR: Could not create DateTimePatternGenerator"); |
| 529 return; |
| 530 } |
| 531 UnicodeString bPattern = patGen->getBestPattern(pattern, status); |
| 532 logln(UnicodeString(" en locale with skeleton: hmv Best Pattern:") + b
Pattern); |
| 533 |
| 534 if ( expR!= bPattern ) { |
| 535 errln(UnicodeString("\nERROR: Test EN time format Got: ") + bPatter
n + |
| 536 UnicodeString(" Expected: ") + expR ); |
| 537 } |
| 538 |
| 539 delete patGen; |
| 540 } |
| 541 |
| 542 |
| 543 // ======= Test various skeletons. |
| 544 logln("Testing DateTimePatternGenerator with various skeleton"); |
| 545 |
| 546 status = U_ZERO_ERROR; |
| 547 int32_t localeIndex=0; |
| 548 int32_t resultIndex=0; |
| 549 UnicodeString resultDate; |
| 550 UDate testDate= LocaleTest::date(99, 0, 13, 23, 58, 59); |
| 551 while (localeIndex < MAX_LOCALE ) |
| 552 { |
| 553 int32_t dataIndex=0; |
| 554 UnicodeString bestPattern; |
| 555 |
| 556 Locale loc(testLocale[localeIndex][0], testLocale[localeIndex][1], testL
ocale[localeIndex][2], testLocale[localeIndex][3]); |
| 557 logln("\n\n Locale: %s_%s_%s@%s", testLocale[localeIndex][0], testLocale
[localeIndex][1], testLocale[localeIndex][2], testLocale[localeIndex][3]); |
| 558 DateTimePatternGenerator *patGen=DateTimePatternGenerator::createInstanc
e(loc, status); |
| 559 if(U_FAILURE(status)) { |
| 560 dataerrln("ERROR: Could not create DateTimePatternGenerator with loc
ale index:%d . - exitting\n", localeIndex); |
| 561 return; |
| 562 } |
| 563 while (patternData[dataIndex].length() > 0) { |
| 564 log(patternData[dataIndex]); |
| 565 bestPattern = patGen->getBestPattern(patternData[dataIndex++], statu
s); |
| 566 logln(UnicodeString(" -> ") + bestPattern); |
| 567 |
| 568 SimpleDateFormat sdf(bestPattern, loc, status); |
| 569 resultDate.remove(); |
| 570 resultDate = sdf.format(testDate, resultDate); |
| 571 if ( resultDate != patternResults[resultIndex] ) { |
| 572 errln(UnicodeString("\nERROR: Test various skeletons[") + (dataI
ndex-1) + UnicodeString("], localeIndex ") + localeIndex + |
| 573 UnicodeString(". Got: \"") + resultDate + UnicodeString("\
" Expected: \"") + patternResults[resultIndex] + "\"" ); |
| 574 } |
| 575 |
| 576 resultIndex++; |
| 577 } |
| 578 delete patGen; |
| 579 localeIndex++; |
| 580 } |
| 581 |
| 582 // ======= More tests ticket#6110 |
| 583 logln("Testing DateTimePatternGenerator with various skeleton"); |
| 584 |
| 585 status = U_ZERO_ERROR; |
| 586 localeIndex=0; |
| 587 resultIndex=0; |
| 588 testDate= LocaleTest::date(99, 9, 13, 23, 58, 59); |
| 589 { |
| 590 int32_t dataIndex=0; |
| 591 UnicodeString bestPattern; |
| 592 logln("\n\n Test various skeletons for English locale..."); |
| 593 DateTimePatternGenerator *patGen=DateTimePatternGenerator::createInstanc
e(Locale::getEnglish(), status); |
| 594 if(U_FAILURE(status)) { |
| 595 dataerrln("ERROR: Could not create DateTimePatternGenerator with loc
ale English . - exitting\n"); |
| 596 return; |
| 597 } |
| 598 TimeZone *enZone = TimeZone::createTimeZone(UnicodeString("ECT/GMT")); |
| 599 if (enZone==NULL) { |
| 600 dataerrln("ERROR: Could not create TimeZone ECT"); |
| 601 delete patGen; |
| 602 return; |
| 603 } |
| 604 SimpleDateFormat *enFormat = (SimpleDateFormat *)DateFormat::createDateT
imeInstance(DateFormat::kFull, |
| 605 DateFormat::kFull, Locale::getEnglish()); |
| 606 enFormat->setTimeZone(*enZone); |
| 607 while (patternTests2[dataIndex].length() > 0) { |
| 608 logln(patternTests2[dataIndex]); |
| 609 bestPattern = patGen->getBestPattern(patternTests2[dataIndex], statu
s); |
| 610 logln(UnicodeString(" -> ") + bestPattern); |
| 611 enFormat->applyPattern(bestPattern); |
| 612 resultDate.remove(); |
| 613 resultDate = enFormat->format(testDate, resultDate); |
| 614 if ( resultDate != patternResults2[resultIndex] ) { |
| 615 errln(UnicodeString("\nERROR: Test various skeletons[") + dataIn
dex |
| 616 + UnicodeString("]. Got: ") + resultDate + UnicodeString(" E
xpected: ") + |
| 617 patternResults2[resultIndex] ); |
| 618 } |
| 619 dataIndex++; |
| 620 resultIndex++; |
| 621 } |
| 622 delete patGen; |
| 623 delete enZone; |
| 624 delete enFormat; |
| 625 } |
| 626 |
| 627 |
| 628 |
| 629 // ======= Test random skeleton |
| 630 DateTimePatternGenerator *randDTGen= DateTimePatternGenerator::createInstanc
e(status); |
| 631 if (U_FAILURE(status)) { |
| 632 dataerrln("ERROR: Could not create DateTimePatternGenerator (Locale::get
French()) - exitting"); |
| 633 return; |
| 634 } |
| 635 UChar newChar; |
| 636 int32_t i; |
| 637 for (i=0; i<10; ++i) { |
| 638 UnicodeString randomSkeleton; |
| 639 int32_t len = rand() % 20; |
| 640 for (int32_t j=0; j<len; ++j ) { |
| 641 while ((newChar = (UChar)(rand()%0x7f))>=(UChar)0x20) { |
| 642 randomSkeleton += newChar; |
| 643 } |
| 644 } |
| 645 UnicodeString bestPattern = randDTGen->getBestPattern(randomSkeleton, st
atus); |
| 646 } |
| 647 delete randDTGen; |
| 648 |
| 649 // UnicodeString randomString=Unicode |
| 650 // ======= Test getStaticClassID() |
| 651 |
| 652 logln("Testing getStaticClassID()"); |
| 653 status = U_ZERO_ERROR; |
| 654 DateTimePatternGenerator *test= DateTimePatternGenerator::createInstance(sta
tus); |
| 655 |
| 656 if(test->getDynamicClassID() != DateTimePatternGenerator::getStaticClassID()
) { |
| 657 errln("ERROR: getDynamicClassID() didn't return the expected value"); |
| 658 } |
| 659 delete test; |
| 660 |
| 661 // ====== Test createEmptyInstance() |
| 662 |
| 663 logln("Testing createEmptyInstance()"); |
| 664 status = U_ZERO_ERROR; |
| 665 |
| 666 test = DateTimePatternGenerator::createEmptyInstance(status); |
| 667 if(U_FAILURE(status)) { |
| 668 errln("ERROR: Fail to create an empty instance ! - exitting.\n"); |
| 669 delete test; |
| 670 return; |
| 671 } |
| 672 |
| 673 conflictingStatus = test->addPattern(UnicodeString("MMMMd"), true, conflicti
ngPattern, status); |
| 674 status = U_ZERO_ERROR; |
| 675 testPattern=test->getBestPattern(UnicodeString("MMMMdd"), status); |
| 676 conflictingStatus = test->addPattern(UnicodeString("HH:mm"), true, conflicti
ngPattern, status); |
| 677 conflictingStatus = test->addPattern(UnicodeString("MMMMMd"), true, conflict
ingPattern, status); //duplicate pattern |
| 678 StringEnumeration *output=NULL; |
| 679 output = test->getRedundants(status); |
| 680 expectedResult=UnicodeString("MMMMd"); |
| 681 if (output != NULL) { |
| 682 output->reset(status); |
| 683 const UnicodeString *dupPattern=output->snext(status); |
| 684 if ( (dupPattern==NULL) || (*dupPattern != expectedResult) ) { |
| 685 errln("ERROR: Fail in getRedundants !\n"); |
| 686 } |
| 687 } |
| 688 |
| 689 // ======== Test getSkeletons and getBaseSkeletons |
| 690 StringEnumeration* ptrSkeletonEnum = test->getSkeletons(status); |
| 691 if(U_FAILURE(status)) { |
| 692 errln("ERROR: Fail to get skeletons !\n"); |
| 693 } |
| 694 UnicodeString returnPattern, *ptrSkeleton; |
| 695 ptrSkeletonEnum->reset(status); |
| 696 int32_t count=ptrSkeletonEnum->count(status); |
| 697 for (i=0; i<count; ++i) { |
| 698 ptrSkeleton = (UnicodeString *)ptrSkeletonEnum->snext(status); |
| 699 returnPattern = test->getPatternForSkeleton(*ptrSkeleton); |
| 700 if ( returnPattern != testSkeletonsResults[i] ) { |
| 701 errln(UnicodeString("ERROR: Unexpected result from getSkeletons and
getPatternForSkeleton\nGot: ") + returnPattern |
| 702 + UnicodeString("\nExpected: ") + testSkeletonsResults[i] |
| 703 + UnicodeString("\n")); |
| 704 } |
| 705 } |
| 706 StringEnumeration* ptrBaseSkeletonEnum = test->getBaseSkeletons(status); |
| 707 if(U_FAILURE(status)) { |
| 708 errln("ERROR: Fail to get base skeletons !\n"); |
| 709 } |
| 710 count=ptrBaseSkeletonEnum->count(status); |
| 711 for (i=0; i<count; ++i) { |
| 712 ptrSkeleton = (UnicodeString *)ptrBaseSkeletonEnum->snext(status); |
| 713 if ( *ptrSkeleton != testBaseSkeletonsResults[i] ) { |
| 714 errln("ERROR: Unexpected result from getBaseSkeletons() !\n"); |
| 715 } |
| 716 } |
| 717 |
| 718 // ========= DateTimePatternGenerator sample code in Userguide |
| 719 // set up the generator |
| 720 Locale locale = Locale::getFrench(); |
| 721 status = U_ZERO_ERROR; |
| 722 DateTimePatternGenerator *generator = DateTimePatternGenerator::createInstan
ce( locale, status); |
| 723 |
| 724 // get a pattern for an abbreviated month and day |
| 725 pattern = generator->getBestPattern(UnicodeString("MMMd"), status); |
| 726 SimpleDateFormat formatter(pattern, locale, status); |
| 727 |
| 728 zone = TimeZone::createTimeZone(UnicodeString("GMT")); |
| 729 formatter.setTimeZone(*zone); |
| 730 // use it to format (or parse) |
| 731 UnicodeString formatted; |
| 732 formatted = formatter.format(Calendar::getNow(), formatted, status); |
| 733 // for French, the result is "13 sept." |
| 734 formatted.remove(); |
| 735 // cannot use the result from getNow() because the value change evreyday. |
| 736 testDate= LocaleTest::date(99, 0, 13, 23, 58, 59); |
| 737 formatted = formatter.format(testDate, formatted, status); |
| 738 expectedResult=UnicodeString("14 janv."); |
| 739 if ( formatted != expectedResult ) { |
| 740 errln("ERROR: Userguide sample code result!"); |
| 741 errln(UnicodeString(" Got: ")+ formatted + UnicodeString(" Expected: ")
+ expectedResult); |
| 742 } |
| 743 |
| 744 delete zone; |
| 745 delete output; |
| 746 delete ptrSkeletonEnum; |
| 747 delete ptrBaseSkeletonEnum; |
| 748 delete test; |
| 749 delete generator; |
| 750 } |
| 751 |
| 752 /** |
| 753 * Test handling of options |
| 754 * |
| 755 * For reference, as of ICU 4.3.3, |
| 756 * root/gregorian has |
| 757 * Hm{"H:mm"} |
| 758 * Hms{"H:mm:ss"} |
| 759 * hm{"h:mm a"} |
| 760 * hms{"h:mm:ss a"} |
| 761 * en/gregorian has |
| 762 * Hm{"H:mm"} |
| 763 * Hms{"H:mm:ss"} |
| 764 * hm{"h:mm a"} |
| 765 * be/gregorian has |
| 766 * HHmmss{"HH.mm.ss"} |
| 767 * Hm{"HH.mm"} |
| 768 * hm{"h.mm a"} |
| 769 * hms{"h.mm.ss a"} |
| 770 */ |
| 771 typedef struct DTPtnGenOptionsData { |
| 772 const char *locale; |
| 773 const char *skel; |
| 774 const char *expectedPattern; |
| 775 UDateTimePatternMatchOptions options; |
| 776 } DTPtnGenOptionsData; |
| 777 void IntlTestDateTimePatternGeneratorAPI::testOptions(/*char *par*/) |
| 778 { |
| 779 DTPtnGenOptionsData testData[] = { |
| 780 // locale skel expectedPattern options |
| 781 { "en", "Hmm", "HH:mm", UDATPG_MATCH_NO_OPTIONS }, |
| 782 { "en", "HHmm", "HH:mm", UDATPG_MATCH_NO_OPTIONS }, |
| 783 { "en", "hhmm", "h:mm a", UDATPG_MATCH_NO_OPTIONS }, |
| 784 { "en", "Hmm", "HH:mm", UDATPG_MATCH_HOUR_FIELD_LENGTH }, |
| 785 { "en", "HHmm", "HH:mm", UDATPG_MATCH_HOUR_FIELD_LENGTH }, |
| 786 { "en", "hhmm", "hh:mm a", UDATPG_MATCH_HOUR_FIELD_LENGTH }, |
| 787 { "be", "Hmm", "HH.mm", UDATPG_MATCH_NO_OPTIONS }, |
| 788 { "be", "HHmm", "HH.mm", UDATPG_MATCH_NO_OPTIONS }, |
| 789 { "be", "hhmm", "h.mm a", UDATPG_MATCH_NO_OPTIONS }, |
| 790 { "be", "Hmm", "H.mm", UDATPG_MATCH_HOUR_FIELD_LENGTH }, |
| 791 { "be", "HHmm", "HH.mm", UDATPG_MATCH_HOUR_FIELD_LENGTH }, |
| 792 { "be", "hhmm", "hh.mm a", UDATPG_MATCH_HOUR_FIELD_LENGTH }, |
| 793 }; |
| 794 |
| 795 int count = sizeof(testData) / sizeof(testData[0]); |
| 796 const DTPtnGenOptionsData * testDataPtr = testData; |
| 797 |
| 798 for (; count-- > 0; ++testDataPtr) { |
| 799 UErrorCode status = U_ZERO_ERROR; |
| 800 |
| 801 Locale locale(testDataPtr->locale); |
| 802 UnicodeString skel(testDataPtr->skel); |
| 803 UnicodeString expectedPattern(testDataPtr->expectedPattern); |
| 804 UDateTimePatternMatchOptions options = testDataPtr->options; |
| 805 |
| 806 DateTimePatternGenerator * dtpgen = DateTimePatternGenerator::createInst
ance(locale, status); |
| 807 if (U_FAILURE(status)) { |
| 808 dataerrln("Unable to create DateTimePatternGenerator instance for lo
cale(%s): %s", locale.getName(), u_errorName(status)); |
| 809 delete dtpgen; |
| 810 continue; |
| 811 } |
| 812 UnicodeString pattern = dtpgen->getBestPattern(skel, options, status); |
| 813 if (pattern.compare(expectedPattern) != 0) { |
| 814 errln( UnicodeString("ERROR in getBestPattern, locale ") + UnicodeSt
ring(testDataPtr->locale) + |
| 815 UnicodeString(", skeleton ") + skel + |
| 816 ((options)?UnicodeString(", options!=0"):UnicodeString(", opt
ions==0")) + |
| 817 UnicodeString(", expected pattern ") + expectedPattern + |
| 818 UnicodeString(", got ") + pattern ); |
| 819 } |
| 820 delete dtpgen; |
| 821 } |
| 822 } |
| 823 |
| 824 #endif /* #if !UCONFIG_NO_FORMATTING */ |
OLD | NEW |