947 |
|
* of sources |
948 |
|
*/ |
949 |
|
public void testThenCombine_normalCompletion1() { |
950 |
+ |
for (boolean createdIncomplete : new boolean[] { true, false }) |
951 |
+ |
for (boolean fFirst : new boolean[] { true, false }) |
952 |
|
for (ExecutionMode m : ExecutionMode.values()) |
953 |
|
for (Integer v1 : new Integer[] { 1, null }) |
954 |
|
for (Integer v2 : new Integer[] { 2, null }) { |
956 |
|
final CompletableFuture<Integer> f = new CompletableFuture<>(); |
957 |
|
final CompletableFuture<Integer> g = new CompletableFuture<>(); |
958 |
|
final SubtractFunction r = new SubtractFunction(); |
959 |
< |
final CompletableFuture<Integer> h = m.thenCombine(f, g, r); |
959 |
> |
CompletableFuture<Integer> h = null; |
960 |
> |
if (createdIncomplete) h = m.thenCombine(f, g, r); |
961 |
|
|
962 |
< |
f.complete(v1); |
963 |
< |
checkIncomplete(h); |
962 |
> |
if (fFirst) |
963 |
> |
f.complete(v1); |
964 |
> |
else |
965 |
> |
g.complete(v2); |
966 |
> |
if (createdIncomplete) checkIncomplete(h); |
967 |
|
assertEquals(r.invocationCount, 0); |
968 |
< |
g.complete(v2); |
969 |
< |
|
970 |
< |
checkCompletedNormally(h, subtract(v1, v2)); |
971 |
< |
checkCompletedNormally(f, v1); |
972 |
< |
checkCompletedNormally(g, v2); |
967 |
< |
assertEquals(r.invocationCount, 1); |
968 |
< |
} |
969 |
< |
} |
970 |
< |
|
971 |
< |
public void testThenCombine_normalCompletion2() { |
972 |
< |
for (ExecutionMode m : ExecutionMode.values()) |
973 |
< |
for (Integer v1 : new Integer[] { 1, null }) |
974 |
< |
for (Integer v2 : new Integer[] { 2, null }) { |
975 |
< |
|
976 |
< |
final CompletableFuture<Integer> f = new CompletableFuture<>(); |
977 |
< |
final CompletableFuture<Integer> g = new CompletableFuture<>(); |
978 |
< |
final SubtractFunction r = new SubtractFunction(); |
979 |
< |
final CompletableFuture<Integer> h = m.thenCombine(f, g, r); |
980 |
< |
|
981 |
< |
g.complete(v2); |
982 |
< |
checkIncomplete(h); |
983 |
< |
assertEquals(r.invocationCount, 0); |
984 |
< |
f.complete(v1); |
985 |
< |
|
986 |
< |
checkCompletedNormally(h, subtract(v1, v2)); |
987 |
< |
checkCompletedNormally(f, v1); |
988 |
< |
checkCompletedNormally(g, v2); |
989 |
< |
assertEquals(r.invocationCount, 1); |
990 |
< |
} |
991 |
< |
} |
992 |
< |
|
993 |
< |
public void testThenCombine_normalCompletion3() { |
994 |
< |
for (ExecutionMode m : ExecutionMode.values()) |
995 |
< |
for (Integer v1 : new Integer[] { 1, null }) |
996 |
< |
for (Integer v2 : new Integer[] { 2, null }) { |
997 |
< |
|
998 |
< |
final CompletableFuture<Integer> f = new CompletableFuture<>(); |
999 |
< |
final CompletableFuture<Integer> g = new CompletableFuture<>(); |
1000 |
< |
final SubtractFunction r = new SubtractFunction(); |
1001 |
< |
|
1002 |
< |
g.complete(v2); |
1003 |
< |
f.complete(v1); |
1004 |
< |
final CompletableFuture<Integer> h = m.thenCombine(f, g, r); |
1005 |
< |
|
1006 |
< |
checkCompletedNormally(h, subtract(v1, v2)); |
1007 |
< |
checkCompletedNormally(f, v1); |
1008 |
< |
checkCompletedNormally(g, v2); |
1009 |
< |
assertEquals(r.invocationCount, 1); |
1010 |
< |
} |
1011 |
< |
} |
1012 |
< |
|
1013 |
< |
public void testThenCombine_normalCompletion4() { |
1014 |
< |
for (ExecutionMode m : ExecutionMode.values()) |
1015 |
< |
for (Integer v1 : new Integer[] { 1, null }) |
1016 |
< |
for (Integer v2 : new Integer[] { 2, null }) { |
1017 |
< |
|
1018 |
< |
final CompletableFuture<Integer> f = new CompletableFuture<>(); |
1019 |
< |
final CompletableFuture<Integer> g = new CompletableFuture<>(); |
1020 |
< |
final SubtractFunction r = new SubtractFunction(); |
1021 |
< |
|
1022 |
< |
f.complete(v1); |
1023 |
< |
g.complete(v2); |
1024 |
< |
final CompletableFuture<Integer> h = m.thenCombine(f, g, r); |
968 |
> |
if (!fFirst) |
969 |
> |
f.complete(v1); |
970 |
> |
else |
971 |
> |
g.complete(v2); |
972 |
> |
if (!createdIncomplete) h = m.thenCombine(f, g, r); |
973 |
|
|
974 |
|
checkCompletedNormally(h, subtract(v1, v2)); |
975 |
|
checkCompletedNormally(f, v1); |