--- jsr166/src/test/tck/BlockingQueueTest.java 2011/05/30 23:51:08 1.9 +++ jsr166/src/test/tck/BlockingQueueTest.java 2011/06/14 03:22:38 1.10 @@ -8,6 +8,7 @@ */ import junit.framework.*; +import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Queue; @@ -180,6 +181,33 @@ public abstract class BlockingQueueTest } /** + * drainTo(c, -n) returns 0 + */ + public void testDrainToNegativeMaxElements() { + final BlockingQueue q = emptyCollection(); + assertEquals(0, q.drainTo(new ArrayList(), -42)); + } + + /** + * drainTo(c, 0) returns 0 and does nothing + */ + public void testDrainToZeroMaxElements() { + final BlockingQueue q = emptyCollection(); + if (q.remainingCapacity() == 0) { + // SynchronousQueue, for example + assertEquals(0, q.drainTo(new ArrayList(), 0)); + } else { + Object one = makeElement(1); + q.add(one); + ArrayList c = new ArrayList(); + assertEquals(0, q.drainTo(c, 0)); + assertEquals(1, q.size()); + assertSame(one, q.poll()); + assertTrue(c.isEmpty()); + } + } + + /** * timed poll before a delayed offer times out; after offer succeeds; * on interruption throws */