[cvs] / jsr166 / src / test / tck / ArrayBlockingQueueTest.java Repository:
ViewVC logotype

Diff of /jsr166/src/test/tck/ArrayBlockingQueueTest.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.6, Sun Oct 5 23:00:39 2003 UTC revision 1.16, Sat Nov 21 02:33:20 2009 UTC
# Line 1  Line 1 
1  /*  /*
2   * Written by members of JCP JSR-166 Expert Group and released to the   * Written by Doug Lea with assistance from members of JCP JSR-166
3   * public domain. Use, modify, and redistribute this code in any way   * Expert Group and released to the public domain, as explained at
4   * without acknowledgement. Other contributors include Andrew Wright,   * http://creativecommons.org/licenses/publicdomain
5   * Jeffrey Hayes, Pat Fischer, Mike Judd.   * Other contributors include Andrew Wright, Jeffrey Hayes,
6     * Pat Fisher, Mike Judd.
7   */   */
8    
9    
10  import junit.framework.*;  import junit.framework.*;
11  import java.util.*;  import java.util.*;
12  import java.util.concurrent.*;  import java.util.concurrent.*;
13    import static java.util.concurrent.TimeUnit.MILLISECONDS;
14  import java.io.*;  import java.io.*;
15    
16  public class ArrayBlockingQueueTest extends JSR166TestCase {  public class ArrayBlockingQueueTest extends JSR166TestCase {
# Line 318  Line 320 
320       * put blocks interruptibly if full       * put blocks interruptibly if full
321       */       */
322      public void testBlockingPut() {      public void testBlockingPut() {
323            final ArrayBlockingQueue q = new ArrayBlockingQueue(SIZE);
324          Thread t = new Thread(new Runnable() {          Thread t = new Thread(new Runnable() {
325                  public void run() {                  public void run() {
326                      int added = 0;                      int added = 0;
327                      try {                      try {
                         ArrayBlockingQueue q = new ArrayBlockingQueue(SIZE);  
328                          for (int i = 0; i < SIZE; ++i) {                          for (int i = 0; i < SIZE; ++i) {
329                              q.put(new Integer(i));                              q.put(new Integer(i));
330                              ++added;                              ++added;
# Line 335  Line 337 
337                  }});                  }});
338          try {          try {
339              t.start();              t.start();
340             Thread.sleep(SHORT_DELAY_MS);             Thread.sleep(MEDIUM_DELAY_MS);
341             t.interrupt();             t.interrupt();
342             t.join();             t.join();
343          }          }
# Line 388  Line 390 
390                      try {                      try {
391                          q.put(new Object());                          q.put(new Object());
392                          q.put(new Object());                          q.put(new Object());
393                          threadAssertFalse(q.offer(new Object(), SHORT_DELAY_MS/2, TimeUnit.MILLISECONDS));                          threadAssertFalse(q.offer(new Object(), SHORT_DELAY_MS/2, MILLISECONDS));
394                          q.offer(new Object(), LONG_DELAY_MS, TimeUnit.MILLISECONDS);                          q.offer(new Object(), LONG_DELAY_MS, MILLISECONDS);
395                          threadShouldThrow();                          threadShouldThrow();
396                      } catch (InterruptedException success){}                      } catch (InterruptedException success){}
397                  }                  }
# Line 488  Line 490 
490          try {          try {
491              ArrayBlockingQueue q = populatedQueue(SIZE);              ArrayBlockingQueue q = populatedQueue(SIZE);
492              for (int i = 0; i < SIZE; ++i) {              for (int i = 0; i < SIZE; ++i) {
493                  assertEquals(i, ((Integer)q.poll(0, TimeUnit.MILLISECONDS)).intValue());                  assertEquals(i, ((Integer)q.poll(0, MILLISECONDS)).intValue());
494              }              }
495              assertNull(q.poll(0, TimeUnit.MILLISECONDS));              assertNull(q.poll(0, MILLISECONDS));
496          } catch (InterruptedException e){          } catch (InterruptedException e){
497              unexpectedException();              unexpectedException();
498          }          }
# Line 503  Line 505 
505          try {          try {
506              ArrayBlockingQueue q = populatedQueue(SIZE);              ArrayBlockingQueue q = populatedQueue(SIZE);
507              for (int i = 0; i < SIZE; ++i) {              for (int i = 0; i < SIZE; ++i) {
508                  assertEquals(i, ((Integer)q.poll(SHORT_DELAY_MS, TimeUnit.MILLISECONDS)).intValue());                  assertEquals(i, ((Integer)q.poll(SHORT_DELAY_MS, MILLISECONDS)).intValue());
509              }              }
510              assertNull(q.poll(SHORT_DELAY_MS, TimeUnit.MILLISECONDS));              assertNull(q.poll(SHORT_DELAY_MS, MILLISECONDS));
511          } catch (InterruptedException e){          } catch (InterruptedException e){
512              unexpectedException();              unexpectedException();
513          }          }
# Line 521  Line 523 
523                      try {                      try {
524                          ArrayBlockingQueue q = populatedQueue(SIZE);                          ArrayBlockingQueue q = populatedQueue(SIZE);
525                          for (int i = 0; i < SIZE; ++i) {                          for (int i = 0; i < SIZE; ++i) {
526                              threadAssertEquals(i, ((Integer)q.poll(SHORT_DELAY_MS, TimeUnit.MILLISECONDS)).intValue());                              threadAssertEquals(i, ((Integer)q.poll(SHORT_DELAY_MS, MILLISECONDS)).intValue());
527                          }                          }
528                          threadAssertNull(q.poll(SHORT_DELAY_MS, TimeUnit.MILLISECONDS));                          threadAssertNull(q.poll(SHORT_DELAY_MS, MILLISECONDS));
529                      } catch (InterruptedException success){                      } catch (InterruptedException success){
530                      }                      }
531                  }});                  }});
# Line 547  Line 549 
549          Thread t = new Thread(new Runnable() {          Thread t = new Thread(new Runnable() {
550                  public void run() {                  public void run() {
551                      try {                      try {
552                          threadAssertNull(q.poll(SHORT_DELAY_MS, TimeUnit.MILLISECONDS));                          threadAssertNull(q.poll(SHORT_DELAY_MS, MILLISECONDS));
553                          q.poll(LONG_DELAY_MS, TimeUnit.MILLISECONDS);                          q.poll(LONG_DELAY_MS, MILLISECONDS);
554                          q.poll(LONG_DELAY_MS, TimeUnit.MILLISECONDS);                          q.poll(LONG_DELAY_MS, MILLISECONDS);
555                          threadShouldThrow();                          threadShouldThrow();
556                      } catch (InterruptedException success) { }                      } catch (InterruptedException success) { }
557                  }                  }
# Line 557  Line 559 
559          try {          try {
560              t.start();              t.start();
561              Thread.sleep(SMALL_DELAY_MS);              Thread.sleep(SMALL_DELAY_MS);
562              assertTrue(q.offer(zero, SHORT_DELAY_MS, TimeUnit.MILLISECONDS));              assertTrue(q.offer(zero, SHORT_DELAY_MS, MILLISECONDS));
563              t.interrupt();              t.interrupt();
564              t.join();              t.join();
565          } catch (Exception e){          } catch (Exception e){
# Line 649  Line 651 
651          assertEquals(SIZE, q.remainingCapacity());          assertEquals(SIZE, q.remainingCapacity());
652          q.add(one);          q.add(one);
653          assertFalse(q.isEmpty());          assertFalse(q.isEmpty());
654            assertTrue(q.contains(one));
655          q.clear();          q.clear();
656          assertTrue(q.isEmpty());          assertTrue(q.isEmpty());
657      }      }
# Line 743  Line 746 
746      }      }
747    
748      /**      /**
749       * toArray with incompatable array type throws CCE       * toArray with incompatible array type throws CCE
750       */       */
751      public void testToArray1_BadArg() {      public void testToArray1_BadArg() {
752          try {          try {
# Line 852  Line 855 
855              public void run() {              public void run() {
856                  threadAssertFalse(q.offer(three));                  threadAssertFalse(q.offer(three));
857                  try {                  try {
858                      threadAssertTrue(q.offer(three, MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS));                      threadAssertTrue(q.offer(three, MEDIUM_DELAY_MS, MILLISECONDS));
859                      threadAssertEquals(0, q.remainingCapacity());                      threadAssertEquals(0, q.remainingCapacity());
860                  }                  }
861                  catch (InterruptedException e) {                  catch (InterruptedException e) {
# Line 887  Line 890 
890              public void run() {              public void run() {
891                  threadAssertNull(q.poll());                  threadAssertNull(q.poll());
892                  try {                  try {
893                      threadAssertTrue(null != q.poll(MEDIUM_DELAY_MS, TimeUnit.MILLISECONDS));                      threadAssertTrue(null != q.poll(MEDIUM_DELAY_MS, MILLISECONDS));
894                      threadAssertTrue(q.isEmpty());                      threadAssertTrue(q.isEmpty());
895                  }                  }
896                  catch (InterruptedException e) {                  catch (InterruptedException e) {
# Line 969  Line 972 
972          assertEquals(l.size(), SIZE);          assertEquals(l.size(), SIZE);
973          for (int i = 0; i < SIZE; ++i)          for (int i = 0; i < SIZE; ++i)
974              assertEquals(l.get(i), new Integer(i));              assertEquals(l.get(i), new Integer(i));
975            q.add(zero);
976            q.add(one);
977            assertFalse(q.isEmpty());
978            assertTrue(q.contains(zero));
979            assertTrue(q.contains(one));
980            l.clear();
981            q.drainTo(l);
982            assertEquals(q.size(), 0);
983            assertEquals(l.size(), 2);
984            for (int i = 0; i < 2; ++i)
985                assertEquals(l.get(i), new Integer(i));
986      }      }
987    
988      /**      /**
# Line 993  Line 1007 
1007              for (int i = 0; i < SIZE; ++i)              for (int i = 0; i < SIZE; ++i)
1008                  assertEquals(l.get(i), new Integer(i));                  assertEquals(l.get(i), new Integer(i));
1009              t.join();              t.join();
1010              assertTrue(q.size() + l.size() == SIZE+1);              assertTrue(q.size() + l.size() >= SIZE);
1011          } catch(Exception e){          } catch(Exception e){
1012              unexpectedException();              unexpectedException();
1013          }          }
# Line 1027  Line 1041 
1041       * drainTo(c, n) empties first max {n, size} elements of queue into c       * drainTo(c, n) empties first max {n, size} elements of queue into c
1042       */       */
1043      public void testDrainToN() {      public void testDrainToN() {
1044            ArrayBlockingQueue q = new ArrayBlockingQueue(SIZE*2);
1045          for (int i = 0; i < SIZE + 2; ++i) {          for (int i = 0; i < SIZE + 2; ++i) {
1046              ArrayBlockingQueue q = populatedQueue(SIZE);              for (int j = 0; j < SIZE; j++)
1047                    assertTrue(q.offer(new Integer(j)));
1048              ArrayList l = new ArrayList();              ArrayList l = new ArrayList();
1049              q.drainTo(l, i);              q.drainTo(l, i);
1050              int k = (i < SIZE)? i : SIZE;              int k = (i < SIZE)? i : SIZE;
             assertEquals(q.size(), SIZE-k);  
1051              assertEquals(l.size(), k);              assertEquals(l.size(), k);
1052                assertEquals(q.size(), SIZE-k);
1053              for (int j = 0; j < k; ++j)              for (int j = 0; j < k; ++j)
1054                  assertEquals(l.get(j), new Integer(j));                  assertEquals(l.get(j), new Integer(j));
1055                while (q.poll() != null) ;
1056          }          }
1057      }      }
1058    

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.16

Doug Lea
ViewVC Help
Powered by ViewVC 1.0.8