package org.multiverse.stms.gamma;
import org.junit.Before;
import org.junit.Test;
import org.multiverse.api.blocking.DefaultRetryLatch;
import static org.junit.Assert.*;
public class GammaObjectPool_listenersTest {
private GammaObjectPool pool;
@Before
public void setUp() {
pool = new GammaObjectPool();
}
@Test(expected = NullPointerException.class)
public void whenNullPutInPool_thenNullPointerException() {
pool.putListeners(null);
}
@Test
public void whenPutInPool_thenPreparedForPooling() {
DefaultRetryLatch latch = new DefaultRetryLatch();
latch.reset();
Listeners next = new Listeners();
Listeners listeners = new Listeners();
listeners.listener = latch;
listeners.listenerEra = latch.getEra();
listeners.next = next;
pool.putListeners(listeners);
assertNull(listeners.next);
assertNull(listeners.listener);
assertEquals(Long.MIN_VALUE, listeners.listenerEra);
}
@Test
public void test() {
Listeners listeners1 = new Listeners();
Listeners listeners2 = new Listeners();
Listeners listeners3 = new Listeners();
pool.putListeners(listeners1);
pool.putListeners(listeners2);
pool.putListeners(listeners3);
assertSame(listeners3, pool.takeListeners());
assertSame(listeners2, pool.takeListeners());
assertSame(listeners1, pool.takeListeners());
assertNotNull(pool.takeListeners());
}
}