3133 |
|
if (!testImplementationDetails) return; |
3134 |
|
for (ExecutionMode m : ExecutionMode.values()) |
3135 |
|
{ |
3136 |
< |
final CompletableFuture<Void> f = new CompletableFuture<>(); |
3137 |
< |
CFException ex = new CFException(); |
3138 |
< |
f.completeExceptionally(ex); |
3139 |
< |
final CompletableFuture<Void> g = f.thenRun(new Noop(m)); |
3140 |
< |
checkCompletedWithWrappedException(g, ex); |
3141 |
< |
final CompletableFuture<Void> h = g.thenRun(new Noop(m)); |
3142 |
< |
checkCompletedWithWrappedException(h, ex); |
3143 |
< |
assertSame(resultOf(g), resultOf(h)); |
3136 |
> |
final CFException ex = new CFException(); |
3137 |
> |
final CompletableFuture<Integer> v42 = CompletableFuture.completedFuture(42); |
3138 |
> |
final CompletableFuture<Integer> incomplete = new CompletableFuture<>(); |
3139 |
> |
|
3140 |
> |
List<Function<CompletableFuture<Integer>, CompletableFuture<?>>> dependentFactories |
3141 |
> |
= new ArrayList<>(); |
3142 |
> |
|
3143 |
> |
dependentFactories.add((y) -> m.thenRun(y, new Noop(m))); |
3144 |
> |
dependentFactories.add((y) -> m.thenAccept(y, new NoopConsumer(m))); |
3145 |
> |
dependentFactories.add((y) -> m.thenApply(y, new IncFunction(m))); |
3146 |
> |
|
3147 |
> |
dependentFactories.add((y) -> m.runAfterEither(y, incomplete, new Noop(m))); |
3148 |
> |
dependentFactories.add((y) -> m.acceptEither(y, incomplete, new NoopConsumer(m))); |
3149 |
> |
dependentFactories.add((y) -> m.applyToEither(y, incomplete, new IncFunction(m))); |
3150 |
> |
|
3151 |
> |
dependentFactories.add((y) -> m.runAfterBoth(y, v42, new Noop(m))); |
3152 |
> |
dependentFactories.add((y) -> m.thenAcceptBoth(y, v42, new SubtractAction(m))); |
3153 |
> |
dependentFactories.add((y) -> m.thenCombine(y, v42, new SubtractFunction(m))); |
3154 |
> |
|
3155 |
> |
dependentFactories.add((y) -> m.whenComplete(y, (Integer x, Throwable t) -> {})); |
3156 |
> |
|
3157 |
> |
dependentFactories.add((y) -> m.thenCompose(y, new CompletableFutureInc(m))); |
3158 |
> |
|
3159 |
> |
for (Function<CompletableFuture<Integer>, CompletableFuture<?>> |
3160 |
> |
dependentFactory : dependentFactories) { |
3161 |
> |
CompletableFuture<Integer> f = new CompletableFuture<>(); |
3162 |
> |
f.completeExceptionally(ex); |
3163 |
> |
CompletableFuture<Integer> src = m.thenApply(f, new IncFunction(m)); |
3164 |
> |
checkCompletedWithWrappedException(src, ex); |
3165 |
> |
CompletableFuture<?> dep = dependentFactory.apply(src); |
3166 |
> |
checkCompletedWithWrappedException(dep, ex); |
3167 |
> |
assertSame(resultOf(src), resultOf(dep)); |
3168 |
> |
} |
3169 |
> |
|
3170 |
> |
for (Function<CompletableFuture<Integer>, CompletableFuture<?>> |
3171 |
> |
dependentFactory : dependentFactories) { |
3172 |
> |
CompletableFuture<Integer> f = new CompletableFuture<>(); |
3173 |
> |
CompletableFuture<Integer> src = m.thenApply(f, new IncFunction(m)); |
3174 |
> |
CompletableFuture<?> dep = dependentFactory.apply(src); |
3175 |
> |
f.completeExceptionally(ex); |
3176 |
> |
checkCompletedWithWrappedException(src, ex); |
3177 |
> |
checkCompletedWithWrappedException(dep, ex); |
3178 |
> |
assertSame(resultOf(src), resultOf(dep)); |
3179 |
> |
} |
3180 |
> |
|
3181 |
> |
for (boolean mayInterruptIfRunning : new boolean[] { true, false }) |
3182 |
> |
for (Function<CompletableFuture<Integer>, CompletableFuture<?>> |
3183 |
> |
dependentFactory : dependentFactories) { |
3184 |
> |
CompletableFuture<Integer> f = new CompletableFuture<>(); |
3185 |
> |
f.cancel(mayInterruptIfRunning); |
3186 |
> |
checkCancelled(f); |
3187 |
> |
CompletableFuture<Integer> src = m.thenApply(f, new IncFunction(m)); |
3188 |
> |
checkCompletedWithWrappedCancellationException(src); |
3189 |
> |
CompletableFuture<?> dep = dependentFactory.apply(src); |
3190 |
> |
checkCompletedWithWrappedCancellationException(dep); |
3191 |
> |
assertSame(resultOf(src), resultOf(dep)); |
3192 |
> |
} |
3193 |
> |
|
3194 |
> |
for (boolean mayInterruptIfRunning : new boolean[] { true, false }) |
3195 |
> |
for (Function<CompletableFuture<Integer>, CompletableFuture<?>> |
3196 |
> |
dependentFactory : dependentFactories) { |
3197 |
> |
CompletableFuture<Integer> f = new CompletableFuture<>(); |
3198 |
> |
CompletableFuture<Integer> src = m.thenApply(f, new IncFunction(m)); |
3199 |
> |
CompletableFuture<?> dep = dependentFactory.apply(src); |
3200 |
> |
f.cancel(mayInterruptIfRunning); |
3201 |
> |
checkCancelled(f); |
3202 |
> |
checkCompletedWithWrappedCancellationException(src); |
3203 |
> |
checkCompletedWithWrappedCancellationException(dep); |
3204 |
> |
assertSame(resultOf(src), resultOf(dep)); |
3205 |
> |
} |
3206 |
|
}} |
3207 |
|
|
3208 |
|
// public void testRunAfterEither_resultDeterminedAtTimeOfCreation() { |