@Test
 public void testUnsubscribeBeforeResolve() {
   ObservableFuture<String> o = RxHelper.observableFuture();
   MySubscriber<String> subscriber = new MySubscriber<>();
   Subscription sub = o.subscribe(subscriber);
   sub.unsubscribe();
   assertTrue(sub.isUnsubscribed());
   subscriber.assertEmpty();
 }
 @Test
 public void testCompleteWithSuccessAfterSubscribe() {
   ObservableFuture<String> o = RxHelper.observableFuture();
   MySubscriber<String> subscriber = new MySubscriber<>();
   o.subscribe(subscriber);
   subscriber.assertEmpty();
   o.toHandler().handle(Future.succeededFuture("abc"));
   subscriber.assertItem("abc").assertCompleted().assertEmpty();
 }
 @Test
 public void testCompleteWithFailureAfterSubscribe() {
   ObservableFuture<String> o = RxHelper.observableFuture();
   MySubscriber<String> subscriber = new MySubscriber<>();
   o.subscribe(subscriber);
   subscriber.assertEmpty();
   Throwable failure = new Throwable();
   o.toHandler().handle(Future.failedFuture(failure));
   subscriber.assertError(failure).assertEmpty();
 }
 @Test
 public void testRejectAdaptedFunctions1() {
   MySubscriber<String> subscriber = new MySubscriber<>();
   Handler<AsyncResult<String>> o = RxHelper.toFuture(subscriber::onNext);
   Exception cause = new Exception();
   try {
     o.handle(Future.failedFuture(cause));
   } catch (OnErrorNotImplementedException e) {
     assertSame(cause, e.getCause());
   }
   subscriber.assertEmpty();
 }