@Override public void onConnectionUnsubscribed() { serialSubscription.dispose(); }
@Test public void unsubscribingWithoutUnderlyingDoesNothing() { serialDisposable.dispose(); }
@Override public void run() { try { start.await(); serialDisposable.dispose(); } catch (InterruptedException e) { fail(e.getMessage()); } finally { end.countDown(); } } };
@Test public void settingUnderlyingWhenUnsubscribedCausesImmediateUnsubscription() { serialDisposable.dispose(); Disposable underlying = mock(Disposable.class); serialDisposable.set(underlying); verify(underlying).dispose(); }
@Test public void whenUnsubscribingSecondUnderlyingUnsubscribed() { Disposable first = mock(Disposable.class); serialDisposable.set(first); Disposable second = mock(Disposable.class); serialDisposable.set(second); serialDisposable.dispose(); verify(second).dispose(); }
@Test public void notDisposedWhenReplaced() { final Disposable underlying = mock(Disposable.class); serialDisposable.set(underlying); serialDisposable.replace(Disposables.empty()); serialDisposable.dispose(); verify(underlying, never()).dispose(); }
serialDisposable.dispose();
task.dispose();
task.dispose();
@Test public void disposeState() { Disposable empty = Disposables.empty(); SerialDisposable d = new SerialDisposable(empty); assertFalse(d.isDisposed()); assertSame(empty, d.get()); d.dispose(); assertTrue(d.isDisposed()); assertNotSame(empty, d.get()); assertNotSame(DisposableHelper.DISPOSED, d.get()); } }