package com.jakewharton.rxbinding2.support.v17.leanback.widget; import android.content.Context; import android.support.test.InstrumentationRegistry; import android.support.test.annotation.UiThreadTest; import android.support.test.rule.UiThreadTestRule; import android.support.test.runner.AndroidJUnit4; import android.support.v17.leanback.widget.SearchEditText; import android.view.KeyEvent; import com.jakewharton.rxbinding2.RecordingObserver; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import static org.junit.Assert.assertNotNull; @RunWith(AndroidJUnit4.class) public final class RxSearchEditTextTest { @Rule public final UiThreadTestRule uiThread = new UiThreadTestRule(); private final Context context = InstrumentationRegistry.getContext(); private SearchEditText view; @Before public void setUp() { view = new SearchEditText(context); } @Test @UiThreadTest public void keyboardDismisses() { RecordingObserver<Object> o = new RecordingObserver<>(); RxSearchEditText.keyboardDismisses(view).subscribe(o); o.assertNoMoreEvents(); KeyEvent event = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK); view.onKeyPreIme(KeyEvent.KEYCODE_BACK, event); assertNotNull(o.takeNext()); o.dispose(); view.onKeyPreIme(KeyEvent.KEYCODE_BACK, event); o.assertNoMoreEvents(); } }