1 /***************************************************************************************** 2 * 3 * Copyright (C) 1996-2014, International Business Machines 4 * Corporation and others. All Rights Reserved. 5 **/ 6 7 /** 8 * Port From: JDK 1.4b1 : java.text.Format.IntlTestDateFormatSymbols 9 * Source File: java/text/format/IntlTestDateFormatSymbols.java 10 **/ 11 12 /* 13 @test 1.4 98/03/06 14 @summary test International Date Format Symbols 15 */ 16 17 package com.ibm.icu.dev.test.format; 18 19 import java.util.Locale; 20 21 import com.ibm.icu.text.DateFormatSymbols; 22 import com.ibm.icu.util.Calendar; 23 import com.ibm.icu.util.ULocale; 24 25 public class IntlTestDateFormatSymbols extends com.ibm.icu.dev.test.TestFmwk 26 { main(String[] args)27 public static void main(String[] args) throws Exception { 28 new IntlTestDateFormatSymbols().run(args); 29 } 30 31 // Test getMonths TestGetMonths()32 public void TestGetMonths() 33 { 34 final String[] month; 35 DateFormatSymbols symbol; 36 37 symbol=new DateFormatSymbols(Locale.getDefault()); 38 39 month=symbol.getMonths(); 40 int cnt = month.length; 41 42 logln("size = " + cnt); 43 44 for (int i=0; i<cnt; ++i) 45 { 46 logln(month[i]); 47 } 48 } 49 TestGetMonths2()50 public void TestGetMonths2() 51 { 52 DateFormatSymbols symbol; 53 symbol=new DateFormatSymbols(Locale.getDefault()); 54 55 int[] context = {DateFormatSymbols.STANDALONE, DateFormatSymbols.FORMAT}; 56 int[] width = {DateFormatSymbols.WIDE, DateFormatSymbols.ABBREVIATED, DateFormatSymbols.NARROW}; 57 58 for (int i = 0; i < context.length; i++) { 59 for (int j = 0; j < width.length; j++) { 60 String[] month =symbol.getMonths(context[i],width[j]); 61 int cnt = month.length; 62 63 logln("size = " + cnt); 64 65 for (int k = 0; k < month.length; k++) { 66 logln(month[k]); 67 } 68 } 69 } 70 } 71 TestGetWeekdays2()72 public void TestGetWeekdays2(){ 73 DateFormatSymbols symbol; 74 symbol=new DateFormatSymbols(Locale.getDefault()); 75 76 int[] context = {DateFormatSymbols.STANDALONE, DateFormatSymbols.FORMAT}; 77 int[] width = {DateFormatSymbols.WIDE, DateFormatSymbols.ABBREVIATED, DateFormatSymbols.NARROW}; 78 79 for (int i = 0; i < context.length; i++) { 80 for (int j = 0; j < width.length; j++) { 81 String[] wd =symbol.getWeekdays(context[i],width[j]); 82 int cnt = wd.length; 83 84 logln("size = " + cnt); 85 86 for (int k = 0; k < wd.length; k++) { 87 logln(wd[k]); 88 } 89 } 90 } 91 92 } 93 TestGetEraNames()94 public void TestGetEraNames(){ 95 DateFormatSymbols symbol; 96 symbol=new DateFormatSymbols(Locale.getDefault()); 97 String[] s = symbol.getEraNames(); 98 for (int i = 0; i < s.length; i++) { 99 logln(s[i]); 100 } 101 102 } 103 UnicodeStringsArePrefixes(String[] prefixArray, String[] baseArray)104 private boolean UnicodeStringsArePrefixes(String[] prefixArray, String[] baseArray){ 105 if (prefixArray.length != baseArray.length) { 106 return false; 107 } 108 int i; 109 for (i = 0; i < baseArray.length; i++) { 110 if (!baseArray[i].startsWith(prefixArray[i])) { 111 errln("ERROR: Mismatch example, index " + i + ": expect prefix \"" + prefixArray[i] + "\" of base \"" + baseArray[i] + "\"."); 112 return false; 113 } 114 } 115 return true; 116 } 117 118 119 // Test the API of DateFormatSymbols; primarily a simple get/set set. TestSymbols()120 public void TestSymbols() 121 { 122 DateFormatSymbols fr = new DateFormatSymbols(Locale.FRENCH); 123 DateFormatSymbols fr2 = new DateFormatSymbols(Locale.FRENCH); 124 125 DateFormatSymbols en = new DateFormatSymbols(Locale.ENGLISH); 126 127 DateFormatSymbols zhChiCal = new DateFormatSymbols(new ULocale("zh@calendar=chinese")); 128 129 if(en.equals(fr)) { 130 errln("ERROR: English DateFormatSymbols equal to French"); 131 } 132 133 // just do some VERY basic tests to make sure that get/set work 134 135 long count; 136 final String[] eras = en.getEras(); 137 fr.setEras(eras); 138 final String[] eras1 = fr.getEras(); 139 count = eras.length; 140 if( count != eras1.length) { 141 errln("ERROR: setEras() failed (different size array)"); 142 } 143 else { 144 for(int i = 0; i < count; i++) { 145 if(! eras[i].equals(eras1[i])) { 146 errln("ERROR: setEras() failed (different string values)"); 147 } 148 } 149 } 150 151 152 final String[] months = en.getMonths(); 153 fr.setMonths(months); 154 final String[] months1 = fr.getMonths(); 155 count = months.length; 156 if( count != months1.length) { 157 errln("ERROR: setMonths() failed (different size array)"); 158 } 159 else { 160 for(int i = 0; i < count; i++) { 161 if(! months[i].equals(months1[i])) { 162 errln("ERROR: setMonths() failed (different string values)"); 163 } 164 } 165 } 166 167 final String[] shortMonths = en.getShortMonths(); 168 fr.setShortMonths(shortMonths); 169 final String[] shortMonths1 = fr.getShortMonths(); 170 count = shortMonths.length; 171 if( count != shortMonths1.length) { 172 errln("ERROR: setShortMonths() failed (different size array)"); 173 } 174 else { 175 for(int i = 0; i < count; i++) { 176 if(! shortMonths[i].equals(shortMonths1[i])) { 177 errln("ERROR: setShortMonths() failed (different string values)"); 178 } 179 } 180 } 181 182 final String[] wideMonths = en.getMonths(DateFormatSymbols.FORMAT,DateFormatSymbols.WIDE); 183 fr2.setMonths(wideMonths,DateFormatSymbols.FORMAT,DateFormatSymbols.WIDE); 184 final String[] wideMonths1 = fr2.getMonths(DateFormatSymbols.FORMAT,DateFormatSymbols.WIDE); 185 count = wideMonths.length; 186 if( count != wideMonths1.length) { 187 errln("ERROR: setMonths(FORMAT,WIDE) failed (different size array)"); 188 } 189 else { 190 for(int i = 0; i < count; i++) { 191 if(! wideMonths[i].equals(wideMonths1[i])) { 192 errln("ERROR: setMonths(FORMAT,WIDE) failed (different string values)"); 193 } 194 } 195 } 196 197 final String[] abbrMonths = en.getMonths(DateFormatSymbols.FORMAT,DateFormatSymbols.ABBREVIATED); 198 fr2.setMonths(abbrMonths,DateFormatSymbols.FORMAT,DateFormatSymbols.ABBREVIATED); 199 final String[] abbrMonths1 = fr2.getMonths(DateFormatSymbols.FORMAT,DateFormatSymbols.ABBREVIATED); 200 count = abbrMonths.length; 201 if( count != abbrMonths1.length) { 202 errln("ERROR: setMonths(FORMAT,ABBREVIATED) failed (different size array)"); 203 } 204 else { 205 for(int i = 0; i < count; i++) { 206 if(! abbrMonths[i].equals(abbrMonths1[i])) { 207 errln("ERROR: setMonths(FORMAT,ABBREVIATED) failed (different string values)"); 208 } 209 } 210 } 211 212 final String[] narrowMonths = en.getMonths(DateFormatSymbols.FORMAT,DateFormatSymbols.NARROW); 213 fr.setMonths(narrowMonths,DateFormatSymbols.FORMAT,DateFormatSymbols.NARROW); 214 final String[] narrowMonths1 = fr.getMonths(DateFormatSymbols.FORMAT,DateFormatSymbols.NARROW); 215 count = narrowMonths.length; 216 if( count != narrowMonths1.length) { 217 errln("ERROR: setMonths(FORMAT,NARROW) failed (different size array)"); 218 } 219 else { 220 for(int i = 0; i < count; i++) { 221 if(! narrowMonths[i].equals(narrowMonths1[i])) { 222 errln("ERROR: setMonths(FORMAT,NARROW) failed (different string values)"); 223 } 224 } 225 } 226 227 final String[] standaloneMonths = en.getMonths(DateFormatSymbols.STANDALONE,DateFormatSymbols.WIDE); 228 fr.setMonths(standaloneMonths,DateFormatSymbols.STANDALONE,DateFormatSymbols.WIDE); 229 final String[] standaloneMonths1 = fr.getMonths(DateFormatSymbols.STANDALONE,DateFormatSymbols.WIDE); 230 count = standaloneMonths.length; 231 if( count != standaloneMonths1.length) { 232 errln("ERROR: setMonths(STANDALONE,WIDE) failed (different size array)"); 233 } 234 else { 235 for(int i = 0; i < count; i++) { 236 if(! standaloneMonths[i].equals(standaloneMonths1[i])) { 237 errln("ERROR: setMonths(STANDALONE,WIDE) failed (different string values)"); 238 } 239 } 240 } 241 242 final String[] standaloneShortMonths = en.getMonths(DateFormatSymbols.STANDALONE,DateFormatSymbols.ABBREVIATED); 243 fr.setMonths(standaloneShortMonths,DateFormatSymbols.STANDALONE,DateFormatSymbols.ABBREVIATED); 244 final String[] standaloneShortMonths1 = fr.getMonths(DateFormatSymbols.STANDALONE,DateFormatSymbols.ABBREVIATED); 245 count = standaloneShortMonths.length; 246 if( count != standaloneShortMonths1.length) { 247 errln("ERROR: setMonths(STANDALONE,ABBREVIATED) failed (different size array)"); 248 } 249 else { 250 for(int i = 0; i < count; i++) { 251 if(! standaloneShortMonths[i].equals(standaloneShortMonths1[i])) { 252 errln("ERROR: setMonths(STANDALONE,ABBREVIATED) failed (different string values)"); 253 } 254 } 255 } 256 257 final String[] standaloneNarrowMonths = en.getMonths(DateFormatSymbols.STANDALONE,DateFormatSymbols.NARROW); 258 fr.setMonths(standaloneNarrowMonths,DateFormatSymbols.STANDALONE,DateFormatSymbols.NARROW); 259 final String[] standaloneNarrowMonths1 = fr.getMonths(DateFormatSymbols.STANDALONE,DateFormatSymbols.NARROW); 260 count = standaloneNarrowMonths.length; 261 if( count != standaloneNarrowMonths1.length) { 262 errln("ERROR: setMonths(STANDALONE,NARROW) failed (different size array)"); 263 } 264 else { 265 for(int i = 0; i < count; i++) { 266 if(! standaloneNarrowMonths[i].equals(standaloneNarrowMonths1[i])) { 267 errln("ERROR: setMonths(STANDALONE,NARROW) failed (different string values)"); 268 } 269 } 270 } 271 272 final String[] weekdays = en.getWeekdays(); 273 fr.setWeekdays(weekdays); 274 final String[] weekdays1 = fr.getWeekdays(); 275 count = weekdays.length; 276 if( count != weekdays1.length) { 277 errln("ERROR: setWeekdays() failed (different size array)"); 278 } 279 else { 280 for(int i = 0; i < count; i++) { 281 if(! weekdays[i].equals(weekdays1[i])) { 282 errln("ERROR: setWeekdays() failed (different string values)"); 283 } 284 } 285 } 286 287 final String[] shortWeekdays = en.getShortWeekdays(); 288 fr.setShortWeekdays(shortWeekdays); 289 final String[] shortWeekdays1 = fr.getShortWeekdays(); 290 count = shortWeekdays.length; 291 if( count != shortWeekdays1.length) { 292 errln("ERROR: setShortWeekdays() failed (different size array)"); 293 } 294 else { 295 for(int i = 0; i < count; i++) { 296 if(! shortWeekdays[i].equals(shortWeekdays1[i])) { 297 errln("ERROR: setShortWeekdays() failed (different string values)"); 298 } 299 } 300 } 301 302 final String[] wideWeekdays = en.getWeekdays(DateFormatSymbols.FORMAT,DateFormatSymbols.WIDE); 303 fr2.setWeekdays(wideWeekdays,DateFormatSymbols.FORMAT,DateFormatSymbols.WIDE); 304 final String[] wideWeekdays1 = fr2.getWeekdays(DateFormatSymbols.FORMAT,DateFormatSymbols.WIDE); 305 count = wideWeekdays.length; 306 if( count != wideWeekdays1.length) { 307 errln("ERROR: setWeekdays(FORMAT,WIDE) failed (different size array)"); 308 } 309 else { 310 for(int i = 0; i < count; i++) { 311 if(! wideWeekdays[i].equals(wideWeekdays1[i])) { 312 errln("ERROR: setWeekdays(FORMAT,WIDE) failed (different string values)"); 313 } 314 } 315 } 316 317 final String[] abbrWeekdays = en.getWeekdays(DateFormatSymbols.FORMAT,DateFormatSymbols.ABBREVIATED); 318 final String[] shorterWeekdays = en.getWeekdays(DateFormatSymbols.FORMAT,DateFormatSymbols.SHORT); 319 if ( !UnicodeStringsArePrefixes(shorterWeekdays, abbrWeekdays) ) { 320 errln("ERROR: English format short weekday names don't match prefixes of format abbreviated names"); 321 } 322 fr2.setWeekdays(abbrWeekdays,DateFormatSymbols.FORMAT,DateFormatSymbols.ABBREVIATED); 323 final String[] abbrWeekdays1 = fr2.getWeekdays(DateFormatSymbols.FORMAT,DateFormatSymbols.ABBREVIATED); 324 count = abbrWeekdays.length; 325 if( count != abbrWeekdays1.length) { 326 errln("ERROR: setWeekdays(FORMAT,ABBREVIATED) failed (different size array)"); 327 } 328 else { 329 for(int i = 0; i < count; i++) { 330 if(! abbrWeekdays[i].equals(abbrWeekdays1[i])) { 331 errln("ERROR: setWeekdays(FORMAT,ABBREVIATED) failed (different string values)"); 332 } 333 } 334 } 335 336 final String[] narrowWeekdays = en.getWeekdays(DateFormatSymbols.FORMAT,DateFormatSymbols.NARROW); 337 fr.setWeekdays(narrowWeekdays,DateFormatSymbols.FORMAT,DateFormatSymbols.NARROW); 338 final String[] narrowWeekdays1 = fr.getWeekdays(DateFormatSymbols.FORMAT,DateFormatSymbols.NARROW); 339 count = narrowWeekdays.length; 340 if( count != narrowWeekdays1.length) { 341 errln("ERROR: setWeekdays(FORMAT,NARROW) failed (different size array)"); 342 } 343 else { 344 for(int i = 0; i < count; i++) { 345 if(! narrowWeekdays[i].equals(narrowWeekdays1[i])) { 346 errln("ERROR: setWeekdays(FORMAT,NARROW) failed (different string values)"); 347 } 348 } 349 } 350 351 final String[] standaloneWeekdays = en.getWeekdays(DateFormatSymbols.STANDALONE,DateFormatSymbols.WIDE); 352 fr.setWeekdays(standaloneWeekdays,DateFormatSymbols.STANDALONE,DateFormatSymbols.WIDE); 353 final String[] standaloneWeekdays1 = fr.getWeekdays(DateFormatSymbols.STANDALONE,DateFormatSymbols.WIDE); 354 count = standaloneWeekdays.length; 355 if( count != standaloneWeekdays1.length) { 356 errln("ERROR: setWeekdays(STANDALONE,WIDE) failed (different size array)"); 357 } 358 else { 359 for(int i = 0; i < count; i++) { 360 if(! standaloneWeekdays[i].equals(standaloneWeekdays1[i])) { 361 errln("ERROR: setWeekdays(STANDALONE,WIDE) failed (different string values)"); 362 } 363 } 364 } 365 366 final String[] standaloneShortWeekdays = en.getWeekdays(DateFormatSymbols.STANDALONE,DateFormatSymbols.ABBREVIATED); 367 final String[] standaloneShorterWeekdays = en.getWeekdays(DateFormatSymbols.STANDALONE,DateFormatSymbols.SHORT); 368 if ( !UnicodeStringsArePrefixes(standaloneShorterWeekdays, standaloneShortWeekdays) ) { 369 errln("ERROR: English standalone short weekday names don't match prefixes of standalone abbreviated names"); 370 } 371 fr.setWeekdays(standaloneShortWeekdays,DateFormatSymbols.STANDALONE,DateFormatSymbols.ABBREVIATED); 372 final String[] standaloneShortWeekdays1 = fr.getWeekdays(DateFormatSymbols.STANDALONE,DateFormatSymbols.ABBREVIATED); 373 count = standaloneShortWeekdays.length; 374 if( count != standaloneShortWeekdays1.length) { 375 errln("ERROR: setWeekdays(STANDALONE,ABBREVIATED) failed (different size array)"); 376 } 377 else { 378 for(int i = 0; i < count; i++) { 379 if(! standaloneShortWeekdays[i].equals(standaloneShortWeekdays1[i])) { 380 errln("ERROR: setWeekdays(STANDALONE,ABBREVIATED) failed (different string values)"); 381 } 382 } 383 } 384 385 final String[] standaloneNarrowWeekdays = en.getWeekdays(DateFormatSymbols.STANDALONE,DateFormatSymbols.NARROW); 386 fr.setWeekdays(standaloneNarrowWeekdays,DateFormatSymbols.STANDALONE,DateFormatSymbols.NARROW); 387 final String[] standaloneNarrowWeekdays1 = fr.getWeekdays(DateFormatSymbols.STANDALONE,DateFormatSymbols.NARROW); 388 count = standaloneNarrowWeekdays.length; 389 if( count != standaloneNarrowWeekdays1.length) { 390 errln("ERROR: setWeekdays(STANDALONE,NARROW) failed (different size array)"); 391 } 392 else { 393 for(int i = 0; i < count; i++) { 394 if(! standaloneNarrowWeekdays[i].equals(standaloneNarrowWeekdays1[i])) { 395 errln("ERROR: setWeekdays(STANDALONE,NARROW) failed (different string values)"); 396 } 397 } 398 } 399 400 final String[] wideQuarters = en.getQuarters(DateFormatSymbols.FORMAT,DateFormatSymbols.WIDE); 401 fr2.setQuarters(wideQuarters,DateFormatSymbols.FORMAT,DateFormatSymbols.WIDE); 402 final String[] wideQuarters1 = fr2.getQuarters(DateFormatSymbols.FORMAT,DateFormatSymbols.WIDE); 403 count = wideQuarters.length; 404 if( count != wideQuarters1.length) { 405 errln("ERROR: setQuarters(FORMAT, WIDE) failed (different size array)"); 406 } 407 else { 408 for(int i = 0; i < count; i++) { 409 if(! wideQuarters[i].equals(wideQuarters1[i])) { 410 errln("ERROR: setQuarters(FORMAT, WIDE) failed (different string values)"); 411 } 412 } 413 } 414 415 final String[] abbrQuarters = en.getQuarters(DateFormatSymbols.FORMAT,DateFormatSymbols.ABBREVIATED); 416 fr2.setQuarters(abbrQuarters,DateFormatSymbols.FORMAT,DateFormatSymbols.ABBREVIATED); 417 final String[] abbrQuarters1 = fr2.getQuarters(DateFormatSymbols.FORMAT,DateFormatSymbols.ABBREVIATED); 418 count = abbrQuarters.length; 419 if( count != abbrQuarters1.length) { 420 errln("ERROR: setQuarters(FORMAT, ABBREVIATED) failed (different size array)"); 421 } 422 else { 423 for(int i = 0; i < count; i++) { 424 if(! abbrQuarters[i].equals(abbrQuarters1[i])) { 425 errln("ERROR: setQuarters(FORMAT, ABBREVIATED) failed (different string values)"); 426 } 427 } 428 } 429 430 final String[] standaloneQuarters = en.getQuarters(DateFormatSymbols.STANDALONE,DateFormatSymbols.WIDE); 431 fr.setQuarters(standaloneQuarters,DateFormatSymbols.STANDALONE,DateFormatSymbols.WIDE); 432 final String[] standaloneQuarters1 = fr.getQuarters(DateFormatSymbols.STANDALONE,DateFormatSymbols.WIDE); 433 count = standaloneQuarters.length; 434 if( count != standaloneQuarters1.length) { 435 errln("ERROR: setQuarters(STANDALONE, WIDE) failed (different size array)"); 436 } 437 else { 438 for(int i = 0; i < count; i++) { 439 if(! standaloneQuarters[i].equals(standaloneQuarters1[i])) { 440 errln("ERROR: setQuarters(STANDALONE, WIDE) failed (different string values)"); 441 } 442 } 443 } 444 445 final String[] standaloneShortQuarters = en.getQuarters(DateFormatSymbols.STANDALONE,DateFormatSymbols.ABBREVIATED); 446 fr.setQuarters(standaloneShortQuarters,DateFormatSymbols.STANDALONE,DateFormatSymbols.ABBREVIATED); 447 final String[] standaloneShortQuarters1 = fr.getQuarters(DateFormatSymbols.STANDALONE,DateFormatSymbols.ABBREVIATED); 448 count = standaloneShortQuarters.length; 449 if( count != standaloneShortQuarters1.length) { 450 errln("ERROR: setQuarters(STANDALONE, ABBREVIATED) failed (different size array)"); 451 } 452 else { 453 for(int i = 0; i < count; i++) { 454 if(! standaloneShortQuarters[i].equals(standaloneShortQuarters1[i])) { 455 errln("ERROR: setQuarters(STANDALONE, ABBREVIATED) failed (different string values)"); 456 } 457 } 458 } 459 460 final String[] ampms = en.getAmPmStrings(); 461 fr.setAmPmStrings(ampms); 462 final String[] ampms1 = fr.getAmPmStrings(); 463 count = ampms.length; 464 if( count != ampms1.length) { 465 errln("ERROR: setAmPmStrings() failed (different size array)"); 466 } 467 else { 468 for(int i = 0; i < count; i++) { 469 if(! ampms[i].equals(ampms1[i])) { 470 errln("ERROR: setAmPmStrings() failed (different string values)"); 471 } 472 } 473 } 474 475 long rowCount = 0, columnCount = 0; 476 final String[][] strings = en.getZoneStrings(); 477 fr.setZoneStrings(strings); 478 final String[][] strings1 = fr.getZoneStrings(); 479 rowCount = strings.length; 480 for(int i = 0; i < rowCount; i++) { 481 columnCount = strings[i].length; 482 for(int j = 0; j < columnCount; j++) { 483 if( strings[i][j] != strings1[i][j] ) { 484 errln("ERROR: setZoneStrings() failed"); 485 } 486 } 487 } 488 489 // final String pattern = DateFormatSymbols.getPatternChars(); 490 491 String localPattern; // pat1, pat2; //The variable is never used 492 localPattern = en.getLocalPatternChars(); 493 fr.setLocalPatternChars(localPattern); 494 if(! en.getLocalPatternChars().equals(fr.getLocalPatternChars())) { 495 errln("ERROR: setLocalPatternChars() failed"); 496 } 497 498 499 //DateFormatSymbols foo = new DateFormatSymbols(); //The variable is never used 500 501 en = (DateFormatSymbols) fr.clone(); 502 503 if(! en.equals(fr)) { 504 errln("ERROR: Clone failed"); 505 } 506 507 final String[] shortYearNames = zhChiCal.getYearNames(DateFormatSymbols.FORMAT, DateFormatSymbols.ABBREVIATED); 508 final String[] narrowYearNames = zhChiCal.getYearNames(DateFormatSymbols.STANDALONE, DateFormatSymbols.NARROW); 509 if (shortYearNames == null || shortYearNames.length != 60 || 510 !shortYearNames[0].equals("\u7532\u5B50") || !shortYearNames[59].equals("\u7678\u4EA5")) { 511 errln("ERROR: invalid FORMAT/ABBREVIATED year names from zh@calendar=chinese"); 512 } 513 if (narrowYearNames == null || narrowYearNames.length != 60 || 514 !narrowYearNames[0].equals("\u7532\u5B50") || !narrowYearNames[59].equals("\u7678\u4EA5")) { 515 errln("ERROR: invalid STANDALONE/NARROW year names from zh@calendar=chinese"); 516 } 517 final String[] enGregoYearNames = en.getYearNames(DateFormatSymbols.FORMAT, DateFormatSymbols.ABBREVIATED); 518 if (enGregoYearNames != null) { 519 errln("ERROR: yearNames not null for en"); 520 } 521 522 final String[] shortZodiacNames = zhChiCal.getZodiacNames(DateFormatSymbols.FORMAT, DateFormatSymbols.ABBREVIATED); 523 if (shortZodiacNames == null || shortZodiacNames.length != 12 || 524 !shortZodiacNames[0].equals("\u9F20") || !shortZodiacNames[11].equals("\u732A")) { 525 errln("ERROR: invalid FORMAT/ABBREVIATED zodiac names from zh@calendar=chinese"); 526 } 527 528 final String[] newZodiacNames = {"Rat","Ox","Tiger","Rabbit","Dragon","Snake","Horse","Goat","Monkey","Rooster","Dog","Pig"}; 529 zhChiCal.setZodiacNames(newZodiacNames, DateFormatSymbols.FORMAT, DateFormatSymbols.ABBREVIATED); 530 final String[] testZodiacNames = zhChiCal.getZodiacNames(DateFormatSymbols.FORMAT, DateFormatSymbols.ABBREVIATED); 531 if (testZodiacNames == null || testZodiacNames.length != 12 || 532 !testZodiacNames[0].equals("Rat") || !testZodiacNames[11].equals("Pig")) { 533 errln("ERROR: setZodiacNames then getZodiacNames not working for zh@calendar=chinese"); 534 } 535 536 String leapMonthPatternFmtAbbrev = zhChiCal.getLeapMonthPattern(DateFormatSymbols.FORMAT, DateFormatSymbols.ABBREVIATED); 537 if (leapMonthPatternFmtAbbrev == null || !leapMonthPatternFmtAbbrev.equals("\u95F0{0}")) { 538 errln("ERROR: invalid FORMAT/ABBREVIATED leapMonthPattern from zh@calendar=chinese"); 539 } 540 } 541 TestConstructorWithCalendar()542 public void TestConstructorWithCalendar() { 543 ULocale[] TestLocales = { 544 new ULocale("en_US@calendar=gregorian"), 545 new ULocale("ja_JP@calendar=japanese"), 546 new ULocale("th_TH@calendar=buddhist"), 547 new ULocale("zh_TW@calendar=roc"), 548 new ULocale("ar_IR@calendar=persian"), 549 new ULocale("ar_EG@calendar=islamic"), 550 new ULocale("he_IL@calendar=hebrew"), 551 new ULocale("zh_CN@calendar=chinese"), 552 new ULocale("hi_IN@calendar=indian"), 553 new ULocale("ar_EG@calendar=coptic"), 554 new ULocale("am_ET@calendar=ethiopic"), 555 }; 556 557 int i; 558 559 // calendars 560 Calendar[] calendars = new Calendar[TestLocales.length]; 561 for (i = 0; i < TestLocales.length; i++) { 562 calendars[i] = Calendar.getInstance(TestLocales[i]); 563 } 564 565 // Creates an instance from a base locale + calendar 566 DateFormatSymbols[] symbols = new DateFormatSymbols[TestLocales.length]; 567 for (i = 0; i < TestLocales.length; i++) { 568 symbols[i] = new DateFormatSymbols(calendars[i], new ULocale(TestLocales[i].getBaseName())); 569 } 570 571 // Compare an instance created from a base locale + calendar 572 // with an instance created from its base locale + calendar class 573 for (i = 0; i < TestLocales.length; i++) { 574 DateFormatSymbols dfs = new DateFormatSymbols(calendars[i].getClass(), new ULocale(TestLocales[i].getBaseName())); 575 if (!dfs.equals(symbols[i])) { 576 errln("FAIL: DateFormatSymbols created from a base locale and calendar instance" 577 + " is different from one created from the same base locale and calendar class - " 578 + TestLocales[i]); 579 } 580 } 581 582 } 583 } 584