package org.multiverse.collections; import org.junit.Before; import org.junit.Test; import org.multiverse.api.Stm; import org.multiverse.api.StmUtils; import org.multiverse.api.Txn; import org.multiverse.api.callables.TxnVoidCallable; import static org.junit.Assert.assertEquals; import static org.multiverse.api.GlobalStmInstance.getGlobalStmInstance; import static org.multiverse.api.TxnThreadLocal.clearThreadLocalTxn; public class NaiveTxnLinkedList_indexOfTest { private Stm stm; private NaiveTxnLinkedList<String> list; @Before public void setUp() { stm = getGlobalStmInstance(); clearThreadLocalTxn(); list = new NaiveTxnLinkedList<String>(stm); } @Test public void whenNullItem_thenMinusOne() { StmUtils.atomic(new TxnVoidCallable() { @Override public void call(Txn tx) throws Exception { int result = list.indexOf(null); assertEquals(result, -1); assertEquals("[]", list.toString()); } }); } @Test public void whenEmptyList() { StmUtils.atomic(new TxnVoidCallable() { @Override public void call(Txn tx) throws Exception { int result = list.indexOf("a"); assertEquals(result, -1); assertEquals("[]", list.toString()); } }); } @Test public void whenNotFound_thenMinusOne() { StmUtils.atomic(new TxnVoidCallable() { @Override public void call(Txn tx) throws Exception { list.add("1"); list.add("2"); list.add("3"); list.add("4"); int result = list.indexOf("a"); assertEquals(result, -1); assertEquals("[1, 2, 3, 4]", list.toString()); } }); } @Test public void whenOnlyOnceInCollection() { StmUtils.atomic(new TxnVoidCallable() { @Override public void call(Txn tx) throws Exception { list.add("1"); list.add("2"); list.add("3"); list.add("4"); int result = list.indexOf("2"); assertEquals(1, result); assertEquals("[1, 2, 3, 4]", list.toString()); } }); } @Test public void whenMultipleTimesInCollection() { StmUtils.atomic(new TxnVoidCallable() { @Override public void call(Txn tx) throws Exception { list.add("1"); list.add("2"); list.add("3"); list.add("4"); list.add("2"); list.add("5"); int result = list.indexOf("2"); assertEquals(1, result); assertEquals("[1, 2, 3, 4, 2, 5]", list.toString()); } }); } }