package com.jakewharton.rxbinding2.support.design.widget; import android.app.Instrumentation; import android.content.Context; import android.support.design.widget.Snackbar; import android.support.test.InstrumentationRegistry; import android.support.test.runner.AndroidJUnit4; import android.view.ContextThemeWrapper; import android.widget.FrameLayout; import com.jakewharton.rxbinding2.RecordingObserver; import com.jakewharton.rxbinding2.support.design.R; import io.reactivex.android.schedulers.AndroidSchedulers; import org.junit.Test; import org.junit.runner.RunWith; import static android.support.design.widget.Snackbar.Callback.DISMISS_EVENT_MANUAL; import static android.support.design.widget.Snackbar.LENGTH_SHORT; import static org.junit.Assert.assertEquals; @RunWith(AndroidJUnit4.class) public final class RxSnackbarTest { private final Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation(); private final Context rawContext = InstrumentationRegistry.getContext(); private final Context context = new ContextThemeWrapper(rawContext, R.style.Theme_AppCompat); private final FrameLayout parent = new FrameLayout(context); @Test public void dismisses() { final Snackbar view = Snackbar.make(parent, "Hey", LENGTH_SHORT); RecordingObserver<Integer> o = new RecordingObserver<>(); RxSnackbar.dismisses(view).subscribeOn(AndroidSchedulers.mainThread()).subscribe(o); o.assertNoMoreEvents(); instrumentation.runOnMainSync(new Runnable() { @Override public void run() { view.show(); } }); instrumentation.runOnMainSync(new Runnable() { @Override public void run() { view.dismiss(); } }); assertEquals(DISMISS_EVENT_MANUAL, o.takeNext().intValue()); instrumentation.runOnMainSync(new Runnable() { @Override public void run() { view.show(); } }); o.dispose(); instrumentation.runOnMainSync(new Runnable() { @Override public void run() { view.dismiss(); } }); o.assertNoMoreEvents(); } }