package com.pivotallabs;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import org.robolectric.RobolectricTestRunner;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import java.util.ArrayList;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.hamcrest.CoreMatchers.sameInstance;
import static org.junit.Assert.assertThat;
@RunWith(RobolectricTestRunner.class)
public class GenericAdapterTest {
private ArrayList<String> strings;
private TestAdapter adapter;
@Before
public void setUp() throws Exception {
strings = new ArrayList<String>();
strings.add("one");
strings.add("two");
strings.add("three");
adapter = new TestAdapter(strings);
}
@Test
public void getCount_shouldReturnListSize() throws Exception {
assertThat(adapter.getCount(), equalTo(3));
strings.add("four");
assertThat(adapter.getCount(), equalTo(4));
}
@Test
public void getItem_shouldReturnObjectAtIndex() throws Exception {
assertThat(adapter.getItem(0), equalTo("one"));
assertThat(adapter.getItem(1), equalTo("two"));
assertThat(adapter.getItem(2), equalTo("three"));
}
@Test
public void getItemId_shouldReturnIndex() throws Exception {
assertThat(adapter.getItemId(666), equalTo(666L));
}
@Test
public void getView_shouldCallThroughToGetView() throws Exception {
View convertView = new View(null);
ViewGroup parent = new LinearLayout(null);
adapter.getView(1, convertView, parent);
assertThat(adapter.item, equalTo("two"));
assertThat(adapter.recycleView, sameInstance(convertView));
assertThat(adapter.parent, sameInstance(parent));
}
static class TestAdapter extends GenericAdapter<String> {
private String item;
private View recycleView;
private ViewGroup parent;
public TestAdapter(ArrayList<String> strings) {
super(strings);
}
@Override
public View getView(String item, View recycleView, ViewGroup parent) {
this.item = item;
this.recycleView = recycleView;
this.parent = parent;
return null;
}
}
}