@Test public void sequence() { final CompletableFuture<Integer> two = delayedResult(2); final List<CompletableFuture<Integer>> completableFutures = asList(successful(1), two, successful(3)); final CompletionStage<List<Integer>> sequence = CompletableFutureUtils.sequence(completableFutures); final List<Integer> actual = sequence.toCompletableFuture().join(); assertThat(actual).isEqualTo(asList(1, 2, 3)); }
@Test public void sequenceErrorCase() { final RuntimeException exception = new RuntimeException("failed"); final List<CompletableFuture<Integer>> completableFutures = asList(delayedResult(1), failed(exception), successful(3)); final CompletableFuture<List<Integer>> sequence = CompletableFutureUtils.sequence(completableFutures); assertThatThrownBy(() -> sequence.join()).hasCause(exception); }