Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/jdk/sun/util/resources/cldr/Bug8204603.java
41153 views
1
/*
2
* Copyright (c) 2018, 2020, 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 8204603 8251317
27
* @summary Test that correct data is retrieved for zh_CN and zh_TW locales
28
* and CLDR provider supports all locales for which aliases exist.
29
* @modules java.base/sun.util.locale.provider
30
* jdk.localedata
31
* @run main Bug8204603
32
*/
33
34
import java.text.DateFormatSymbols;
35
import java.text.DecimalFormatSymbols;
36
import java.util.Arrays;
37
import java.util.Calendar;
38
import java.util.List;
39
import java.util.Locale;
40
import java.util.Map;
41
import java.util.Set;
42
import java.util.stream.Collectors;
43
44
import sun.util.locale.provider.LocaleProviderAdapter;
45
46
/**
47
* This test is dependent on a particular version of CLDR data.
48
*/
49
public class Bug8204603 {
50
51
/**
52
* List of sample locales for which CLDR provides alias Mappings. e.g alias of
53
* zh-HK is zh-Hant-HK
54
*/
55
private static final List<Locale> ALIAS_LOCALES = List.of(
56
Locale.forLanguageTag("az-AZ"), Locale.forLanguageTag("bs-BA"),
57
Locale.forLanguageTag("ha-Latn-NG"), Locale.forLanguageTag("i-lux"),
58
Locale.forLanguageTag("kk-Cyrl-KZ"), Locale.forLanguageTag("ks-Arab-IN"),
59
Locale.forLanguageTag("ky-Cyrl-KG"), Locale.forLanguageTag("lb"),
60
Locale.forLanguageTag("lb"), Locale.forLanguageTag("mn-Cyrl-MN"),
61
Locale.forLanguageTag("mo"),
62
Locale.forLanguageTag("ms-Latn-MY"),
63
Locale.forLanguageTag("pa-IN"), Locale.forLanguageTag("pa-PK"),
64
Locale.forLanguageTag("scc"), Locale.forLanguageTag("scr"),
65
Locale.forLanguageTag("sh"), Locale.forLanguageTag("shi-MA"),
66
Locale.forLanguageTag("sr-RS"),
67
Locale.forLanguageTag("tl"),
68
Locale.forLanguageTag("tzm-Latn-MA"), Locale.forLanguageTag("ug-Arab-CN"),
69
Locale.forLanguageTag("uz-AF"), Locale.forLanguageTag("uz-UZ"),
70
Locale.forLanguageTag("vai-LR"), Locale.forLanguageTag("vai-LR"),
71
Locale.forLanguageTag("yue-CN"), Locale.forLanguageTag("yue-HK"),
72
Locale.forLanguageTag("zh-CN"), Locale.forLanguageTag("zh-HK"),
73
Locale.forLanguageTag("zh-MO"),
74
Locale.forLanguageTag("zh-TW"));
75
private static final Map<Locale, String> CALENDAR_DATA_MAP = Map.of(
76
Locale.forLanguageTag("zh-CN"), "\u5468\u65E5",
77
Locale.forLanguageTag("zh-TW"), "\u9031\u65E5");
78
private static final Map<Locale, String> NAN_DATA_MAP = Map.of(
79
Locale.forLanguageTag("zh-CN"), "NaN",
80
Locale.forLanguageTag("zh-TW"), "\u975E\u6578\u503C");
81
82
public static void main(String[] args) {
83
testCldrSupportedLocales();
84
CALENDAR_DATA_MAP.forEach(Bug8204603::testCalendarData);
85
NAN_DATA_MAP.forEach(Bug8204603::testNanData);
86
}
87
88
/**
89
* tests that CLDR provider should return true for alias locales.
90
*/
91
private static void testCldrSupportedLocales() {
92
LocaleProviderAdapter cldr = LocaleProviderAdapter.forType(LocaleProviderAdapter.Type.CLDR);
93
Set<String> langtags = Arrays.stream(cldr.getAvailableLocales())
94
.map(Locale::toLanguageTag)
95
.collect(Collectors.toSet());
96
ALIAS_LOCALES.stream()
97
.filter(loc -> !cldr.isSupportedProviderLocale(loc, langtags))
98
.findAny()
99
.ifPresent(l -> {
100
throw new RuntimeException("Locale " + l
101
+ " is not supported by CLDR locale provider");
102
});
103
}
104
105
private static void testCalendarData(Locale loc, String expected) {
106
DateFormatSymbols dfs = DateFormatSymbols.getInstance(loc);
107
String[] shortDays = dfs.getShortWeekdays();
108
String actual = shortDays[Calendar.SUNDAY];
109
if (!actual.equals(expected)) {
110
throw new RuntimeException("Calendar data mismatch for locale: "
111
+ loc + ", expected is: " + expected + ", actual is: " + actual);
112
}
113
}
114
115
private static void testNanData(Locale loc, String expected) {
116
DecimalFormatSymbols dfs = DecimalFormatSymbols.getInstance(loc);
117
String actual = dfs.getNaN();
118
if (!actual.equals(expected)) {
119
throw new RuntimeException("NaN mismatch for locale: "
120
+ loc + ", expected is: " + expected + ", actual is: " + actual);
121
}
122
}
123
}
124
125