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/Collections/EmptyNavigableSet.java
38812 views
1
/*
2
* Copyright (c) 2011, 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 4533691 7129185
27
* @summary Unit test for Collections.emptyNavigableSet
28
* @run testng EmptyNavigableSet
29
*/
30
import java.math.BigInteger;
31
import java.util.Arrays;
32
import java.util.Collection;
33
import java.util.Collections;
34
import java.util.Comparator;
35
import java.util.Iterator;
36
import java.util.NoSuchElementException;
37
import java.util.NavigableSet;
38
import java.util.SortedSet;
39
import java.util.TreeSet;
40
import org.testng.annotations.Test;
41
import org.testng.annotations.DataProvider;
42
43
import static org.testng.Assert.fail;
44
import static org.testng.Assert.assertEquals;
45
import static org.testng.Assert.assertTrue;
46
import static org.testng.Assert.assertFalse;
47
import static org.testng.Assert.assertSame;
48
49
public class EmptyNavigableSet {
50
51
public static <T> void assertInstance(T actual, Class<? extends T> expected) {
52
assertInstance(expected.isInstance(actual), null);
53
}
54
55
public static <T> void assertInstance(T actual, Class<? extends T> expected, String message) {
56
assertTrue(expected.isInstance(actual), ((null != message) ? message : "")
57
+ " " + (actual == null ? "<null>" : actual.getClass().getSimpleName()) + " != " + expected.getSimpleName() + ". ");
58
}
59
60
public static <T extends Throwable> void assertEmptyNavigableSet(Object obj) {
61
assertInstance(obj, NavigableSet.class);
62
assertTrue(((NavigableSet)obj).isEmpty() && (((NavigableSet)obj).size() == 0));
63
}
64
65
public static <T extends Throwable> void assertEmptyNavigableSet(Object obj, String message) {
66
assertInstance(obj, NavigableSet.class, message);
67
assertTrue(((NavigableSet)obj).isEmpty() && (((NavigableSet)obj).size() == 0),
68
((null != message) ? message : "") + " Not empty. ");
69
}
70
71
public interface Thrower<T extends Throwable> {
72
73
public void run() throws T;
74
}
75
76
public static <T extends Throwable> void assertThrows(Thrower<T> thrower, Class<T> throwable) {
77
assertThrows(thrower, throwable, null);
78
}
79
80
public static <T extends Throwable> void assertThrows(Thrower<T> thrower, Class<T> throwable, String message) {
81
Throwable result;
82
try {
83
thrower.run();
84
fail(((null != message) ? message : "") + "Failed to throw " + throwable.getCanonicalName() + ". ");
85
return;
86
} catch (Throwable caught) {
87
result = caught;
88
}
89
90
assertInstance(result, throwable, ((null != message) ? message : "") + "Failed to throw " + throwable.getCanonicalName() + ". ");
91
}
92
93
public static final boolean isDescending(SortedSet<?> set) {
94
if (null == set.comparator()) {
95
// natural order
96
return false;
97
}
98
99
if (Collections.reverseOrder() == set.comparator()) {
100
// reverse natural order.
101
return true;
102
}
103
104
if (set.comparator().equals(Collections.reverseOrder(Collections.reverseOrder(set.comparator())))) {
105
// it's a Collections.reverseOrder(Comparator).
106
return true;
107
}
108
109
throw new IllegalStateException("can't determine ordering for " + set);
110
}
111
112
/**
113
* Tests that the comparator is {@code null}.
114
*/
115
@Test(dataProvider = "NavigableSet<?>", dataProviderClass = EmptyNavigableSet.class)
116
public void testComparatorIsNull(String description, NavigableSet<?> navigableSet) {
117
Comparator comparator = navigableSet.comparator();
118
119
assertTrue(comparator == null || comparator == Collections.reverseOrder(), description + ": Comparator (" + comparator + ") is not null.");
120
}
121
122
/**
123
* Tests that contains requires Comparable
124
*/
125
@Test(dataProvider = "NavigableSet<?>", dataProviderClass = EmptyNavigableSet.class)
126
public void testContainsRequiresComparable(String description, NavigableSet<?> navigableSet) {
127
assertThrows(() -> {
128
navigableSet.contains(new Object());
129
},
130
ClassCastException.class,
131
description + ": Compareable should be required");
132
}
133
134
/**
135
* Tests that the contains method returns {@code false}.
136
*/
137
@Test(dataProvider = "NavigableSet<?>", dataProviderClass = EmptyNavigableSet.class)
138
public void testContains(String description, NavigableSet<?> navigableSet) {
139
assertFalse(navigableSet.contains(new Integer(1)),
140
description + ": Should not contain any elements.");
141
}
142
143
/**
144
* Tests that the containsAll method returns {@code false}.
145
*/
146
@Test(dataProvider = "NavigableSet<?>", dataProviderClass = EmptyNavigableSet.class)
147
public void testContainsAll(String description, NavigableSet<?> navigableSet) {
148
TreeSet treeSet = new TreeSet();
149
treeSet.add("1");
150
treeSet.add("2");
151
treeSet.add("3");
152
153
assertFalse(navigableSet.containsAll(treeSet), "Should not contain any elements.");
154
}
155
156
/**
157
* Tests that the iterator is empty.
158
*/
159
@Test(dataProvider = "NavigableSet<?>", dataProviderClass = EmptyNavigableSet.class)
160
public void testEmptyIterator(String description, NavigableSet<?> navigableSet) {
161
Iterator emptyIterator = navigableSet.iterator();
162
163
assertFalse((emptyIterator != null) && (emptyIterator.hasNext()),
164
"The iterator is not empty.");
165
}
166
167
/**
168
* Tests that the set is empty.
169
*/
170
@Test(dataProvider = "NavigableSet<?>", dataProviderClass = EmptyNavigableSet.class)
171
public void testIsEmpty(String description, NavigableSet<?> navigableSet) {
172
assertTrue(navigableSet.isEmpty(), "The set is not empty.");
173
}
174
175
/**
176
* Tests that the first() method throws NoSuchElementException
177
*/
178
@Test(dataProvider = "NavigableSet<?>", dataProviderClass = EmptyNavigableSet.class)
179
public void testFirst(String description, NavigableSet<?> navigableSet) {
180
assertThrows(() -> {
181
navigableSet.first();
182
}, NoSuchElementException.class, description);
183
}
184
185
/**
186
* Tests the headSet() method.
187
*/
188
@Test(dataProvider = "NavigableSet<?>", dataProviderClass = EmptyNavigableSet.class)
189
public void testHeadSet(String description, NavigableSet navigableSet) {
190
assertThrows(
191
() -> { NavigableSet ns = navigableSet.headSet(null, false); },
192
NullPointerException.class,
193
description + ": Must throw NullPointerException for null element");
194
195
assertThrows(
196
() -> { NavigableSet ns = navigableSet.headSet(new Object(), true); },
197
ClassCastException.class,
198
description + ": Must throw ClassCastException for non-Comparable element");
199
200
NavigableSet ns = navigableSet.headSet("1", false);
201
202
assertEmptyNavigableSet(ns, description + ": Returned value is not empty navigable set.");
203
}
204
205
/**
206
* Tests that the last() method throws NoSuchElementException
207
*/
208
@Test(dataProvider = "NavigableSet<?>", dataProviderClass = EmptyNavigableSet.class)
209
public void testLast(String description, NavigableSet<?> navigableSet) {
210
assertThrows(() -> {
211
navigableSet.last();
212
}, NoSuchElementException.class, description);
213
}
214
215
/**
216
* Tests that the size is 0.
217
*/
218
@Test(dataProvider = "NavigableSet<?>", dataProviderClass = EmptyNavigableSet.class)
219
public void testSizeIsZero(String description, NavigableSet<?> navigableSet) {
220
assertTrue(0 == navigableSet.size(), "The size of the set is not 0.");
221
}
222
223
/**
224
* Tests the subSet() method.
225
*/
226
@Test(dataProvider = "NavigableSet<?>", dataProviderClass = EmptyNavigableSet.class)
227
public void testSubSet(String description, NavigableSet navigableSet) {
228
assertThrows(
229
() -> {
230
SortedSet ss = navigableSet.subSet(null, BigInteger.TEN);
231
},
232
NullPointerException.class,
233
description + ": Must throw NullPointerException for null element");
234
235
assertThrows(
236
() -> {
237
SortedSet ss = navigableSet.subSet(BigInteger.ZERO, null);
238
},
239
NullPointerException.class,
240
description + ": Must throw NullPointerException for null element");
241
242
assertThrows(
243
() -> {
244
SortedSet ss = navigableSet.subSet(null, null);
245
},
246
NullPointerException.class,
247
description + ": Must throw NullPointerException for null element");
248
249
Object obj1 = new Object();
250
Object obj2 = new Object();
251
252
assertThrows(
253
() -> {
254
SortedSet ss = navigableSet.subSet(obj1, BigInteger.TEN);
255
},
256
ClassCastException.class, description
257
+ ": Must throw ClassCastException for parameter which is not Comparable.");
258
259
assertThrows(
260
() -> {
261
SortedSet ss = navigableSet.subSet(BigInteger.ZERO, obj2);
262
},
263
ClassCastException.class, description
264
+ ": Must throw ClassCastException for parameter which is not Comparable.");
265
266
assertThrows(
267
() -> {
268
SortedSet ss = navigableSet.subSet(obj1, obj2);
269
},
270
ClassCastException.class, description
271
+ ": Must throw ClassCastException for parameter which is not Comparable.");
272
273
// minimal range
274
navigableSet.subSet(BigInteger.ZERO, false, BigInteger.ZERO, false);
275
navigableSet.subSet(BigInteger.ZERO, false, BigInteger.ZERO, true);
276
navigableSet.subSet(BigInteger.ZERO, true, BigInteger.ZERO, false);
277
navigableSet.subSet(BigInteger.ZERO, true, BigInteger.ZERO, true);
278
279
Object first = isDescending(navigableSet) ? BigInteger.TEN : BigInteger.ZERO;
280
Object last = (BigInteger.ZERO == first) ? BigInteger.TEN : BigInteger.ZERO;
281
282
assertThrows(
283
() -> {
284
navigableSet.subSet(last, true, first, false);
285
},
286
IllegalArgumentException.class, description
287
+ ": Must throw IllegalArgumentException when fromElement is not less then then toElement.");
288
289
navigableSet.subSet(first, true, last, false);
290
}
291
292
@Test(dataProvider = "NavigableSet<?>", dataProviderClass = EmptyNavigableSet.class)
293
public void testSubSetRanges(String description, NavigableSet navigableSet) {
294
Object first = isDescending(navigableSet) ? BigInteger.TEN : BigInteger.ZERO;
295
Object last = (BigInteger.ZERO == first) ? BigInteger.TEN : BigInteger.ZERO;
296
297
NavigableSet subSet = navigableSet.subSet(first, true, last, true);
298
299
// same subset
300
subSet.subSet(first, true, last, true);
301
302
// slightly smaller
303
NavigableSet ns = subSet.subSet(first, false, last, false);
304
// slight exapansion
305
assertThrows(() -> {
306
ns.subSet(first, true, last, true);
307
},
308
IllegalArgumentException.class,
309
description + ": Expansion should not be allowed");
310
311
// much smaller
312
subSet.subSet(first, false, BigInteger.ONE, false);
313
}
314
315
@Test(dataProvider = "NavigableSet<?>", dataProviderClass = EmptyNavigableSet.class)
316
public void testheadSetRanges(String description, NavigableSet navigableSet) {
317
NavigableSet subSet = navigableSet.headSet(BigInteger.ONE, true);
318
319
// same subset
320
subSet.headSet(BigInteger.ONE, true);
321
322
// slightly smaller
323
NavigableSet ns = subSet.headSet(BigInteger.ONE, false);
324
325
// slight exapansion
326
assertThrows(() -> {
327
ns.headSet(BigInteger.ONE, true);
328
},
329
IllegalArgumentException.class,
330
description + ": Expansion should not be allowed");
331
332
// much smaller
333
subSet.headSet(isDescending(subSet) ? BigInteger.TEN : BigInteger.ZERO, true);
334
}
335
336
@Test(dataProvider = "NavigableSet<?>", dataProviderClass = EmptyNavigableSet.class)
337
public void testTailSetRanges(String description, NavigableSet navigableSet) {
338
NavigableSet subSet = navigableSet.tailSet(BigInteger.ONE, true);
339
340
// same subset
341
subSet.tailSet(BigInteger.ONE, true);
342
343
// slightly smaller
344
NavigableSet ns = subSet.tailSet(BigInteger.ONE, false);
345
346
// slight exapansion
347
assertThrows(() -> {
348
ns.tailSet(BigInteger.ONE, true);
349
},
350
IllegalArgumentException.class,
351
description + ": Expansion should not be allowed");
352
353
// much smaller
354
subSet.tailSet(isDescending(subSet) ? BigInteger.ZERO : BigInteger.TEN, false);
355
}
356
357
/**
358
* Tests the tailSet() method.
359
*/
360
@Test(dataProvider = "NavigableSet<?>", dataProviderClass = EmptyNavigableSet.class)
361
public void testTailSet(String description, NavigableSet navigableSet) {
362
assertThrows(() -> {
363
navigableSet.tailSet(null);
364
},
365
NullPointerException.class,
366
description + ": Must throw NullPointerException for null element");
367
368
assertThrows(() -> {
369
navigableSet.tailSet(new Object());
370
}, ClassCastException.class);
371
372
NavigableSet ss = navigableSet.tailSet("1", true);
373
374
assertEmptyNavigableSet(ss, description + ": Returned value is not empty navigable set.");
375
}
376
377
/**
378
* Tests that the array has a size of 0.
379
*/
380
@Test(dataProvider = "NavigableSet<?>", dataProviderClass = EmptyNavigableSet.class)
381
public void testToArray(String description, NavigableSet<?> navigableSet) {
382
Object[] emptyNavigableSetArray = navigableSet.toArray();
383
384
assertTrue(emptyNavigableSetArray.length == 0, "Returned non-empty Array.");
385
386
emptyNavigableSetArray = new Object[20];
387
388
Object[] result = navigableSet.toArray(emptyNavigableSetArray);
389
390
assertSame(emptyNavigableSetArray, result);
391
392
assertTrue(result[0] == null);
393
}
394
395
@DataProvider(name = "NavigableSet<?>", parallel = true)
396
public static Iterator<Object[]> navigableSetsProvider() {
397
return makeNavigableSets().iterator();
398
}
399
400
public static Collection<Object[]> makeNavigableSets() {
401
return Arrays.asList(
402
new Object[]{"UnmodifiableNavigableSet(TreeSet)", Collections.unmodifiableNavigableSet(new TreeSet())},
403
new Object[]{"UnmodifiableNavigableSet(TreeSet.descendingSet()", Collections.unmodifiableNavigableSet(new TreeSet().descendingSet())},
404
new Object[]{"UnmodifiableNavigableSet(TreeSet.descendingSet().descendingSet()", Collections.unmodifiableNavigableSet(new TreeSet().descendingSet().descendingSet())},
405
new Object[]{"emptyNavigableSet()", Collections.emptyNavigableSet()},
406
new Object[]{"emptyNavigableSet().descendingSet()", Collections.emptyNavigableSet().descendingSet()},
407
new Object[]{"emptyNavigableSet().descendingSet().descendingSet()", Collections.emptyNavigableSet().descendingSet().descendingSet()}
408
);
409
}
410
}
411
412