ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/test/tck/LinkedBlockingDequeTest.java
(Generate patch)

Comparing jsr166/src/test/tck/LinkedBlockingDequeTest.java (file contents):
Revision 1.18 by jsr166, Sun Nov 22 18:57:17 2009 UTC vs.
Revision 1.27 by jsr166, Tue Oct 19 00:43:49 2010 UTC

# Line 11 | Line 11 | import static java.util.concurrent.TimeU
11   import java.io.*;
12  
13   public class LinkedBlockingDequeTest extends JSR166TestCase {
14 +
15 +    public static class Unbounded extends BlockingQueueTest {
16 +        protected BlockingQueue emptyCollection() {
17 +            return new LinkedBlockingDeque();
18 +        }
19 +    }
20 +
21 +    public static class Bounded extends BlockingQueueTest {
22 +        protected BlockingQueue emptyCollection() {
23 +            return new LinkedBlockingDeque(20);
24 +        }
25 +    }
26 +
27      public static void main(String[] args) {
28 <        junit.textui.TestRunner.run (suite());
28 >        junit.textui.TestRunner.run(suite());
29      }
30  
31      public static Test suite() {
32 <        return new TestSuite(LinkedBlockingDequeTest.class);
32 >        return newTestSuite(LinkedBlockingDequeTest.class,
33 >                            new Unbounded().testSuite(),
34 >                            new Bounded().testSuite());
35      }
36  
37      /**
# Line 93 | Line 108 | public class LinkedBlockingDequeTest ext
108      }
109  
110      /**
111 <     *  pollFirst succeeds unless empty
111 >     * pollFirst succeeds unless empty
112       */
113      public void testPollFirst() {
114          LinkedBlockingDeque q = populatedDeque(SIZE);
# Line 104 | Line 119 | public class LinkedBlockingDequeTest ext
119      }
120  
121      /**
122 <     *  pollLast succeeds unless empty
122 >     * pollLast succeeds unless empty
123       */
124      public void testPollLast() {
125          LinkedBlockingDeque q = populatedDeque(SIZE);
# Line 115 | Line 130 | public class LinkedBlockingDequeTest ext
130      }
131  
132      /**
133 <     *  peekFirst returns next element, or null if empty
133 >     * peekFirst returns next element, or null if empty
134       */
135      public void testPeekFirst() {
136          LinkedBlockingDeque q = populatedDeque(SIZE);
# Line 129 | Line 144 | public class LinkedBlockingDequeTest ext
144      }
145  
146      /**
147 <     *  peek returns next element, or null if empty
147 >     * peek returns next element, or null if empty
148       */
149      public void testPeek() {
150          LinkedBlockingDeque q = populatedDeque(SIZE);
# Line 143 | Line 158 | public class LinkedBlockingDequeTest ext
158      }
159  
160      /**
161 <     *  peekLast returns next element, or null if empty
161 >     * peekLast returns next element, or null if empty
162       */
163      public void testPeekLast() {
164          LinkedBlockingDeque q = populatedDeque(SIZE);
# Line 157 | Line 172 | public class LinkedBlockingDequeTest ext
172      }
173  
174      /**
175 <     * getFirst returns next getFirst, or throws NSEE if empty
175 >     * getFirst() returns first element, or throws NSEE if empty
176       */
177      public void testFirstElement() {
178          LinkedBlockingDeque q = populatedDeque(SIZE);
# Line 173 | Line 188 | public class LinkedBlockingDequeTest ext
188      }
189  
190      /**
191 <     *  getLast returns next element, or throws NSEE if empty
191 >     * getLast() returns last element, or throws NSEE if empty
192       */
193      public void testLastElement() {
194          LinkedBlockingDeque q = populatedDeque(SIZE);
# Line 189 | Line 204 | public class LinkedBlockingDequeTest ext
204      }
205  
206      /**
207 <     *  removeFirst removes next element, or throws NSEE if empty
207 >     * removeFirst() removes first element, or throws NSEE if empty
208       */
209      public void testRemoveFirst() {
210          LinkedBlockingDeque q = populatedDeque(SIZE);
# Line 204 | Line 219 | public class LinkedBlockingDequeTest ext
219      }
220  
221      /**
222 <     *  removeLast removes last element, or throws NSEE if empty
222 >     * removeLast() removes last element, or throws NSEE if empty
223       */
224      public void testRemoveLast() {
225          LinkedBlockingDeque q = populatedDeque(SIZE);
# Line 219 | Line 234 | public class LinkedBlockingDequeTest ext
234      }
235  
236      /**
237 <     *  remove removes next element, or throws NSEE if empty
237 >     * remove removes next element, or throws NSEE if empty
238       */
239      public void testRemove() {
240          LinkedBlockingDeque q = populatedDeque(SIZE);
# Line 269 | Line 284 | public class LinkedBlockingDequeTest ext
284          LinkedBlockingDeque q = populatedDeque(3);
285          q.pollLast();
286          q.addFirst(four);
287 <        assertEquals(four,q.peekFirst());
287 >        assertSame(four, q.peekFirst());
288      }
289  
290      /**
# Line 279 | Line 294 | public class LinkedBlockingDequeTest ext
294          LinkedBlockingDeque q = populatedDeque(3);
295          q.pollLast();
296          q.addLast(four);
297 <        assertEquals(four,q.peekLast());
297 >        assertSame(four, q.peekLast());
298      }
299  
300  
# Line 437 | Line 452 | public class LinkedBlockingDequeTest ext
452          LinkedBlockingDeque q = populatedDeque(3);
453          q.pollLast();
454          q.push(four);
455 <        assertEquals(four,q.peekFirst());
455 >        assertSame(four, q.peekFirst());
456      }
457  
458  
459      /**
460 <     *  pop removes next element, or throws NSEE if empty
460 >     * pop removes next element, or throws NSEE if empty
461       */
462      public void testPop() {
463          LinkedBlockingDeque q = populatedDeque(SIZE);
# Line 513 | Line 528 | public class LinkedBlockingDequeTest ext
528              shouldThrow();
529          } catch (NullPointerException success) {}
530      }
531 +
532      /**
533       * addAll of a collection with any null elements throws NPE after
534       * possibly adding some elements
# Line 527 | Line 543 | public class LinkedBlockingDequeTest ext
543              shouldThrow();
544          } catch (NullPointerException success) {}
545      }
546 +
547      /**
548       * addAll throws ISE if not enough room
549       */
# Line 760 | Line 777 | public class LinkedBlockingDequeTest ext
777      }
778  
779      /**
763     *  timed poll before a delayed offer fails; after offer succeeds;
764     *  on interruption throws
765     */
766    public void testTimedPollWithOffer() throws InterruptedException {
767        final LinkedBlockingDeque q = new LinkedBlockingDeque(2);
768        Thread t = new Thread(new CheckedRunnable() {
769            public void realRun() throws InterruptedException {
770                assertNull(q.poll(SHORT_DELAY_MS, MILLISECONDS));
771                assertSame(zero, q.poll(LONG_DELAY_MS, MILLISECONDS));
772                try {
773                    q.poll(LONG_DELAY_MS, MILLISECONDS);
774                    shouldThrow();
775                } catch (InterruptedException success) {}
776            }});
777
778        t.start();
779        Thread.sleep(SMALL_DELAY_MS);
780        assertTrue(q.offer(zero, SHORT_DELAY_MS, MILLISECONDS));
781        t.interrupt();
782        t.join();
783    }
784
785
786    /**
780       * putFirst(null) throws NPE
781       */
782       public void testPutFirstNull() throws InterruptedException {
# Line 974 | Line 967 | public class LinkedBlockingDequeTest ext
967      }
968  
969      /**
970 <     *  timed pollFirst before a delayed offerFirst fails; after offerFirst succeeds;
971 <     *  on interruption throws
970 >     * timed pollFirst before a delayed offerFirst fails; after offerFirst succeeds;
971 >     * on interruption throws
972       */
973      public void testTimedPollFirstWithOfferFirst() throws InterruptedException {
974          final LinkedBlockingDeque q = new LinkedBlockingDeque(2);
# Line 1186 | Line 1179 | public class LinkedBlockingDequeTest ext
1179      }
1180  
1181      /**
1182 <     *  timed poll before a delayed offerLast fails; after offerLast succeeds;
1183 <     *  on interruption throws
1182 >     * timed poll before a delayed offerLast fails; after offerLast succeeds;
1183 >     * on interruption throws
1184       */
1185      public void testTimedPollWithOfferLast() throws InterruptedException {
1186          final LinkedBlockingDeque q = new LinkedBlockingDeque(2);
# Line 1374 | Line 1367 | public class LinkedBlockingDequeTest ext
1367      /**
1368       * iterator.remove removes current element
1369       */
1370 <    public void testIteratorRemove () {
1370 >    public void testIteratorRemove() {
1371          final LinkedBlockingDeque q = new LinkedBlockingDeque(3);
1372          q.add(two);
1373          q.add(one);
# Line 1385 | Line 1378 | public class LinkedBlockingDequeTest ext
1378          it.remove();
1379  
1380          it = q.iterator();
1381 <        assertEquals(it.next(), one);
1382 <        assertEquals(it.next(), three);
1381 >        assertSame(it.next(), one);
1382 >        assertSame(it.next(), three);
1383          assertFalse(it.hasNext());
1384      }
1385  
# Line 1410 | Line 1403 | public class LinkedBlockingDequeTest ext
1403      /**
1404       * Modifications do not cause iterators to fail
1405       */
1406 <    public void testWeaklyConsistentIteration () {
1406 >    public void testWeaklyConsistentIteration() {
1407          final LinkedBlockingDeque q = new LinkedBlockingDeque(3);
1408          q.add(one);
1409          q.add(two);
# Line 1424 | Line 1417 | public class LinkedBlockingDequeTest ext
1417  
1418  
1419      /**
1420 <     *  Descending iterator iterates through all elements
1420 >     * Descending iterator iterates through all elements
1421       */
1422      public void testDescendingIterator() {
1423          LinkedBlockingDeque q = populatedDeque(SIZE);
# Line 1443 | Line 1436 | public class LinkedBlockingDequeTest ext
1436      }
1437  
1438      /**
1439 <     *  Descending iterator ordering is reverse FIFO
1439 >     * Descending iterator ordering is reverse FIFO
1440       */
1441      public void testDescendingIteratorOrdering() {
1442          final LinkedBlockingDeque q = new LinkedBlockingDeque();
# Line 1466 | Line 1459 | public class LinkedBlockingDequeTest ext
1459      /**
1460       * descendingIterator.remove removes current element
1461       */
1462 <    public void testDescendingIteratorRemove () {
1462 >    public void testDescendingIteratorRemove() {
1463          final LinkedBlockingDeque q = new LinkedBlockingDeque();
1464          for (int iters = 0; iters < 100; ++iters) {
1465              q.add(new Integer(3));
# Line 1508 | Line 1501 | public class LinkedBlockingDequeTest ext
1501          ExecutorService executor = Executors.newFixedThreadPool(2);
1502          executor.execute(new CheckedRunnable() {
1503              public void realRun() throws InterruptedException {
1504 <                threadAssertFalse(q.offer(three));
1505 <                threadAssertTrue(q.offer(three, MEDIUM_DELAY_MS, MILLISECONDS));
1506 <                threadAssertEquals(0, q.remainingCapacity());
1504 >                assertFalse(q.offer(three));
1505 >                assertTrue(q.offer(three, MEDIUM_DELAY_MS, MILLISECONDS));
1506 >                assertEquals(0, q.remainingCapacity());
1507              }});
1508  
1509          executor.execute(new CheckedRunnable() {
1510              public void realRun() throws InterruptedException {
1511                  Thread.sleep(SMALL_DELAY_MS);
1512 <                threadAssertEquals(one, q.take());
1512 >                assertSame(one, q.take());
1513              }});
1514  
1515          joinPool(executor);
# Line 1530 | Line 1523 | public class LinkedBlockingDequeTest ext
1523          ExecutorService executor = Executors.newFixedThreadPool(2);
1524          executor.execute(new CheckedRunnable() {
1525              public void realRun() throws InterruptedException {
1526 <                threadAssertNull(q.poll());
1527 <                threadAssertTrue(null != q.poll(MEDIUM_DELAY_MS, MILLISECONDS));
1528 <                threadAssertTrue(q.isEmpty());
1526 >                assertNull(q.poll());
1527 >                assertSame(one, q.poll(MEDIUM_DELAY_MS, MILLISECONDS));
1528 >                assertTrue(q.isEmpty());
1529              }});
1530  
1531          executor.execute(new CheckedRunnable() {
# Line 1652 | Line 1645 | public class LinkedBlockingDequeTest ext
1645      }
1646  
1647      /**
1648 <     * drainTo(c, n) empties first max {n, size} elements of deque into c
1648 >     * drainTo(c, n) empties first min(n, size) elements of queue into c
1649       */
1650      public void testDrainToN() {
1651          LinkedBlockingDeque q = new LinkedBlockingDeque();
# Line 1661 | Line 1654 | public class LinkedBlockingDequeTest ext
1654                  assertTrue(q.offer(new Integer(j)));
1655              ArrayList l = new ArrayList();
1656              q.drainTo(l, i);
1657 <            int k = (i < SIZE)? i : SIZE;
1657 >            int k = (i < SIZE) ? i : SIZE;
1658              assertEquals(l.size(), k);
1659              assertEquals(q.size(), SIZE-k);
1660              for (int j = 0; j < k; ++j)

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines