package com.mapzen.pelias.widget;
import com.mapzen.pelias.BuildConfig;
import com.mapzen.pelias.R;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
import android.app.Activity;
import android.view.View;
import android.view.animation.Animation;
import android.widget.ArrayAdapter;
import static android.view.animation.AnimationUtils.loadAnimation;
import static org.fest.assertions.api.Assertions.assertThat;
import static org.robolectric.Robolectric.buildActivity;
@RunWith(RobolectricTestRunner.class) @Config(constants = BuildConfig.class, sdk = 21)
public class AutoCompleteListViewTest {
private static final Activity ACTIVITY = buildActivity(Activity.class).create().get();
private AutoCompleteListView autoCompleteListView;
@Before public void setUp() throws Exception {
autoCompleteListView = new AutoCompleteListView(ACTIVITY);
}
@Test public void shouldNotBeNull() throws Exception {
assertThat(autoCompleteListView).isNotNull();
}
@Test @Ignore public void shouldHaveHeaderView() throws Exception {
assertThat(autoCompleteListView.getHeaderViewsCount()).isEqualTo(1);
}
@Test public void setAdapter_shouldHideEmptyViewWhenItemIsAddedToAdapter() throws Exception {
ArrayAdapter adapter = new ArrayAdapter(ACTIVITY, 0);
View empty = new View(ACTIVITY);
autoCompleteListView.setEmptyView(empty);
autoCompleteListView.setAdapter(adapter);
autoCompleteListView.setVisibility(View.VISIBLE);
adapter.add(new Object());
assertThat(empty.getVisibility()).isEqualTo(View.GONE);
}
@Test public void setAdapter_shouldShowEmptyViewWhenItemIsRemovedFromAdapter() throws Exception {
ArrayAdapter adapter = new ArrayAdapter(ACTIVITY, 0);
adapter.add(new Object());
View empty = new View(ACTIVITY);
autoCompleteListView.setEmptyView(empty);
autoCompleteListView.setAdapter(adapter);
autoCompleteListView.setVisibility(View.VISIBLE);
adapter.clear();
assertThat(empty.getVisibility()).isEqualTo(View.VISIBLE);
}
@Test public void setAdapter_shouldHideEmptyViewWhenItemIsRemovedIfListViewHidden()
throws Exception {
ArrayAdapter adapter = new ArrayAdapter(ACTIVITY, 0);
adapter.add(new Object());
View empty = new View(ACTIVITY);
autoCompleteListView.setEmptyView(empty);
autoCompleteListView.setAdapter(adapter);
autoCompleteListView.setVisibility(View.GONE);
adapter.clear();
assertThat(empty.getVisibility()).isEqualTo(View.GONE);
}
@Test public void setVisibility_GONE_shouldHideEmptyView() throws Exception {
View empty = new View(ACTIVITY);
empty.setVisibility(View.VISIBLE);
autoCompleteListView.setEmptyView(empty);
autoCompleteListView.setVisibility(View.GONE);
assertThat(empty.getVisibility()).isEqualTo(View.GONE);
}
@Test public void setVisibility_INVISIBLE_shouldHideEmptyView() throws Exception {
View empty = new View(ACTIVITY);
empty.setVisibility(View.VISIBLE);
autoCompleteListView.setEmptyView(empty);
autoCompleteListView.setVisibility(View.INVISIBLE);
assertThat(empty.getVisibility()).isEqualTo(View.GONE);
}
@Test public void setVisibility_VISIBLE_shouldShowEmptyViewIfAdapterIsEmpty() throws Exception {
ArrayAdapter adapter = new ArrayAdapter(ACTIVITY, 0);
autoCompleteListView.setAdapter(adapter);
View empty = new View(ACTIVITY);
empty.setVisibility(View.GONE);
autoCompleteListView.setEmptyView(empty);
autoCompleteListView.setVisibility(View.VISIBLE);
assertThat(empty.getVisibility()).isEqualTo(View.VISIBLE);
}
@Test public void setVisibility_VISIBILE_shouldHideEmptyViewIfAdapterIsNotEmpty()
throws Exception {
ArrayAdapter adapter = new ArrayAdapter(ACTIVITY, 0);
adapter.add(new Object());
autoCompleteListView.setAdapter(adapter);
View empty = new View(ACTIVITY);
empty.setVisibility(View.VISIBLE);
autoCompleteListView.setEmptyView(empty);
autoCompleteListView.setVisibility(View.VISIBLE);
assertThat(empty.getVisibility()).isEqualTo(View.GONE);
}
@Test public void setAnimation_shouldApplyAnimationToEmptyView() throws Exception {
final Animation slideIn = loadAnimation(ACTIVITY, R.anim.slide_in);
final ArrayAdapter adapter = new ArrayAdapter(ACTIVITY, 0);
final View empty = new View(ACTIVITY);
autoCompleteListView.setAdapter(adapter);
autoCompleteListView.setEmptyView(empty);
autoCompleteListView.setAnimation(slideIn);
assertThat(empty.getAnimation()).isEqualTo(slideIn);
}
}