Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openjdk-multiarch-jdk8u
Path: blob/aarch64-shenandoah-jdk8u272-b10/jdk/test/java/util/Calendar/CldrFormatNamesTest.java
47182 views
1
/*
2
* Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
*
5
* This code is free software; you can redistribute it and/or modify it
6
* under the terms of the GNU General Public License version 2 only, as
7
* published by the Free Software Foundation.
8
*
9
* This code is distributed in the hope that it will be useful, but WITHOUT
10
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12
* version 2 for more details (a copy is included in the LICENSE file that
13
* accompanied this code).
14
*
15
* You should have received a copy of the GNU General Public License version
16
* 2 along with this work; if not, write to the Free Software Foundation,
17
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18
*
19
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20
* or visit www.oracle.com if you need additional information or have any
21
* questions.
22
*/
23
24
/*
25
* @test
26
* @bug 8004489 8006509
27
* @compile -XDignore.symbol.file CldrFormatNamesTest.java
28
* @run main/othervm -Djava.locale.providers=CLDR CldrFormatNamesTest
29
* @summary Unit test for CLDR FormatData resources
30
*/
31
32
import java.util.*;
33
import static java.util.Calendar.*;
34
import sun.util.locale.provider.*;
35
36
public class CldrFormatNamesTest {
37
private static final Locale ARABIC = new Locale("ar");
38
private static final Locale ZH_HANT = Locale.forLanguageTag("zh-Hant");
39
40
/*
41
* The first element is a Locale followed by key-value pairs
42
* in a FormatData resource bundle. The value type is either
43
* String or String[].
44
*/
45
static final Object[][] CLDR_DATA = {
46
{
47
Locale.JAPAN,
48
"field.zone", "\u30bf\u30a4\u30e0\u30be\u30fc\u30f3",
49
"java.time.japanese.DatePatterns", new String[] {
50
"Gy\u5e74M\u6708d\u65e5EEEE",
51
"Gy\u5e74M\u6708d\u65e5",
52
"Gy\u5e74M\u6708d\u65e5",
53
"Gyy/MM/dd",
54
},
55
"java.time.roc.DatePatterns", new String[] {
56
"Gy\u5e74M\u6708d\u65e5EEEE",
57
"Gy\u5e74M\u6708d\u65e5",
58
"Gy/MM/dd",
59
"Gy/MM/dd",
60
},
61
"calendarname.buddhist", "\u30bf\u30a4\u4ecf\u6559\u66a6",
62
},
63
{
64
Locale.PRC,
65
"field.zone", "\u533a\u57df",
66
"java.time.islamic.DatePatterns", new String[] {
67
"Gy\u5e74M\u6708d\u65e5EEEE",
68
"Gy\u5e74M\u6708d\u65e5",
69
"Gy\u5e74M\u6708d\u65e5",
70
"Gyy-MM-dd",
71
},
72
"calendarname.islamic", "\u4f0a\u65af\u5170\u65e5\u5386",
73
},
74
{
75
Locale.GERMANY,
76
"field.dayperiod", "Tagesh\u00e4lfte",
77
"java.time.islamic.DatePatterns", new String[] {
78
"EEEE d. MMMM y G",
79
"d. MMMM y G",
80
"d. MMM y G",
81
"d.M.y G",
82
},
83
"calendarname.islamic", "Islamischer Kalender",
84
},
85
};
86
87
// Islamic calendar symbol names in ar
88
private static final String[] ISLAMIC_MONTH_NAMES = {
89
"\u0645\u062d\u0631\u0645",
90
"\u0635\u0641\u0631",
91
"\u0631\u0628\u064a\u0639 \u0627\u0644\u0623\u0648\u0644",
92
"\u0631\u0628\u064a\u0639 \u0627\u0644\u0622\u062e\u0631",
93
"\u062c\u0645\u0627\u062f\u0649 \u0627\u0644\u0623\u0648\u0644\u0649",
94
"\u062c\u0645\u0627\u062f\u0649 \u0627\u0644\u0622\u062e\u0631\u0629",
95
"\u0631\u062c\u0628",
96
"\u0634\u0639\u0628\u0627\u0646",
97
"\u0631\u0645\u0636\u0627\u0646",
98
"\u0634\u0648\u0627\u0644",
99
"\u0630\u0648 \u0627\u0644\u0642\u0639\u062f\u0629",
100
"\u0630\u0648 \u0627\u0644\u062d\u062c\u0629",
101
};
102
private static final String[] ISLAMIC_ERA_NAMES = {
103
"",
104
"\u0647\u0640",
105
};
106
107
// Minguo calendar symbol names in zh_Hant
108
private static final String[] ROC_ERA_NAMES = {
109
"\u6c11\u570b\u524d",
110
"\u6c11\u570b",
111
};
112
113
private static int errors = 0;
114
115
// This test is CLDR data dependent.
116
public static void main(String[] args) {
117
for (Object[] data : CLDR_DATA) {
118
Locale locale = (Locale) data[0];
119
ResourceBundle rb = LocaleProviderAdapter.getResourceBundleBased()
120
.getLocaleResources(locale).getJavaTimeFormatData();
121
for (int i = 1; i < data.length; ) {
122
String key = (String) data[i++];
123
Object expected = data[i++];
124
if (rb.containsKey(key)) {
125
Object value = rb.getObject(key);
126
if (expected instanceof String) {
127
if (!expected.equals(value)) {
128
errors++;
129
System.err.printf("error: key='%s', got '%s' expected '%s'%n",
130
key, value, expected);
131
}
132
} else if (expected instanceof String[]) {
133
try {
134
if (!Arrays.equals((Object[]) value, (Object[]) expected)) {
135
errors++;
136
System.err.printf("error: key='%s', got '%s' expected '%s'%n",
137
key, Arrays.asList((Object[])value),
138
Arrays.asList((Object[])expected));
139
}
140
} catch (Exception e) {
141
errors++;
142
e.printStackTrace();
143
}
144
}
145
} else {
146
errors++;
147
System.err.println("No resource for " + key);
148
}
149
}
150
}
151
152
// test Islamic calendar names in Arabic
153
testSymbolNames(ARABIC, "islamic", ISLAMIC_MONTH_NAMES, MONTH, LONG, "month");
154
testSymbolNames(ARABIC, "islamic", ISLAMIC_ERA_NAMES, ERA, SHORT, "era");
155
156
// test ROC (Minguo) calendar names in zh-Hant
157
testSymbolNames(ZH_HANT, "roc", ROC_ERA_NAMES, ERA, SHORT, "era");
158
159
if (errors > 0) {
160
throw new RuntimeException("test failed");
161
}
162
}
163
164
private static void testSymbolNames(Locale locale, String calType, String[] expected,
165
int field, int style, String fieldName) {
166
for (int i = 0; i < expected.length; i++) {
167
String expt = expected[i];
168
String name = CalendarDataUtility.retrieveJavaTimeFieldValueName(calType, field, i, style, locale);
169
if (!expt.equals(name)) {
170
errors++;
171
System.err.printf("error: wrong %s %s name in %s: value=%d, got='%s', expected='%s'%n",
172
calType, fieldName, locale, i, name, expt);
173
}
174
}
175
}
176
}
177
178