@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 testCreateQueueHashCodeEquals() { try { ClosableBlockingQueue<String> queue1 = new ClosableBlockingQueue<>(); ClosableBlockingQueue<String> queue2 = new ClosableBlockingQueue<>(22); assertTrue(queue1.isOpen()); assertTrue(queue2.isOpen()); assertTrue(queue1.isEmpty()); assertTrue(queue2.isEmpty()); assertEquals(0, queue1.size()); assertEquals(0, queue2.size()); assertTrue(queue1.hashCode() == queue2.hashCode()); //noinspection EqualsWithItself assertTrue(queue1.equals(queue1)); //noinspection EqualsWithItself assertTrue(queue2.equals(queue2)); assertTrue(queue1.equals(queue2)); assertNotNull(queue1.toString()); assertNotNull(queue2.toString()); List<String> elements = new ArrayList<>(); elements.add("a"); elements.add("b"); elements.add("c"); ClosableBlockingQueue<String> queue3 = new ClosableBlockingQueue<>(elements); ClosableBlockingQueue<String> queue4 = new ClosableBlockingQueue<>(asList("a", "b", "c")); assertTrue(queue3.isOpen()); assertTrue(queue4.isOpen()); assertFalse(queue3.isEmpty()); assertFalse(queue4.isEmpty()); assertEquals(3, queue3.size()); assertEquals(3, queue4.size()); assertTrue(queue3.hashCode() == queue4.hashCode()); //noinspection EqualsWithItself assertTrue(queue3.equals(queue3)); //noinspection EqualsWithItself assertTrue(queue4.equals(queue4)); assertTrue(queue3.equals(queue4)); assertNotNull(queue3.toString()); assertNotNull(queue4.toString()); } catch (Exception e) { e.printStackTrace(); fail(e.getMessage()); } }
@Test public void testCloseEmptyQueue() { try { ClosableBlockingQueue<String> queue = new ClosableBlockingQueue<>(); assertTrue(queue.isOpen()); assertTrue(queue.close()); assertFalse(queue.isOpen()); assertFalse(queue.addIfOpen("element")); assertTrue(queue.isEmpty()); try { queue.add("some element"); fail("should cause an exception"); } catch (IllegalStateException ignored) { // expected } } catch (Exception e) { e.printStackTrace(); fail(e.getMessage()); } }