Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/jdk/java/text/Collator/APITest.java
41149 views
1
/*
2
* Copyright (c) 1997, 2016, 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
* @library /java/text/testlib
27
* @summary test Collation API
28
* @modules jdk.localedata
29
*/
30
/*
31
(C) Copyright Taligent, Inc. 1996 - All Rights Reserved
32
(C) Copyright IBM Corp. 1996 - All Rights Reserved
33
34
The original version of this source code and documentation is copyrighted and
35
owned by Taligent, Inc., a wholly-owned subsidiary of IBM. These materials are
36
provided under terms of a License Agreement between Taligent and Sun. This
37
technology is protected by multiple US and International patents. This notice and
38
attribution to Taligent may not be removed.
39
Taligent is a registered trademark of Taligent, Inc.
40
*/
41
42
import java.util.Locale;
43
import java.text.Collator;
44
import java.text.RuleBasedCollator;
45
import java.text.CollationKey;
46
import java.text.CollationElementIterator;
47
48
public class APITest extends CollatorTest {
49
50
public static void main(String[] args) throws Exception {
51
new APITest().run(args);
52
}
53
54
final void doAssert(boolean condition, String message)
55
{
56
if (!condition) {
57
err("ERROR: ");
58
errln(message);
59
}
60
}
61
62
public final void TestProperty( )
63
{
64
Collator col = null;
65
try {
66
col = Collator.getInstance(Locale.ROOT);
67
logln("The property tests begin : ");
68
logln("Test ctors : ");
69
doAssert(col.compare("ab", "abc") < 0, "ab < abc comparison failed");
70
doAssert(col.compare("ab", "AB") < 0, "ab < AB comparison failed");
71
doAssert(col.compare("black-bird", "blackbird") > 0, "black-bird > blackbird comparison failed");
72
doAssert(col.compare("black bird", "black-bird") < 0, "black bird < black-bird comparison failed");
73
doAssert(col.compare("Hello", "hello") > 0, "Hello > hello comparison failed");
74
75
logln("Test ctors ends.");
76
logln("testing Collator.getStrength() method ...");
77
doAssert(col.getStrength() == Collator.TERTIARY, "collation object has the wrong strength");
78
doAssert(col.getStrength() != Collator.PRIMARY, "collation object's strength is primary difference");
79
80
logln("testing Collator.setStrength() method ...");
81
col.setStrength(Collator.SECONDARY);
82
doAssert(col.getStrength() != Collator.TERTIARY, "collation object's strength is secondary difference");
83
doAssert(col.getStrength() != Collator.PRIMARY, "collation object's strength is primary difference");
84
doAssert(col.getStrength() == Collator.SECONDARY, "collation object has the wrong strength");
85
86
logln("testing Collator.setDecomposition() method ...");
87
col.setDecomposition(Collator.NO_DECOMPOSITION);
88
doAssert(col.getDecomposition() != Collator.FULL_DECOMPOSITION, "collation object's strength is secondary difference");
89
doAssert(col.getDecomposition() != Collator.CANONICAL_DECOMPOSITION, "collation object's strength is primary difference");
90
doAssert(col.getDecomposition() == Collator.NO_DECOMPOSITION, "collation object has the wrong strength");
91
} catch (Exception foo) {
92
errln("Error : " + foo.getMessage());
93
errln("Default Collator creation failed.");
94
}
95
logln("Default collation property test ended.");
96
logln("Collator.getRules() testing ...");
97
doAssert(((RuleBasedCollator)col).getRules().length() != 0, "getRules() result incorrect" );
98
logln("getRules tests end.");
99
try {
100
col = Collator.getInstance(Locale.FRENCH);
101
col.setStrength(Collator.PRIMARY);
102
logln("testing Collator.getStrength() method again ...");
103
doAssert(col.getStrength() != Collator.TERTIARY, "collation object has the wrong strength");
104
doAssert(col.getStrength() == Collator.PRIMARY, "collation object's strength is not primary difference");
105
106
logln("testing French Collator.setStrength() method ...");
107
col.setStrength(Collator.TERTIARY);
108
doAssert(col.getStrength() == Collator.TERTIARY, "collation object's strength is not tertiary difference");
109
doAssert(col.getStrength() != Collator.PRIMARY, "collation object's strength is primary difference");
110
doAssert(col.getStrength() != Collator.SECONDARY, "collation object's strength is secondary difference");
111
112
} catch (Exception bar) {
113
errln("Error : " + bar.getMessage());
114
errln("Creating French collation failed.");
115
}
116
117
logln("Create junk collation: ");
118
Locale abcd = new Locale("ab", "CD", "");
119
Collator junk = null;
120
try {
121
junk = Collator.getInstance(abcd);
122
} catch (Exception err) {
123
errln("Error : " + err.getMessage());
124
errln("Junk collation creation failed, should at least return the collator for the base bundle.");
125
}
126
try {
127
col = Collator.getInstance(Locale.ROOT);
128
doAssert(col.equals(junk), "The base bundle's collation should be returned.");
129
} catch (Exception exc) {
130
errln("Error : " + exc.getMessage());
131
errln("Default collation comparison, caching not working.");
132
}
133
134
logln("Collator property test ended.");
135
}
136
137
public final void TestHashCode( )
138
{
139
logln("hashCode tests begin.");
140
Collator col1 = null;
141
try {
142
col1 = Collator.getInstance(Locale.ROOT);
143
} catch (Exception foo) {
144
errln("Error : " + foo.getMessage());
145
errln("Default collation creation failed.");
146
}
147
Collator col2 = null;
148
Locale dk = new Locale("da", "DK", "");
149
try {
150
col2 = Collator.getInstance(dk);
151
} catch (Exception bar) {
152
errln("Error : " + bar.getMessage());
153
errln("Danish collation creation failed.");
154
return;
155
}
156
Collator col3 = null;
157
try {
158
col3 = Collator.getInstance(Locale.ROOT);
159
} catch (Exception err) {
160
errln("Error : " + err.getMessage());
161
errln("2nd default collation creation failed.");
162
}
163
logln("Collator.hashCode() testing ...");
164
165
if (col1 != null) {
166
doAssert(col1.hashCode() != col2.hashCode(), "Hash test1 result incorrect");
167
if (col3 != null) {
168
doAssert(col1.hashCode() == col3.hashCode(), "Hash result not equal");
169
}
170
}
171
172
logln("hashCode tests end.");
173
}
174
175
//----------------------------------------------------------------------------
176
// ctor -- Tests the constructor methods
177
//
178
public final void TestCollationKey( )
179
{
180
logln("testing CollationKey begins...");
181
Collator col = null;
182
try {
183
col = Collator.getInstance(Locale.ROOT);
184
} catch (Exception foo) {
185
errln("Error : " + foo.getMessage());
186
errln("Default collation creation failed.");
187
}
188
if (col == null) {
189
return;
190
}
191
192
String test1 = "Abcda", test2 = "abcda";
193
logln("Use tertiary comparison level testing ....");
194
CollationKey sortk1 = col.getCollationKey(test1);
195
CollationKey sortk2 = col.getCollationKey(test2);
196
doAssert(sortk1.compareTo(sortk2) > 0,
197
"Result should be \"Abcda\" >>> \"abcda\"");
198
CollationKey sortk3 = sortk2;
199
CollationKey sortkNew = sortk1;
200
doAssert(sortk1 != sortk2, "The sort keys should be different");
201
doAssert(sortk1.hashCode() != sortk2.hashCode(), "sort key hashCode() failed");
202
doAssert(sortk2.compareTo(sortk3) == 0, "The sort keys should be the same");
203
doAssert(sortk1 == sortkNew, "The sort keys assignment failed");
204
doAssert(sortk1.hashCode() == sortkNew.hashCode(), "sort key hashCode() failed");
205
doAssert(sortkNew != sortk3, "The sort keys should be different");
206
doAssert(sortk1.compareTo(sortk3) > 0, "Result should be \"Abcda\" >>> \"abcda\"");
207
doAssert(sortk2.compareTo(sortk3) == 0, "Result should be \"abcda\" == \"abcda\"");
208
long cnt1, cnt2;
209
byte byteArray1[] = sortk1.toByteArray();
210
byte byteArray2[] = sortk2.toByteArray();
211
doAssert(byteArray1 != null && byteArray2 != null, "CollationKey.toByteArray failed.");
212
logln("testing sortkey ends...");
213
}
214
//----------------------------------------------------------------------------
215
// ctor -- Tests the constructor methods
216
//
217
public final void TestElemIter( )
218
{
219
logln("testing sortkey begins...");
220
Collator col = null;
221
try {
222
col = Collator.getInstance();
223
} catch (Exception foo) {
224
errln("Error : " + foo.getMessage());
225
errln("Default collation creation failed.");
226
}
227
RuleBasedCollator rbCol;
228
if (col instanceof RuleBasedCollator) {
229
rbCol = (RuleBasedCollator) col;
230
} else {
231
return;
232
}
233
String testString1 = "XFILE What subset of all possible test cases has the highest probability of detecting the most errors?";
234
String testString2 = "Xf ile What subset of all possible test cases has the lowest probability of detecting the least errors?";
235
logln("Constructors and comparison testing....");
236
CollationElementIterator iterator1 = rbCol.getCollationElementIterator(testString1);
237
CollationElementIterator iterator2 = rbCol.getCollationElementIterator(testString1);
238
CollationElementIterator iterator3 = rbCol.getCollationElementIterator(testString2);
239
int order1, order2, order3;
240
order1 = iterator1.next();
241
order2 = iterator2.next();
242
doAssert(order1 == order2, "The order result should be the same");
243
244
order3 = iterator3.next();
245
doAssert(CollationElementIterator.primaryOrder(order1)
246
== CollationElementIterator.primaryOrder(order3),
247
"The primary orders should be the same");
248
doAssert(CollationElementIterator.secondaryOrder(order1)
249
== CollationElementIterator.secondaryOrder(order3),
250
"The secondary orders should be the same");
251
doAssert(CollationElementIterator.tertiaryOrder(order1)
252
== CollationElementIterator.tertiaryOrder(order3),
253
"The tertiary orders should be the same");
254
255
order1 = iterator1.next();
256
order3 = iterator3.next();
257
doAssert(CollationElementIterator.primaryOrder(order1)
258
== CollationElementIterator.primaryOrder(order3),
259
"The primary orders should be identical");
260
doAssert(CollationElementIterator.tertiaryOrder(order1)
261
!= CollationElementIterator.tertiaryOrder(order3),
262
"The tertiary orders should be different");
263
264
order1 = iterator1.next();
265
order3 = iterator3.next();
266
doAssert(CollationElementIterator.secondaryOrder(order1)
267
!= CollationElementIterator.secondaryOrder(order3),
268
"The secondary orders should be different");
269
doAssert(order1 != CollationElementIterator.NULLORDER,
270
"Unexpected end of iterator reached");
271
272
iterator1.reset();
273
iterator2.reset();
274
iterator3.reset();
275
order1 = iterator1.next();
276
order2 = iterator2.next();
277
doAssert(order1 == order2, "The order result should be the same");
278
279
order3 = iterator3.next();
280
doAssert(CollationElementIterator.primaryOrder(order1)
281
== CollationElementIterator.primaryOrder(order3),
282
"The orders should be the same");
283
doAssert(CollationElementIterator.secondaryOrder(order1)
284
== CollationElementIterator.secondaryOrder(order3),
285
"The orders should be the same");
286
doAssert(CollationElementIterator.tertiaryOrder(order1)
287
== CollationElementIterator.tertiaryOrder(order3),
288
"The orders should be the same");
289
290
order1 = iterator1.next();
291
order2 = iterator2.next();
292
order3 = iterator3.next();
293
doAssert(CollationElementIterator.primaryOrder(order1)
294
== CollationElementIterator.primaryOrder(order3),
295
"The primary orders should be identical");
296
doAssert(CollationElementIterator.tertiaryOrder(order1)
297
!= CollationElementIterator.tertiaryOrder(order3),
298
"The tertiary orders should be different");
299
300
order1 = iterator1.next();
301
order3 = iterator3.next();
302
doAssert(CollationElementIterator.secondaryOrder(order1)
303
!= CollationElementIterator.secondaryOrder(order3),
304
"The secondary orders should be different");
305
doAssert(order1 != CollationElementIterator.NULLORDER, "Unexpected end of iterator reached");
306
logln("testing CollationElementIterator ends...");
307
}
308
309
public final void TestGetAll()
310
{
311
Locale[] list = Collator.getAvailableLocales();
312
for (int i = 0; i < list.length; ++i) {
313
log("Locale name: ");
314
log(list[i].toString());
315
log(" , the display name is : ");
316
logln(list[i].getDisplayName());
317
}
318
}
319
}
320
321