From cf5d27da8b9a0ca9ecbc2364b9da8a46b5324c02 Mon Sep 17 00:00:00 2001 From: Hamid Palo Date: Tue, 25 Nov 2014 16:06:54 -0500 Subject: [PATCH] Add actions for setting TextView text. --- .../java/rx/android/view/ViewActions.java | 26 ++++++++++- .../android/view/ViewActionSetTextTest.java | 46 +++++++++++++++++++ 2 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 rxandroid/src/test/java/rx/android/view/ViewActionSetTextTest.java diff --git a/rxandroid/src/main/java/rx/android/view/ViewActions.java b/rxandroid/src/main/java/rx/android/view/ViewActions.java index 9ad41de8..3c492e28 100644 --- a/rxandroid/src/main/java/rx/android/view/ViewActions.java +++ b/rxandroid/src/main/java/rx/android/view/ViewActions.java @@ -14,7 +14,7 @@ package rx.android.view; import android.view.View; - +import android.widget.TextView; import rx.functions.Action1; /** @@ -112,4 +112,28 @@ public static Action1 setVisibility(View view) { public static Action1 setVisibility(View view, int visibilityOnFalse) { return new ViewActionSetVisibility(view, visibilityOnFalse); } + + /** + * Set the text of a {@link TextView} based on values emitted by an Observable. + */ + public static Action1 setText(final TextView textView) { + return new Action1() { + @Override + public void call(CharSequence charSequence) { + textView.setText(charSequence); + } + }; + } + + /** + * Set the text of a {@link TextView} based on values emitted by an Observable. + */ + public static Action1 setTextResource(final TextView textView) { + return new Action1() { + @Override + public void call(Integer integer) { + textView.setText(integer); + } + }; + } } diff --git a/rxandroid/src/test/java/rx/android/view/ViewActionSetTextTest.java b/rxandroid/src/test/java/rx/android/view/ViewActionSetTextTest.java new file mode 100644 index 00000000..cbf9755e --- /dev/null +++ b/rxandroid/src/test/java/rx/android/view/ViewActionSetTextTest.java @@ -0,0 +1,46 @@ +package rx.android.view; + +import android.widget.TextView; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mockito; +import org.robolectric.RobolectricTestRunner; +import rx.subjects.PublishSubject; + +import static org.mockito.Mockito.verify; + +@RunWith(RobolectricTestRunner.class) +public class ViewActionSetTextTest { + + private TextView textView; + + @Before + public void setUp() { + textView = Mockito.mock(TextView.class); + } + + @Test + public void testSetsTextViewCharSequence() { + final PublishSubject subject = PublishSubject.create(); + subject.subscribe(ViewActions.setText(textView)); + + subject.onNext("Hello"); + verify(textView).setText("Hello"); + + subject.onNext("World"); + verify(textView).setText("World"); + } + + @Test + public void testSetsTextViewTextResource() { + final PublishSubject subject = PublishSubject.create(); + subject.subscribe(ViewActions.setTextResource(textView)); + + subject.onNext(1); + verify(textView).setText(1); + + subject.onNext(3); + verify(textView).setText(3); + } +}