Skip to content

Commit 9269692

Browse files
Merge pull request #3055 from davidmoten/single-subscribe-fix
toSingle() should use unsafeSubscribe
2 parents f7d3b9c + a9f13b7 commit 9269692

File tree

2 files changed

+24
-4
lines changed

2 files changed

+24
-4
lines changed

src/main/java/rx/internal/operators/OnSubscribeSingle.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ public void onNext(T t) {
8080
}
8181
};
8282
child.add(parent);
83-
observable.subscribe(parent);
83+
observable.unsafeSubscribe(parent);
8484
}
8585

8686
public static <T> OnSubscribeSingle<T> create(Observable<T> observable) {

src/test/java/rx/internal/operators/OnSubscribeSingleTest.java

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,19 @@
1515
*/
1616
package rx.internal.operators;
1717

18+
import static org.junit.Assert.assertFalse;
19+
20+
import java.util.Collections;
21+
import java.util.NoSuchElementException;
22+
import java.util.concurrent.atomic.AtomicBoolean;
23+
1824
import org.junit.Test;
25+
1926
import rx.Observable;
2027
import rx.Single;
28+
import rx.functions.Action0;
2129
import rx.observers.TestSubscriber;
2230

23-
import java.util.Collections;
24-
import java.util.NoSuchElementException;
25-
2631
public class OnSubscribeSingleTest {
2732

2833
@Test
@@ -70,4 +75,19 @@ public void testRepeatObservableThrowsError() {
7075

7176
subscriber.assertError(IllegalArgumentException.class);
7277
}
78+
79+
@Test
80+
public void testShouldUseUnsafeSubscribeInternallyNotSubscribe() {
81+
TestSubscriber<String> subscriber = TestSubscriber.create();
82+
final AtomicBoolean unsubscribed = new AtomicBoolean(false);
83+
Single<String> single = Observable.just("Hello World!").doOnUnsubscribe(new Action0() {
84+
85+
@Override
86+
public void call() {
87+
unsubscribed.set(true);
88+
}}).toSingle();
89+
single.unsafeSubscribe(subscriber);
90+
subscriber.assertCompleted();
91+
assertFalse(unsubscribed.get());
92+
}
7393
}

0 commit comments

Comments
 (0)