package com.mikepenz.fastadapter; import android.support.v7.widget.RecyclerView; import com.mikepenz.fastadapter.adapters.ItemAdapter; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricGradleTestRunner; import java.util.ArrayList; import java.util.List; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.only; import static org.mockito.Mockito.verify; /** * @author Shubham Chaudhary on 17/03/16 */ @RunWith(RobolectricGradleTestRunner.class) public class FastAdapterTest { private FastAdapter<TestItem> adapter; private ItemAdapter<TestItem> itemAdapter; @Before public void setUp() throws Exception { adapter = new FastAdapter<>(); //adapter.withPositionBasedStateManagement(true); itemAdapter = new ItemAdapter<>(); itemAdapter.wrap(adapter); } @Test public void constructor_HasStableId() throws Exception { assertThat(adapter.hasStableIds()).isTrue(); } @Test public void constructor_Default_IsSelectable() throws Exception { assertThat(adapter.isSelectable()).isFalse(); //default } @Test public void withSelectable() throws Exception { assertThat(adapter.withSelectable(true).isSelectable()).isTrue(); assertThat(adapter.withSelectable(false).isSelectable()).isFalse(); } @Test public void select() throws Exception { itemAdapter.set(TestDataGenerator.genTestItemList(100)); assertThat(adapter.getSelectedItems().size()).isEqualTo(0); assertThat(adapter.getSelections().size()).isEqualTo(0); adapter.select(10); assertThat(adapter.getSelectedItems().size()).isEqualTo(1); assertThat(adapter.getSelectedItems().iterator().next().getIdentifier()).isEqualTo(10); assertThat(adapter.getSelections().size()).isEqualTo(1); assertThat(adapter.getSelections().iterator().next()).isEqualTo(10); } @Test public void getPosition() throws Exception { TestItem testItem = TestDataGenerator.genTestItem(1); itemAdapter.add(testItem); assertThat(adapter.getPosition(testItem)).isEqualTo(0); } @Test public void getItem() throws Exception { List<TestItem> items = TestDataGenerator.genTestItemList(100); TestItem item = items.get(40); itemAdapter.set(items); assertThat(adapter.getItem(40)).isEqualTo(item); } @Test public void getRelativeInfo() throws Exception { List<TestItem> items = TestDataGenerator.genTestItemList(100); TestItem item = items.get(40); itemAdapter.set(items); assertThat(adapter.getRelativeInfo(40).item).isEqualTo(item); assertThat(adapter.getRelativeInfo(40).adapter).isEqualTo(itemAdapter); assertThat(adapter.getRelativeInfo(40).position).isEqualTo(40); } @Test public void getAdapter() throws Exception { List<TestItem> items = TestDataGenerator.genTestItemList(100); itemAdapter.set(items); assertThat(adapter.getAdapter(40)).isEqualTo(itemAdapter); } @Test public void getItemViewType() throws Exception { List<TestItem> items = TestDataGenerator.genTestItemList(100); itemAdapter.set(items); assertThat(adapter.getItemViewType(40)).isEqualTo(-1); } @Test public void getItemId() throws Exception { List<TestItem> items = TestDataGenerator.genTestItemList(100); itemAdapter.set(items); assertThat(adapter.getItemId(40)).isEqualTo(40); } @Test public void getItemCount() throws Exception { List<TestItem> items = TestDataGenerator.genTestItemList(100); itemAdapter.set(items); assertThat(adapter.getItemCount()).isEqualTo(100); } @Test public void getPreItemCountByOrder() throws Exception { List<TestItem> items = TestDataGenerator.genTestItemList(100); itemAdapter.set(items); assertThat(adapter.getPreItemCountByOrder(itemAdapter.getOrder())).isEqualTo(0); } @Test public void getPreItemCount() throws Exception { List<TestItem> items = TestDataGenerator.genTestItemList(100); itemAdapter.set(items); assertThat(adapter.getPreItemCount(40)).isEqualTo(0); } @Test public void getExpandedItemsCount() throws Exception { List<TestItem> items = TestDataGenerator.genTestItemWithSubItemsList(10, 1); itemAdapter.set(items); adapter.expand(5); assertThat(adapter.getExpandedItemsCount(0, 100)).isEqualTo(10); } @Test public void wrap() throws Exception { assertThat(itemAdapter.getFastAdapter()).isEqualTo(adapter); } @Test public void set() throws Exception { itemAdapter.set(TestDataGenerator.genTestItemList(100)); assertThat(itemAdapter.getAdapterItemCount()).isEqualTo(100); } @Test public void move() throws Exception { itemAdapter.set(TestDataGenerator.genTestItemList(11)); assertThat(itemAdapter.getAdapterItemCount()).isEqualTo(11); TestItem movedItem = itemAdapter.getAdapterItem(0); TestItem changedItem = itemAdapter.getAdapterItem(1); itemAdapter.move(0, 10); assertThat(itemAdapter.getAdapterItemCount()).isEqualTo(11); assertThat(movedItem).isEqualTo(itemAdapter.getAdapterItem(10)); assertThat(changedItem).isEqualTo(itemAdapter.getAdapterItem(0)); } @Test public void clear() throws Exception { itemAdapter.set(TestDataGenerator.genTestItemList(100)); assertThat(itemAdapter.getAdapterItemCount()).isEqualTo(100); itemAdapter.clear(); assertThat(itemAdapter.getAdapterItemCount()).isEqualTo(0); } @Test public void withBindViewHolderListener_OnBindViewHolder_Callback() throws Exception { FastAdapter.OnBindViewHolderListener listener = mock(FastAdapter.OnBindViewHolderListener.class); RecyclerView.ViewHolder holder = mock(RecyclerView.ViewHolder.class); adapter.withOnBindViewHolderListener(listener); adapter.onBindViewHolder(holder, 10, new ArrayList()); verify(listener, only()).onBindViewHolder(holder, 10, new ArrayList()); } }