ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/test/tck/CollectionTest.java
Revision: 1.5
Committed: Mon Oct 17 02:47:09 2016 UTC (7 years, 6 months ago) by jsr166
Branch: MAIN
Changes since 1.4: +4 -1 lines
Log Message:
add tests for descendingIterator

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.Collection;
9 jsr166 1.2 import java.util.Deque;
10     import java.util.NoSuchElementException;
11     import java.util.Queue;
12 jsr166 1.3 import java.util.function.Consumer;
13 jsr166 1.1
14     import junit.framework.Test;
15    
16     /**
17     * Contains tests applicable to all Collection implementations.
18     */
19     public class CollectionTest extends JSR166TestCase {
20     final CollectionImplementation impl;
21    
22     /** Tests are parameterized by a Collection implementation. */
23     CollectionTest(CollectionImplementation impl, String methodName) {
24     super(methodName);
25     this.impl = impl;
26     }
27    
28     public static Test testSuite(CollectionImplementation impl) {
29     return newTestSuite
30     (parameterizedTestSuite(CollectionTest.class,
31     CollectionImplementation.class,
32     impl),
33     jdk8ParameterizedTestSuite(CollectionTest.class,
34     CollectionImplementation.class,
35     impl));
36     }
37    
38 jsr166 1.2 /** Checks properties of empty collections. */
39 jsr166 1.1 public void testEmptyMeansEmpty() {
40 jsr166 1.2 Collection c = impl.emptyCollection();
41     assertTrue(c.isEmpty());
42     assertEquals(0, c.size());
43     assertEquals("[]", c.toString());
44     assertEquals(0, c.toArray().length);
45     {
46     Object[] a = new Object[0];
47     assertSame(a, c.toArray(a));
48     }
49 jsr166 1.5 assertIteratorExhausted(c.iterator());
50 jsr166 1.3 Consumer alwaysThrows = (e) -> { throw new AssertionError(); };
51     c.forEach(alwaysThrows);
52     c.iterator().forEachRemaining(alwaysThrows);
53     c.spliterator().forEachRemaining(alwaysThrows);
54     assertFalse(c.spliterator().tryAdvance(alwaysThrows));
55 jsr166 1.2 if (Queue.class.isAssignableFrom(impl.klazz())) {
56     Queue q = (Queue) c;
57     assertNull(q.peek());
58     assertNull(q.poll());
59     }
60     if (Deque.class.isAssignableFrom(impl.klazz())) {
61     Deque d = (Deque) c;
62     assertNull(d.peekFirst());
63     assertNull(d.peekLast());
64     assertNull(d.pollFirst());
65     assertNull(d.pollLast());
66 jsr166 1.5 assertIteratorExhausted(d.descendingIterator());
67 jsr166 1.2 }
68     }
69    
70     public void testNullPointerExceptions() {
71     Collection c = impl.emptyCollection();
72     assertThrows(
73     NullPointerException.class,
74     () -> c.addAll(null),
75     () -> c.containsAll(null),
76     () -> c.retainAll(null),
77     () -> c.removeAll(null),
78     () -> c.removeIf(null));
79    
80     if (!impl.permitsNulls()) {
81     assertThrows(
82     NullPointerException.class,
83     () -> c.add(null));
84     }
85     if (!impl.permitsNulls()
86     && Queue.class.isAssignableFrom(impl.klazz())) {
87     Queue q = (Queue) c;
88     assertThrows(
89     NullPointerException.class,
90     () -> q.offer(null));
91     }
92     if (!impl.permitsNulls()
93     && Deque.class.isAssignableFrom(impl.klazz())) {
94     Deque d = (Deque) c;
95     assertThrows(
96     NullPointerException.class,
97     () -> d.addFirst(null),
98     () -> d.addLast(null),
99     () -> d.offerFirst(null),
100     () -> d.offerLast(null),
101     () -> d.push(null));
102     }
103     }
104    
105     public void testNoSuchElementExceptions() {
106     Collection c = impl.emptyCollection();
107 jsr166 1.3 assertThrows(
108     NoSuchElementException.class,
109     () -> c.iterator().next());
110 jsr166 1.2
111     if (Queue.class.isAssignableFrom(impl.klazz())) {
112     Queue q = (Queue) c;
113     assertThrows(
114     NoSuchElementException.class,
115     () -> q.element(),
116     () -> q.remove());
117     }
118     if (Deque.class.isAssignableFrom(impl.klazz())) {
119     Deque d = (Deque) c;
120     assertThrows(
121     NoSuchElementException.class,
122     () -> d.getFirst(),
123     () -> d.getLast(),
124     () -> d.removeFirst(),
125     () -> d.removeLast(),
126 jsr166 1.5 () -> d.pop(),
127     () -> d.descendingIterator().next());
128 jsr166 1.2 }
129 jsr166 1.1 }
130    
131 jsr166 1.4 // public void testCollectionDebugFail() {
132     // fail(impl.klazz().getSimpleName());
133     // }
134 jsr166 1.1 }