package org.multiverse.stms.gamma; import org.junit.Before; import org.junit.Test; import org.multiverse.stms.gamma.transactionalobjects.GammaTxnLong; import org.multiverse.stms.gamma.transactionalobjects.Tranlocal; import org.multiverse.stms.gamma.transactions.GammaTxn; import static org.junit.Assert.*; public class GammaObjectPool_tranlocalArrayTest implements GammaConstants { private GammaObjectPool pool; private GammaStm stm; @Before public void setUp() { stm = new GammaStm(); pool = new GammaObjectPool(); } @Test public void whenItemPutInPool_thenPreparedForPooling() { Tranlocal[] array = new Tranlocal[2]; GammaTxn tx = stm.newDefaultTxn(); array[0] = new GammaTxnLong(stm).openForRead(tx, LOCKMODE_NONE); array[1] = new GammaTxnLong(stm).openForRead(tx, LOCKMODE_NONE); pool.putTranlocalArray(array); assertNull(array[0]); assertNull(array[1]); } @Test(expected = NullPointerException.class) public void whenNullArrayAdded_thenNullPointerException() { pool.putTranlocalArray(null); } @Test public void normalScenario_0() { normalScenario(0); } @Test public void normalScenario_1() { normalScenario(1); } @Test public void normalScenario_10() { normalScenario(10); } @Test public void normalScenario_100() { normalScenario(100); } public void normalScenario(int size) { Tranlocal[] array = new Tranlocal[size]; pool.putTranlocalArray(array); Tranlocal[] result = pool.takeTranlocalArray(array.length); assertSame(array, result); Tranlocal[] result2 = pool.takeTranlocalArray(array.length); assertNotNull(result2); assertNotSame(result, result2); } }