From e71110ea156b6f7822b948f042d93bbfffdd5525 Mon Sep 17 00:00:00 2001 From: zsxwing Date: Tue, 29 Oct 2013 17:09:00 +0800 Subject: [PATCH] Fixed issue #454 --- .../java/rx/subscriptions/Subscriptions.java | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/rxjava-core/src/main/java/rx/subscriptions/Subscriptions.java b/rxjava-core/src/main/java/rx/subscriptions/Subscriptions.java index 032a0eaece..5febe4f46a 100644 --- a/rxjava-core/src/main/java/rx/subscriptions/Subscriptions.java +++ b/rxjava-core/src/main/java/rx/subscriptions/Subscriptions.java @@ -15,9 +15,16 @@ */ package rx.subscriptions; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; + import java.util.concurrent.Future; +import org.junit.Test; + import rx.Subscription; +import rx.operators.SafeObservableSubscription; import rx.util.functions.Action0; /** @@ -41,14 +48,14 @@ public static Subscription empty() { * @return {@link Subscription} */ public static Subscription create(final Action0 unsubscribe) { - return new Subscription() { + return new SafeObservableSubscription(new Subscription() { @Override public void unsubscribe() { unsubscribe.call(); } - }; + }); } /** @@ -122,4 +129,15 @@ public static CompositeSubscription create(Subscription... subscriptions) { public void unsubscribe() { } }; + + public static class UnitTest { + @Test + public void testUnsubscribeOnlyOnce() { + Action0 unsubscribe = mock(Action0.class); + Subscription subscription = create(unsubscribe); + subscription.unsubscribe(); + subscription.unsubscribe(); + verify(unsubscribe, times(1)).call(); + } + } }