Skip to content

Commit 45afeb9

Browse files
committed
Forward subscription of wrapped subscriber
1 parent 2f0670e commit 45afeb9

File tree

2 files changed

+26
-17
lines changed

2 files changed

+26
-17
lines changed

rxjava-contrib/rxjava-android/src/main/java/rx/operators/OperatorWeakBinding.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ final class WeakSubscriber extends Subscriber<T> {
4747
final WeakReference<Subscriber<? super T>> subscriberRef;
4848

4949
private WeakSubscriber(Subscriber<? super T> source) {
50+
super(source);
5051
subscriberRef = new WeakReference<Subscriber<? super T>>(source);
5152
}
5253

rxjava-contrib/rxjava-android/src/test/java/rx/operators/OperatorWeakBindingTest.java

Lines changed: 25 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,21 @@
11
package rx.operators;
22

3-
import static org.mockito.Matchers.any;
4-
import static org.mockito.Mockito.verify;
5-
import static org.mockito.Mockito.verifyNoMoreInteractions;
6-
import static org.mockito.Mockito.verifyZeroInteractions;
3+
import static org.junit.Assert.assertEquals;
74

85
import org.junit.Before;
96
import org.junit.Test;
107
import org.junit.runner.RunWith;
11-
import org.mockito.Mock;
128
import org.mockito.MockitoAnnotations;
139
import org.robolectric.RobolectricTestRunner;
14-
import rx.Subscriber;
1510
import rx.functions.Functions;
11+
import rx.observers.TestSubscriber;
12+
13+
import java.util.Arrays;
1614

1715
@RunWith(RobolectricTestRunner.class)
1816
public class OperatorWeakBindingTest {
1917

20-
@Mock
21-
private Subscriber<String> subscriber;
18+
private TestSubscriber<String> subscriber = new TestSubscriber<String>();
2219

2320
@Before
2421
public void setUp() throws Exception {
@@ -34,10 +31,9 @@ public void shouldForwardAllNotificationsWhenSubscriberAndTargetAlive() {
3431
weakSub.onCompleted();
3532
weakSub.onError(new Exception());
3633

37-
verify(subscriber).onNext("one");
38-
verify(subscriber).onNext("two");
39-
verify(subscriber).onCompleted();
40-
verify(subscriber).onError(any(Exception.class));
34+
subscriber.assertReceivedOnNext(Arrays.asList("one", "two"));
35+
assertEquals(1, subscriber.getOnCompletedEvents().size());
36+
assertEquals(1, subscriber.getOnErrorEvents().size());
4137
}
4238

4339
@Test
@@ -51,8 +47,9 @@ public void shouldUnsubscribeFromSourceSequenceWhenSubscriberReleased() {
5147
weakSub.onCompleted();
5248
weakSub.onError(new Exception());
5349

54-
verify(subscriber).onNext("one");
55-
verifyNoMoreInteractions(subscriber);
50+
subscriber.assertReceivedOnNext(Arrays.asList("one"));
51+
assertEquals(0, subscriber.getOnCompletedEvents().size());
52+
assertEquals(0, subscriber.getOnErrorEvents().size());
5653
}
5754

5855
@Test
@@ -66,8 +63,9 @@ public void shouldUnsubscribeFromSourceSequenceWhenTargetObjectReleased() {
6663
weakSub.onCompleted();
6764
weakSub.onError(new Exception());
6865

69-
verify(subscriber).onNext("one");
70-
verifyNoMoreInteractions(subscriber);
66+
subscriber.assertReceivedOnNext(Arrays.asList("one"));
67+
assertEquals(0, subscriber.getOnCompletedEvents().size());
68+
assertEquals(0, subscriber.getOnErrorEvents().size());
7169
}
7270

7371
@Test
@@ -81,6 +79,16 @@ public void shouldUnsubscribeFromSourceSequenceWhenPredicateFailsToPass() {
8179
weakSub.onCompleted();
8280
weakSub.onError(new Exception());
8381

84-
verifyZeroInteractions(subscriber);
82+
assertEquals(0, subscriber.getOnNextEvents().size());
83+
assertEquals(0, subscriber.getOnCompletedEvents().size());
84+
assertEquals(0, subscriber.getOnErrorEvents().size());
85+
}
86+
87+
@Test
88+
public void unsubscribeWillUnsubscribeFromWrappedSubscriber() {
89+
OperatorWeakBinding<String, Object> op = new OperatorWeakBinding<String, Object>(new Object());
90+
91+
op.call(subscriber).unsubscribe();
92+
subscriber.assertUnsubscribed();
8593
}
8694
}

0 commit comments

Comments
 (0)