4344454647484950515253
BlockingQueue q = new LocalConcurrentBlockingObjectQueue(n); assertTrue(q.isEmpty()); for (int i = 0; i < n; i++) assertTrue(q.offer(new Integer(i))); assertFalse(q.isEmpty()); assertEquals(0, q.remainingCapacity()); assertEquals(n, q.size()); return q; } /**
152153154155156157158159160161162
*/ @Test public void testEmptyFull() { BlockingQueue q = new LocalConcurrentBlockingObjectQueue(2); assertTrue(q.isEmpty()); assertEquals(2, q.remainingCapacity()); q.add(one); assertFalse(q.isEmpty()); q.add(two); assertFalse(q.isEmpty()); assertEquals(0, q.remainingCapacity());
157158159160161162163164165166167
assertEquals(2, q.remainingCapacity()); q.add(one); assertFalse(q.isEmpty()); q.add(two); assertFalse(q.isEmpty()); assertEquals(0, q.remainingCapacity()); assertFalse(q.offer(three)); } /** * remainingCapacity decreases on add, increases on remove
199200201202203204205206207208209
try { BlockingQueue q = new LocalConcurrentBlockingObjectQueue(SIZE); for (int i = 0; i < SIZE; ++i) { assertTrue(q.add(new Integer(i))); } assertEquals(0, q.remainingCapacity()); q.add(new Integer(SIZE)); shouldThrow(); } catch (IllegalStateException success) { } }
279280281282283284285286287288289
for (int i = 0; i < SIZE; ++i) { Integer I = new Integer(i); q.put(I); assertTrue(q.contains(I)); } assertEquals(0, q.remainingCapacity()); } /** * put blocks interruptibly if full */
294295296297298299300301302303304
Thread t = newStartedThread(new CheckedRunnable() { public void realRun() throws InterruptedException { for (int i = 0; i < SIZE; ++i) q.put(i); assertEquals(SIZE, q.size()); assertEquals(0, q.remainingCapacity()); Thread.currentThread().interrupt(); try { q.put(99); shouldThrow();
319320321322323324325326327328329
await(pleaseInterrupt); assertThreadStaysAlive(t); t.interrupt(); awaitTermination(t); assertEquals(SIZE, q.size()); assertEquals(0, q.remainingCapacity()); } /** * put blocks interruptibly waiting for take when full */
349350351352353354355356357358359
assertFalse(Thread.interrupted()); } }); await(pleaseTake); assertEquals(0, q.remainingCapacity()); assertEquals(0, q.take()); await(pleaseInterrupt); assertThreadStaysAlive(t); t.interrupt();
356357358359360361362363364365366
await(pleaseInterrupt); assertThreadStaysAlive(t); t.interrupt(); awaitTermination(t); assertEquals(0, q.remainingCapacity()); } /** * timed offer times out if full and elements not taken */
792793794795796797798799800801802
final BlockingQueue q = new LocalConcurrentBlockingObjectQueue(3); q.add(one); q.add(two); q.add(three); assertEquals("queue should be full", 0, q.remainingCapacity()); int k = 0; for (Iterator it = q.iterator(); it.hasNext(); ) { assertEquals(++k, it.next()); }