package com.jakewharton.rxbinding2.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.widget.CompoundButton; import android.widget.ToggleButton; import com.jakewharton.rxbinding2.RecordingObserver; import io.reactivex.functions.Consumer; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; @RunWith(AndroidJUnit4.class) public final class RxCompoundButtonTest { @Rule public final UiThreadTestRule uiThread = new UiThreadTestRule(); private final Context context = InstrumentationRegistry.getContext(); private final CompoundButton view = new ToggleButton(context); @Test @UiThreadTest public void checkedChanges() { view.setChecked(false); RecordingObserver<Boolean> o = new RecordingObserver<>(); RxCompoundButton.checkedChanges(view).subscribe(o); assertFalse(o.takeNext()); view.setChecked(true); assertTrue(o.takeNext()); view.setChecked(false); assertFalse(o.takeNext()); o.dispose(); view.setChecked(true); o.assertNoMoreEvents(); } @Test @UiThreadTest public void checked() throws Exception { view.setChecked(false); Consumer<? super Boolean> toggle = RxCompoundButton.checked(view); toggle.accept(true); assertTrue(view.isChecked()); toggle.accept(false); assertFalse(view.isChecked()); } @Test @UiThreadTest public void toggle() throws Exception { view.setChecked(false); Consumer<? super Object> toggle = RxCompoundButton.toggle(view); toggle.accept(null); assertTrue(view.isChecked()); toggle.accept("OMG TOGGLES"); assertFalse(view.isChecked()); } }