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

Comparing jsr166/src/test/tck/LinkedTransferQueueTest.java (file contents):
Revision 1.31 by jsr166, Thu Oct 28 22:42:05 2010 UTC vs.
Revision 1.38 by jsr166, Thu Nov 4 01:04:54 2010 UTC

# Line 354 | Line 354 | public class LinkedTransferQueueTest ext
354                  for (int i = 0; i < SIZE; ++i) {
355                      long t0 = System.nanoTime();
356                      assertEquals(i, (int) q.poll(LONG_DELAY_MS, MILLISECONDS));
357 <                    assertTrue(millisElapsedSince(t0) < SHORT_DELAY_MS);
357 >                    assertTrue(millisElapsedSince(t0) < SMALL_DELAY_MS);
358                  }
359 +                long t0 = System.nanoTime();
360                  aboutToWait.countDown();
361                  try {
362                      q.poll(MEDIUM_DELAY_MS, MILLISECONDS);
363                      shouldThrow();
364 <                } catch (InterruptedException success) {}
364 >                } catch (InterruptedException success) {
365 >                    assertTrue(millisElapsedSince(t0) < MEDIUM_DELAY_MS);
366 >                }
367              }});
368  
369          aboutToWait.await();
# Line 382 | Line 385 | public class LinkedTransferQueueTest ext
385                  for (int i = 0; i < SIZE; ++i) {
386                      long t0 = System.nanoTime();
387                      assertEquals(i, (int) q.poll(LONG_DELAY_MS, MILLISECONDS));
388 <                    assertTrue(millisElapsedSince(t0) < SHORT_DELAY_MS);
388 >                    assertTrue(millisElapsedSince(t0) < SMALL_DELAY_MS);
389                  }
390                  try {
391                      q.poll(MEDIUM_DELAY_MS, MILLISECONDS);
# Line 547 | Line 550 | public class LinkedTransferQueueTest ext
550      }
551  
552      /**
553 <     * toArray() contains all elements
553 >     * toArray() contains all elements in FIFO order
554       */
555 <    public void testToArray() throws InterruptedException {
555 >    public void testToArray() {
556          LinkedTransferQueue q = populatedQueue(SIZE);
557          Object[] o = q.toArray();
558          for (int i = 0; i < o.length; i++) {
559 <            assertEquals(o[i], q.take());
559 >            assertSame(o[i], q.poll());
560          }
561      }
562  
563      /**
564 <     * toArray(a) contains all elements
564 >     * toArray(a) contains all elements in FIFO order
565       */
566 <    public void testToArray2() throws InterruptedException {
566 >    public void testToArray2() {
567          LinkedTransferQueue<Integer> q = populatedQueue(SIZE);
568          Integer[] ints = new Integer[SIZE];
569 <        ints = q.toArray(ints);
569 >        assertSame(ints, q.toArray(ints));
570          for (int i = 0; i < ints.length; i++) {
571 <            assertEquals(ints[i], q.take());
571 >            assertSame(ints[i], q.poll());
572          }
573      }
574  
575      /**
576       * toArray(null) throws NullPointerException
577       */
578 <    public void testToArray_BadArg() {
578 >    public void testToArray_NullArg() {
579          LinkedTransferQueue q = populatedQueue(SIZE);
580          try {
581 <            Object o[] = q.toArray(null);
581 >            q.toArray(null);
582              shouldThrow();
583          } catch (NullPointerException success) {}
584      }
585  
586      /**
587 <     * toArray(incompatible array type) throws CCE
587 >     * toArray(incompatible array type) throws ArrayStoreException
588       */
589      public void testToArray1_BadArg() {
590          LinkedTransferQueue q = populatedQueue(SIZE);
591          try {
592 <            Object o[] = q.toArray(new String[10]);
592 >            q.toArray(new String[10]);
593              shouldThrow();
594          } catch (ArrayStoreException success) {}
595      }
# Line 739 | Line 742 | public class LinkedTransferQueueTest ext
742          LinkedTransferQueue r = (LinkedTransferQueue) in.readObject();
743  
744          assertEquals(q.size(), r.size());
745 +        assertEquals(q.toString(), r.toString());
746 +        assertTrue(Arrays.equals(q.toArray(), r.toArray()));
747          while (!q.isEmpty()) {
748              assertEquals(q.remove(), r.remove());
749          }
# Line 908 | Line 913 | public class LinkedTransferQueueTest ext
913          Thread t = newStartedThread(new CheckedRunnable() {
914              public void realRun() throws InterruptedException {
915                  threadStarted.countDown();
916 <                q.transfer(SIZE);
916 >                q.transfer(five);
917                  checkEmpty(q);
918              }});
919  
920          threadStarted.await();
921          waitForThreadToEnterWaitState(t, SMALL_DELAY_MS);
917        assertTrue(t.isAlive());
922          assertEquals(1, q.size());
923 <        assertEquals(SIZE, (int) q.poll());
923 >        assertSame(five, q.poll());
924          checkEmpty(q);
925          awaitTermination(t, MEDIUM_DELAY_MS);
926      }
# Line 930 | Line 934 | public class LinkedTransferQueueTest ext
934  
935          Thread first = newStartedThread(new CheckedRunnable() {
936              public void realRun() throws InterruptedException {
937 <                Integer i = SIZE + 1;
938 <                q.transfer(i);
935 <                assertTrue(!q.contains(i));
937 >                q.transfer(four);
938 >                assertTrue(!q.contains(four));
939                  assertEquals(1, q.size());
940              }});
941  
942          Thread interruptedThread = newStartedThread(
943              new CheckedInterruptedRunnable() {
944                  public void realRun() throws InterruptedException {
945 <                    while (q.size() == 0)
945 >                    while (q.isEmpty())
946                          Thread.yield();
947 <                    q.transfer(SIZE);
947 >                    q.transfer(five);
948                  }});
949  
950          while (q.size() < 2)
951              Thread.yield();
952          assertEquals(2, q.size());
953 <        assertEquals(SIZE + 1, (int) q.poll());
953 >        assertSame(four, q.poll());
954          first.join();
955          assertEquals(1, q.size());
956          interruptedThread.interrupt();
# Line 1094 | Line 1097 | public class LinkedTransferQueueTest ext
1097      }
1098  
1099      /**
1100 <     * tryTransfer gives up after the timeout and return false
1100 >     * tryTransfer gives up after the timeout and returns false
1101       */
1102      public void testTryTransfer6() throws InterruptedException {
1103          final LinkedTransferQueue q = new LinkedTransferQueue();
# Line 1105 | Line 1108 | public class LinkedTransferQueueTest ext
1108                  assertFalse(q.tryTransfer(new Object(),
1109                                            SHORT_DELAY_MS, MILLISECONDS));
1110                  assertTrue(millisElapsedSince(t0) >= SHORT_DELAY_MS);
1111 +                checkEmpty(q);
1112              }});
1113  
1110        checkEmpty(q);
1114          awaitTermination(t, MEDIUM_DELAY_MS);
1115          checkEmpty(q);
1116      }
# Line 1126 | Line 1129 | public class LinkedTransferQueueTest ext
1129                  checkEmpty(q);
1130              }});
1131  
1132 <        Thread.sleep(SHORT_DELAY_MS);
1132 >        while (q.size() != 2)
1133 >            Thread.yield();
1134          assertEquals(2, q.size());
1135          assertSame(four, q.poll());
1136          assertSame(five, q.poll());
# Line 1142 | Line 1146 | public class LinkedTransferQueueTest ext
1146          final LinkedTransferQueue q = new LinkedTransferQueue();
1147          assertTrue(q.offer(four));
1148          assertEquals(1, q.size());
1149 +        long t0 = System.nanoTime();
1150          assertFalse(q.tryTransfer(five, SHORT_DELAY_MS, MILLISECONDS));
1151 +        assertTrue(millisElapsedSince(t0) >= SHORT_DELAY_MS);
1152          assertEquals(1, q.size());
1153          assertSame(four, q.poll());
1154          assertNull(q.poll());

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines