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.39 by jsr166, Fri Nov 5 00:17:22 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 >        Integer[] array = q.toArray(ints);
570 >        assertSame(ints, array);
571          for (int i = 0; i < ints.length; i++) {
572 <            assertEquals(ints[i], q.take());
572 >            assertSame(ints[i], q.poll());
573          }
574      }
575  
576      /**
577       * toArray(null) throws NullPointerException
578       */
579 <    public void testToArray_BadArg() {
579 >    public void testToArray_NullArg() {
580          LinkedTransferQueue q = populatedQueue(SIZE);
581          try {
582 <            Object o[] = q.toArray(null);
582 >            q.toArray(null);
583              shouldThrow();
584          } catch (NullPointerException success) {}
585      }
586  
587      /**
588 <     * toArray(incompatible array type) throws CCE
588 >     * toArray(incompatible array type) throws ArrayStoreException
589       */
590      public void testToArray1_BadArg() {
591          LinkedTransferQueue q = populatedQueue(SIZE);
592          try {
593 <            Object o[] = q.toArray(new String[10]);
593 >            q.toArray(new String[10]);
594              shouldThrow();
595          } catch (ArrayStoreException success) {}
596      }
# Line 739 | Line 743 | public class LinkedTransferQueueTest ext
743          LinkedTransferQueue r = (LinkedTransferQueue) in.readObject();
744  
745          assertEquals(q.size(), r.size());
746 +        assertEquals(q.toString(), r.toString());
747 +        assertTrue(Arrays.equals(q.toArray(), r.toArray()));
748          while (!q.isEmpty()) {
749              assertEquals(q.remove(), r.remove());
750          }
# Line 908 | Line 914 | public class LinkedTransferQueueTest ext
914          Thread t = newStartedThread(new CheckedRunnable() {
915              public void realRun() throws InterruptedException {
916                  threadStarted.countDown();
917 <                q.transfer(SIZE);
917 >                q.transfer(five);
918                  checkEmpty(q);
919              }});
920  
921          threadStarted.await();
922          waitForThreadToEnterWaitState(t, SMALL_DELAY_MS);
917        assertTrue(t.isAlive());
923          assertEquals(1, q.size());
924 <        assertEquals(SIZE, (int) q.poll());
924 >        assertSame(five, q.poll());
925          checkEmpty(q);
926          awaitTermination(t, MEDIUM_DELAY_MS);
927      }
# Line 930 | Line 935 | public class LinkedTransferQueueTest ext
935  
936          Thread first = newStartedThread(new CheckedRunnable() {
937              public void realRun() throws InterruptedException {
938 <                Integer i = SIZE + 1;
939 <                q.transfer(i);
935 <                assertTrue(!q.contains(i));
938 >                q.transfer(four);
939 >                assertTrue(!q.contains(four));
940                  assertEquals(1, q.size());
941              }});
942  
943          Thread interruptedThread = newStartedThread(
944              new CheckedInterruptedRunnable() {
945                  public void realRun() throws InterruptedException {
946 <                    while (q.size() == 0)
946 >                    while (q.isEmpty())
947                          Thread.yield();
948 <                    q.transfer(SIZE);
948 >                    q.transfer(five);
949                  }});
950  
951          while (q.size() < 2)
952              Thread.yield();
953          assertEquals(2, q.size());
954 <        assertEquals(SIZE + 1, (int) q.poll());
954 >        assertSame(four, q.poll());
955          first.join();
956          assertEquals(1, q.size());
957          interruptedThread.interrupt();
# Line 1094 | Line 1098 | public class LinkedTransferQueueTest ext
1098      }
1099  
1100      /**
1101 <     * tryTransfer gives up after the timeout and return false
1101 >     * tryTransfer gives up after the timeout and returns false
1102       */
1103      public void testTryTransfer6() throws InterruptedException {
1104          final LinkedTransferQueue q = new LinkedTransferQueue();
# Line 1105 | Line 1109 | public class LinkedTransferQueueTest ext
1109                  assertFalse(q.tryTransfer(new Object(),
1110                                            SHORT_DELAY_MS, MILLISECONDS));
1111                  assertTrue(millisElapsedSince(t0) >= SHORT_DELAY_MS);
1112 +                checkEmpty(q);
1113              }});
1114  
1110        checkEmpty(q);
1115          awaitTermination(t, MEDIUM_DELAY_MS);
1116          checkEmpty(q);
1117      }
# Line 1126 | Line 1130 | public class LinkedTransferQueueTest ext
1130                  checkEmpty(q);
1131              }});
1132  
1133 <        Thread.sleep(SHORT_DELAY_MS);
1133 >        while (q.size() != 2)
1134 >            Thread.yield();
1135          assertEquals(2, q.size());
1136          assertSame(four, q.poll());
1137          assertSame(five, q.poll());
# Line 1142 | Line 1147 | public class LinkedTransferQueueTest ext
1147          final LinkedTransferQueue q = new LinkedTransferQueue();
1148          assertTrue(q.offer(four));
1149          assertEquals(1, q.size());
1150 +        long t0 = System.nanoTime();
1151          assertFalse(q.tryTransfer(five, SHORT_DELAY_MS, MILLISECONDS));
1152 +        assertTrue(millisElapsedSince(t0) >= SHORT_DELAY_MS);
1153          assertEquals(1, q.size());
1154          assertSame(four, q.poll());
1155          assertNull(q.poll());

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines