package com.loadimpact.eval; import org.junit.Before; import org.junit.Test; import java.util.List; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.notNullValue; /** * Unit test of class BoundedDroppingQueue<T> * * @author jens * @date 2013-10-06, 09:13 */ public class BoundedDroppingQueueTest { private BoundedDroppingQueue<Integer> target; private final int N = 3; @Before public void setUp() throws Exception { target = new BoundedDroppingQueue<Integer>(N); } @Test public void a_few_put_and_get_should_pass() throws Exception { assertThat(target.size(), is(0)); assertThat(target.empty(), is(true)); for (int k = 1; k <= N; ++k) target.put(k); assertThat(target.full(), is(true)); for (int k = 1; k <= N; ++k) { int x = target.get(); assertThat(x, is(k)); } assertThat(target.size(), is(0)); assertThat(target.empty(), is(true)); } @Test public void more_put_than_size_should_pass() throws Exception { for (int k = 1; k <= N * 2; ++k) target.put(k); assertThat(target.size(), is(N)); int k = N + 1; while (!target.empty()) { int n = target.get(); assertThat(n, is(k++)); } } @Test(expected = IllegalArgumentException.class) public void get_on_empty_should_fail() { target.put(1); target.get(); target.get(); } @Test public void queue_size_1_should_pass() { target = new BoundedDroppingQueue<Integer>(1); assertThat(target.size(), is(0)); int M = 100; for (int k = 1; k <= M; ++k) { target.put(k); assertThat(target.size(), is(1)); } assertThat(target.get(), is(M)); assertThat(target.size(), is(0)); } @Test public void foreach_loop_should_pass() { for (int k = 1; k <= N + 1; ++k) target.put(k); assertThat(target.size(), is(N)); int k = 2; for (Integer n : target) assertThat(n, is(k++)); assertThat(target.size(), is(N)); } @Test public void toList_should_pass() { for (int k = 1; k <= N * 2; ++k) target.put(k); assertThat(target.size(), is(N)); List<Integer> lst = target.toList(); assertThat(lst, notNullValue()); assertThat(lst.size(), is(target.size())); assertThat(lst.size(), is(N)); int k = N + 1; for (Integer n : lst) { assertThat(n, is(k++)); } } }