8005471: DateFormat: Time zone info is not localized when adapter is CLDR
Reviewed-by: peytoia
This commit is contained in:
parent
d2bce7f267
commit
12ae00bd7d
@ -104,7 +104,7 @@ public abstract class TimeZoneNamesBundle extends OpenListResourceBundle {
|
||||
if (contents == null) {
|
||||
return null;
|
||||
}
|
||||
int clen = Math.min(n, contents.length);
|
||||
int clen = Math.min(n - 1, contents.length);
|
||||
String[] tmpobj = new String[clen+1];
|
||||
tmpobj[0] = key;
|
||||
System.arraycopy(contents, 0, tmpobj, 1, clen);
|
||||
|
96
jdk/test/java/util/TimeZone/CLDRDisplayNamesTest.java
Normal file
96
jdk/test/java/util/TimeZone/CLDRDisplayNamesTest.java
Normal file
@ -0,0 +1,96 @@
|
||||
/*
|
||||
* Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation. Oracle designates this
|
||||
* particular file as subject to the "Classpath" exception as provided
|
||||
* by Oracle in the LICENSE file that accompanied this code.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*/
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @bug 8005471
|
||||
* @run main/othervm -Djava.locale.providers=CLDR CLDRDisplayNamesTest
|
||||
* @summary Make sure that localized time zone names of CLDR are used
|
||||
* if specified.
|
||||
*/
|
||||
|
||||
import java.util.*;
|
||||
import static java.util.TimeZone.*;
|
||||
|
||||
public class CLDRDisplayNamesTest {
|
||||
/*
|
||||
* The first element is a language tag. The rest are localized
|
||||
* display names of America/Los_Angeles copied from the CLDR
|
||||
* resources data. If data change in CLDR, test data below will
|
||||
* need to be changed accordingly.
|
||||
*
|
||||
* Generic names are NOT tested (until they are supported by API).
|
||||
*/
|
||||
static final String[][] CLDR_DATA = {
|
||||
{
|
||||
"ja-JP",
|
||||
"\u30a2\u30e1\u30ea\u30ab\u592a\u5e73\u6d0b\u6a19\u6e96\u6642",
|
||||
"PST",
|
||||
"\u30a2\u30e1\u30ea\u30ab\u592a\u5e73\u6d0b\u590f\u6642\u9593",
|
||||
"PDT",
|
||||
//"\u30a2\u30e1\u30ea\u30ab\u592a\u5e73\u6d0b\u6642\u9593",
|
||||
//"PT"
|
||||
},
|
||||
{
|
||||
"zh-CN",
|
||||
"\u592a\u5e73\u6d0b\u6807\u51c6\u65f6\u95f4",
|
||||
"PST",
|
||||
"\u592a\u5e73\u6d0b\u590f\u4ee4\u65f6\u95f4",
|
||||
"PDT",
|
||||
//"\u7f8e\u56fd\u592a\u5e73\u6d0b\u65f6\u95f4",
|
||||
//"PT"
|
||||
},
|
||||
{
|
||||
"de-DE",
|
||||
"Nordamerikanische Westk\u00fcsten-Winterzeit",
|
||||
"PST",
|
||||
"Nordamerikanische Westk\u00fcsten-Sommerzeit",
|
||||
"PDT",
|
||||
//"Nordamerikanische Westk\u00fcstenzeit",
|
||||
//"PT"
|
||||
},
|
||||
};
|
||||
|
||||
public static void main(String[] args) {
|
||||
TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles");
|
||||
int errors = 0;
|
||||
for (String[] data : CLDR_DATA) {
|
||||
Locale locale = Locale.forLanguageTag(data[0]);
|
||||
for (int i = 1; i < data.length; i++) {
|
||||
int style = ((i % 2) == 1) ? LONG : SHORT;
|
||||
boolean daylight = (i == 3 || i == 4);
|
||||
String name = tz.getDisplayName(daylight, style, locale);
|
||||
if (!data[i].equals(name)) {
|
||||
System.err.printf("error: got '%s' expected '%s' (style=%d, daylight=%s, locale=%s)%n",
|
||||
name, data[i], style, daylight, locale);
|
||||
errors++;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (errors > 0) {
|
||||
throw new RuntimeException("test failed");
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user