package com.jakewharton.rxbinding2.widget;
import android.support.test.annotation.UiThreadTest;
import android.support.test.rule.UiThreadTestRule;
import android.support.test.runner.AndroidJUnit4;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import com.jakewharton.rxbinding2.RecordingObserver;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import static org.junit.Assert.assertSame;
@RunWith(AndroidJUnit4.class)
public final class RxAdapterTest {
@Rule public final UiThreadTestRule uiThread = new UiThreadTestRule();
private final TestAdapter adapter = new TestAdapter();
@Test @UiThreadTest public void dataChanges() {
RecordingObserver<Object> o = new RecordingObserver<>();
RxAdapter.dataChanges(adapter).subscribe(o);
assertSame(adapter, o.takeNext());
adapter.notifyDataSetChanged();
assertSame(adapter, o.takeNext());
adapter.notifyDataSetChanged();
assertSame(adapter, o.takeNext());
o.dispose();
adapter.notifyDataSetChanged();
o.assertNoMoreEvents();
}
private static final class TestAdapter extends BaseAdapter {
TestAdapter() {
}
@Override public int getCount() {
return 0;
}
@Override public Object getItem(int position) {
return null;
}
@Override public long getItemId(int position) {
return 0;
}
@Override public View getView(int position, View convertView, ViewGroup parent) {
return null;
}
}
}