package com.jakewharton.rxbinding2.support.v7.widget;
import android.support.test.annotation.UiThreadTest;
import android.support.test.rule.UiThreadTestRule;
import android.support.test.runner.AndroidJUnit4;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.RecyclerView.ViewHolder;
import android.view.ViewGroup;
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 RxRecyclerViewAdapterTest {
@Rule public final UiThreadTestRule uiThread = new UiThreadTestRule();
private final TestRecyclerAdapter adapter = new TestRecyclerAdapter();
@Test @UiThreadTest public void dataChanges() {
RecordingObserver<Object> o = new RecordingObserver<>();
RxRecyclerViewAdapter.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 TestRecyclerAdapter extends RecyclerView.Adapter<ViewHolder> {
TestRecyclerAdapter() {
}
@Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return null;
}
@Override public void onBindViewHolder(ViewHolder holder, int position) {
}
@Override public int getItemCount() {
return 0;
}
}
}