Skip to content

Commit 2edf3cb

Browse files
committed
Fixed issue ReactiveX#454
1 parent b985cac commit 2edf3cb

File tree

1 file changed

+20
-2
lines changed

1 file changed

+20
-2
lines changed

rxjava-core/src/main/java/rx/subscriptions/Subscriptions.java

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,16 @@
1515
*/
1616
package rx.subscriptions;
1717

18+
import static org.mockito.Mockito.mock;
19+
import static org.mockito.Mockito.times;
20+
import static org.mockito.Mockito.verify;
21+
1822
import java.util.concurrent.Future;
1923

24+
import org.junit.Test;
25+
2026
import rx.Subscription;
27+
import rx.operators.SafeObservableSubscription;
2128
import rx.util.functions.Action0;
2229

2330
/**
@@ -41,14 +48,14 @@ public static Subscription empty() {
4148
* @return {@link Subscription}
4249
*/
4350
public static Subscription create(final Action0 unsubscribe) {
44-
return new Subscription() {
51+
return new SafeObservableSubscription(new Subscription() {
4552

4653
@Override
4754
public void unsubscribe() {
4855
unsubscribe.call();
4956
}
5057

51-
};
58+
});
5259
}
5360

5461
/**
@@ -122,4 +129,15 @@ public static CompositeSubscription create(Subscription... subscriptions) {
122129
public void unsubscribe() {
123130
}
124131
};
132+
133+
public static class UnitTest {
134+
@Test
135+
public void testUnsubscribeOnlyOnce() {
136+
Action0 unsubscribe = mock(Action0.class);
137+
Subscription subscription = create(unsubscribe);
138+
subscription.unsubscribe();
139+
subscription.unsubscribe();
140+
verify(unsubscribe, times(1)).call();
141+
}
142+
}
125143
}

0 commit comments

Comments
 (0)