ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/test/tck/ArrayDeque8Test.java
Revision: 1.6
Committed: Wed Jan 27 01:57:24 2021 UTC (3 years, 3 months ago) by jsr166
Branch: MAIN
CVS Tags: HEAD
Changes since 1.5: +4 -4 lines
Log Message:
use diamond <> pervasively

File Contents

# User Rev Content
1 jsr166 1.1 /*
2     * Written by Doug Lea and Martin Buchholz with assistance from
3     * members of JCP JSR-166 Expert Group and released to the public
4     * domain, as explained at
5     * http://creativecommons.org/publicdomain/zero/1.0/
6     */
7    
8     import java.util.ArrayDeque;
9     import java.util.Collections;
10     import java.util.Spliterator;
11    
12     import junit.framework.Test;
13    
14     public class ArrayDeque8Test extends JSR166TestCase {
15     public static void main(String[] args) {
16     main(suite(), args);
17     }
18    
19     public static Test suite() {
20     return newTestSuite(ArrayDeque8Test.class);
21     }
22    
23     /**
24     * Spliterator.getComparator always throws IllegalStateException
25     */
26     public void testSpliterator_getComparator() {
27     assertThrows(IllegalStateException.class,
28 dl 1.5 () -> new ArrayDeque<Item>().spliterator().getComparator());
29 jsr166 1.1 }
30    
31     /**
32     * Spliterator characteristics are as advertised
33     */
34     public void testSpliterator_characteristics() {
35 jsr166 1.6 ArrayDeque<Item> q = new ArrayDeque<>();
36 dl 1.5 Spliterator<Item> s = q.spliterator();
37 jsr166 1.1 int characteristics = s.characteristics();
38     int required = Spliterator.NONNULL
39     | Spliterator.ORDERED
40     | Spliterator.SIZED
41     | Spliterator.SUBSIZED;
42 dl 1.5 mustEqual(required, characteristics & required);
43 jsr166 1.1 assertTrue(s.hasCharacteristics(required));
44 dl 1.5 mustEqual(0, characteristics
45 jsr166 1.1 & (Spliterator.CONCURRENT
46     | Spliterator.DISTINCT
47     | Spliterator.IMMUTABLE
48     | Spliterator.SORTED));
49     }
50    
51     /**
52     * Handle capacities near Integer.MAX_VALUE.
53 jsr166 1.2 * ant -Dvmoptions='-Xms28g -Xmx28g' -Djsr166.expensiveTests=true -Djsr166.tckTestClass=ArrayDeque8Test -Djsr166.methodFilter=testHugeCapacity tck
54 jsr166 1.1 */
55 jsr166 1.2 public void testHugeCapacity() {
56 jsr166 1.1 if (! (testImplementationDetails
57     && expensiveTests
58     && Runtime.getRuntime().maxMemory() > 24L * (1 << 30)))
59     return;
60    
61 dl 1.5 final Item e = fortytwo;
62 jsr166 1.2 final int maxArraySize = Integer.MAX_VALUE - 8;
63 jsr166 1.1
64     assertThrows(OutOfMemoryError.class,
65 dl 1.5 () -> new ArrayDeque<Item>(Integer.MAX_VALUE));
66 jsr166 1.1
67     {
68 jsr166 1.6 ArrayDeque<Object> q = new ArrayDeque<>(maxArraySize - 1);
69 dl 1.5 mustEqual(0, q.size());
70 jsr166 1.1 assertTrue(q.isEmpty());
71     q = null;
72     }
73    
74     {
75 jsr166 1.6 ArrayDeque<Object> q = new ArrayDeque<>();
76 jsr166 1.2 assertTrue(q.addAll(Collections.nCopies(maxArraySize - 3, e)));
77 dl 1.5 mustEqual(e, q.peekFirst());
78     mustEqual(e, q.peekLast());
79     mustEqual(maxArraySize - 3, q.size());
80     q.addFirst(zero);
81     q.addLast(one);
82     mustEqual(zero, q.peekFirst());
83     mustEqual(one, q.peekLast());
84     mustEqual(maxArraySize - 1, q.size());
85 jsr166 1.1
86 jsr166 1.6 ArrayDeque<Object> smallish = new ArrayDeque<>(
87 jsr166 1.2 Collections.nCopies(Integer.MAX_VALUE - q.size() + 1, e));
88 jsr166 1.1 assertThrows(
89     IllegalStateException.class,
90 jsr166 1.4 () -> q.addAll(q),
91     () -> q.addAll(smallish),
92     () -> smallish.addAll(q));
93 jsr166 1.1 }
94     }
95    
96     }