### Question:
OngoingMissionRun { public Mono<Result> awaitFinished(Duration timeout) { return awaitFinished().timeout(timeout); } OngoingMissionRun(Mole mole, Mono<MissionHandle> handle); OngoingMissionRun and(); void forget(); Mono<Result> awaitFinished(Duration timeout); Mono<Result> awaitFinished(); Mono<MissionHandle> asyncHandle(); MissionHandle awaitHandle(); void instruct(StrandCommand command); void await(Predicate<RunState> runStateValidator); void await(Predicate<RunState> runStateValidator, Duration timeout); ReturnHelper<Result> returnResult(); ReturnHelper<MissionState> returnState();  }### Answer:
@Test public void awaitFinished() { assertNotNull(run.awaitFinished()); assertThat(run.awaitFinished().block(), instanceOf(Result.class)); assertEquals(Result.SUCCESS, run.awaitFinished().block()); assertNotNull(run.awaitFinished(Duration.ofMillis(100))); assertThat(run.awaitFinished(Duration.ofMillis(100)).block(), instanceOf(Result.class)); assertEquals(Result.SUCCESS, run.awaitFinished(Duration.ofMillis(100)).block()); }