### Question:
BoundedQueue extends LinkedBlockingDeque<Runnable> { @Override public boolean offer(final Runnable task) { while (!super.offer(task)) { remove(); totalEvictedTaskCounter.inc(); } return true; } BoundedQueue(
      final int capacity, final String metricName, final MetricsSystem metricsSystem); @Override boolean offer(final Runnable task);  }### Answer:
@Test public void offerShouldAcceptNewElements() { int size = 10; final BoundedQueue queue = new BoundedQueue(size, "test", new NoOpMetricsSystem()); for (int i = 0; i < size; i++) { final Runnable task = () -> {}; assertThat(queue.offer(task)).isTrue(); assertThat(queue).contains(task); assertThat(queue.size()).isEqualTo(i + 1); } }
@Test public void offerShouldMakeARoomAndAcceptNewElementAtFullCapacity() { final BoundedQueue queue = new BoundedQueue(2, "test", new NoOpMetricsSystem()); final Runnable task1 = () -> {}; final Runnable task2 = () -> {}; final Runnable task3 = () -> {}; assertThat(queue.offer(task1)).isTrue(); assertThat(queue.size()).isEqualTo(1); assertThat(queue).contains(task1); assertThat(queue.offer(task2)).isTrue(); assertThat(queue.size()).isEqualTo(2); assertThat(queue).contains(task2); assertThat(queue.offer(task3)).isTrue(); assertThat(queue).doesNotContain(task1); assertThat(queue).contains(task2); assertThat(queue).contains(task3); assertThat(queue.size()).isEqualTo(2); }