@Test
public void testGetDone()
{

    assertEquals(getDone(immediateFuture("Alice")), "Alice");
    assertFailure(() -> getDone(immediateFailedFuture(new IllegalStateException("some failure"))), expect(IllegalStateException.class, "some failure"));
    assertFailure(
            () -> getDone(immediateFailedFuture(new IOException("some failure"))),
            expect(RuntimeException.class, "java.io.IOException: some failure", expect(IOException.class, "some failure")));
    assertFailure(() -> getDone(SettableFuture.create()), expect(IllegalArgumentException.class, "future not done yet"));
    assertFailure(() -> getDone(null), expect(NullPointerException.class, "future is null"));
}