NonListenableSettableFuture<String> abstractFuture =
NonListenableSettableFuture.create();
ListenableFuture<String> listenableFuture =
listenInPoolThread(abstractFuture, executorService);
SingleCallListener singleCallListener = new SingleCallListener();
singleCallListener.expectCall();
assertFalse(singleCallListener.wasCalled());
assertFalse(listenableFuture.isDone());
listenableFuture.addListener(singleCallListener, directExecutor());
/*
* Don't shut down until the listenInPoolThread task has been accepted to
* run. We want to see what happens when it's interrupted, not when it's
* rejected.
*/
submitSuccessful.await();
executorService.shutdownNow();
abstractFuture.set(DATA1);
assertEquals(DATA1, listenableFuture.get());
singleCallListener.waitForCall();
assertTrue(singleCallListener.wasCalled());
assertTrue(listenableFuture.isDone());
}