@Test
  public void shouldRemoveCallbacksFromHandlerWhenUnsubscribedSubscription() {
    Handler handler = spy(new Handler());
    Observable.OnSubscribe<Integer> onSubscribe = mock(Observable.OnSubscribe.class);
    Subscription subscription =
        Observable.create(onSubscribe).subscribeOn(AndroidSchedulers.from(handler)).subscribe();

    verify(onSubscribe).call(any(Subscriber.class));

    subscription.unsubscribe();

    verify(handler).removeCallbacks(any(Runnable.class));
  }
  @Test
  public void shouldScheduleDelayedActionOnHandlerThread() {
    Handler handler = mock(Handler.class);
    Action0 action = mock(Action0.class);

    Scheduler scheduler = AndroidSchedulers.from(handler);
    Worker inner = scheduler.createWorker();
    inner.schedule(action, 1, SECONDS);

    // verify that we post to the given Handler
    ArgumentCaptor<Runnable> runnable = ArgumentCaptor.forClass(Runnable.class);
    verify(handler).postDelayed(runnable.capture(), eq(1000L));

    // verify that the given handler delegates to our action
    runnable.getValue().run();
    verify(action).call();
  }