@Test public void testCloseNonEmptyQueue() { try { ClosableBlockingQueue<Integer> queue = new ClosableBlockingQueue<>(asList(1, 2, 3)); assertTrue(queue.isOpen()); assertFalse(queue.close()); assertFalse(queue.close()); queue.poll(); assertFalse(queue.close()); assertFalse(queue.close()); queue.pollBatch(); assertTrue(queue.close()); assertFalse(queue.isOpen()); assertFalse(queue.addIfOpen(42)); assertTrue(queue.isEmpty()); try { queue.add(99); fail("should cause an exception"); } catch (IllegalStateException ignored) { // expected } } catch (Exception e) { e.printStackTrace(); fail(e.getMessage()); } }
@Test public void testPollBatch() { try { ClosableBlockingQueue<String> queue = new ClosableBlockingQueue<>(); assertNull(queue.pollBatch()); queue.add("a"); queue.add("b"); assertEquals(asList("a", "b"), queue.pollBatch()); assertNull(queue.pollBatch()); queue.add("c"); assertEquals(singletonList("c"), queue.pollBatch()); assertNull(queue.pollBatch()); assertTrue(queue.close()); try { queue.pollBatch(); fail("should cause an exception"); } catch (IllegalStateException ignored) { // expected } } catch (Exception e) { e.printStackTrace(); fail(e.getMessage()); } }