Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/jdk/java/util/PluggableLocale/GenericTest.java
41149 views
1
/*
2
* Copyright (c) 2007, 2018, 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 4052440 8062588 8210406
27
* @summary Generic tests for the pluggable locales feature
28
* @library providersrc/foobarutils
29
* providersrc/barprovider
30
* providersrc/fooprovider
31
* @modules java.base/sun.util.locale.provider
32
* @build com.foobar.Utils
33
* com.bar.*
34
* com.foo.*
35
* @run main/othervm -Djava.locale.providers=JRE,SPI GenericTest
36
*/
37
38
import java.util.Arrays;
39
import java.util.HashSet;
40
import java.util.Locale;
41
import java.util.Set;
42
43
import com.bar.CalendarDataProviderImpl;
44
import com.bar.CalendarNameProviderImpl;
45
import com.bar.CurrencyNameProviderImpl;
46
import com.bar.CurrencyNameProviderImpl2;
47
import com.bar.GenericTimeZoneNameProviderImpl;
48
import com.bar.LocaleNameProviderImpl;
49
import com.bar.TimeZoneNameProviderImpl;
50
import com.foo.BreakIteratorProviderImpl;
51
import com.foo.CollatorProviderImpl;
52
import com.foo.DateFormatProviderImpl;
53
import com.foo.DateFormatSymbolsProviderImpl;
54
import com.foo.DecimalFormatSymbolsProviderImpl;
55
import com.foo.NumberFormatProviderImpl;
56
57
import sun.util.locale.provider.LocaleProviderAdapter;
58
59
public class GenericTest {
60
61
// test providers
62
BreakIteratorProviderImpl breakIP = new BreakIteratorProviderImpl();
63
CollatorProviderImpl collatorP = new CollatorProviderImpl();
64
DateFormatProviderImpl dateFP = new DateFormatProviderImpl();
65
DateFormatSymbolsProviderImpl dateFSP = new DateFormatSymbolsProviderImpl();
66
DecimalFormatSymbolsProviderImpl decimalFSP = new DecimalFormatSymbolsProviderImpl();
67
NumberFormatProviderImpl numberFP = new NumberFormatProviderImpl();
68
CurrencyNameProviderImpl currencyNP = new CurrencyNameProviderImpl();
69
CurrencyNameProviderImpl2 currencyNP2 = new CurrencyNameProviderImpl2();
70
LocaleNameProviderImpl localeNP = new LocaleNameProviderImpl();
71
TimeZoneNameProviderImpl tzNP = new TimeZoneNameProviderImpl();
72
GenericTimeZoneNameProviderImpl tzGenNP = new GenericTimeZoneNameProviderImpl();
73
CalendarDataProviderImpl calDataP = new CalendarDataProviderImpl();
74
CalendarNameProviderImpl calNameP = new CalendarNameProviderImpl();
75
76
public static void main(String[] s) {
77
new GenericTest();
78
}
79
80
GenericTest() {
81
availableLocalesTest();
82
localeFallbackTest();
83
}
84
85
/**
86
* Make sure that all the locales are available from the existing providers
87
*/
88
void availableLocalesTest() {
89
// Check that Locale.getAvailableLocales() returns the union of the JRE supported
90
// locales and providers' locales
91
HashSet<Locale> result =
92
new HashSet<>(Arrays.asList(Locale.getAvailableLocales()));
93
HashSet<Locale> expected =
94
new HashSet<>(Arrays.asList(LocaleProviderAdapter.forJRE().getAvailableLocales()));
95
expected.addAll(Arrays.asList(breakIP.getAvailableLocales()));
96
expected.addAll(Arrays.asList(collatorP.getAvailableLocales()));
97
expected.addAll(Arrays.asList(dateFP.getAvailableLocales()));
98
expected.addAll(Arrays.asList(dateFSP.getAvailableLocales()));
99
expected.addAll(Arrays.asList(decimalFSP.getAvailableLocales()));
100
expected.addAll(Arrays.asList(numberFP.getAvailableLocales()));
101
expected.addAll(Arrays.asList(currencyNP.getAvailableLocales()));
102
expected.addAll(Arrays.asList(currencyNP2.getAvailableLocales()));
103
expected.addAll(Arrays.asList(localeNP.getAvailableLocales()));
104
expected.addAll(Arrays.asList(tzNP.getAvailableLocales()));
105
expected.addAll(Arrays.asList(tzGenNP.getAvailableLocales()));
106
expected.addAll(Arrays.asList(calDataP.getAvailableLocales()));
107
expected.addAll(Arrays.asList(calNameP.getAvailableLocales()));
108
if (!result.equals(expected)) {
109
throw new RuntimeException("Locale.getAvailableLocales() does not return the union of locales: diff="
110
+ getDiff(result, expected));
111
}
112
}
113
114
/**
115
* test with "xx_YY_ZZ", which is an example locale not contained
116
* in Locale.getAvailableLocales(). Fallback tests for supported locales
117
* are done in each xxxProviderTest test cases.
118
*/
119
void localeFallbackTest() {
120
Locale xx = new Locale("xx");
121
Locale dispLocale = new Locale ("xx", "YY", "ZZ");
122
123
String xxname = xx.getDisplayLanguage(xx);
124
String expected = localeNP.getDisplayLanguage(xx.getLanguage(), dispLocale);
125
if (!xxname.equals(expected)) {
126
throw new RuntimeException("Locale fallback did not perform correctly. got: "+xxname+" expected: "+expected);
127
}
128
}
129
130
private static String getDiff(Set set1, Set set2) {
131
Set s1 = (Set)((HashSet)set1).clone();
132
s1.removeAll(set2);
133
134
Set s2 = (Set)((HashSet)set2).clone();
135
s2.removeAll(set1);
136
s2.addAll(s1);
137
return s2.toString();
138
}
139
}
140