@Test public void testGetBatchBlocking() { try { ClosableBlockingQueue<String> queue = new ClosableBlockingQueue<>(); assertEquals(emptyList(), queue.getBatchBlocking(1)); assertEquals(emptyList(), queue.getBatchBlocking(3)); assertEquals(emptyList(), queue.getBatchBlocking(2)); queue.add("a"); queue.add("b"); assertEquals(asList("a", "b"), queue.getBatchBlocking(900000009)); queue.add("c"); queue.add("d"); assertEquals(asList("c", "d"), queue.getBatchBlocking()); assertEquals(emptyList(), queue.getBatchBlocking(2)); queue.add("e"); assertEquals(singletonList("e"), queue.getBatchBlocking(0)); queue.add("f"); assertEquals(singletonList("f"), queue.getBatchBlocking(1000000000)); assertEquals(0, queue.size()); assertEquals(emptyList(), queue.getBatchBlocking(1)); assertEquals(emptyList(), queue.getBatchBlocking(3)); assertEquals(emptyList(), queue.getBatchBlocking(2)); assertTrue(queue.close()); try { queue.getBatchBlocking(); fail("should cause an exception"); } catch (IllegalStateException ignored) { // expected } try { queue.getBatchBlocking(1000000000L); fail("should cause an exception"); } catch (IllegalStateException ignored) { // expected } } catch (Exception e) { e.printStackTrace(); fail(e.getMessage()); } }