1600 |
|
{ |
1601 |
|
final CompletableFuture<Integer> f = new CompletableFuture<>(); |
1602 |
|
final CompletableFuture<Integer> g = new CompletableFuture<>(); |
1603 |
< |
final SubtractFunction r1 = new SubtractFunction(m); |
1604 |
< |
final SubtractFunction r2 = new SubtractFunction(m); |
1605 |
< |
final SubtractFunction r3 = new SubtractFunction(m); |
1603 |
> |
final SubtractFunction[] rs = new SubtractFunction[6]; |
1604 |
> |
for (int i = 0; i < rs.length; i++) rs[i] = new SubtractFunction(m); |
1605 |
|
|
1606 |
|
final CompletableFuture<Integer> fst = fFirst ? f : g; |
1607 |
|
final CompletableFuture<Integer> snd = !fFirst ? f : g; |
1608 |
|
final Integer w1 = fFirst ? v1 : v2; |
1609 |
|
final Integer w2 = !fFirst ? v1 : v2; |
1610 |
|
|
1611 |
< |
final CompletableFuture<Integer> h1 = m.thenCombine(f, g, r1); |
1611 |
> |
final CompletableFuture<Integer> h0 = m.thenCombine(f, g, rs[0]); |
1612 |
> |
final CompletableFuture<Integer> h1 = m.thenCombine(fst, fst, rs[1]); |
1613 |
|
assertTrue(fst.complete(w1)); |
1614 |
< |
final CompletableFuture<Integer> h2 = m.thenCombine(f, g, r2); |
1615 |
< |
checkIncomplete(h1); |
1616 |
< |
checkIncomplete(h2); |
1617 |
< |
r1.assertNotInvoked(); |
1618 |
< |
r2.assertNotInvoked(); |
1614 |
> |
final CompletableFuture<Integer> h2 = m.thenCombine(f, g, rs[2]); |
1615 |
> |
final CompletableFuture<Integer> h3 = m.thenCombine(fst, fst, rs[3]); |
1616 |
> |
checkIncomplete(h0); rs[0].assertNotInvoked(); |
1617 |
> |
checkIncomplete(h2); rs[2].assertNotInvoked(); |
1618 |
> |
checkCompletedNormally(h1, subtract(w1, w1)); |
1619 |
> |
checkCompletedNormally(h3, subtract(w1, w1)); |
1620 |
> |
rs[1].assertValue(subtract(w1, w1)); |
1621 |
> |
rs[3].assertValue(subtract(w1, w1)); |
1622 |
|
assertTrue(snd.complete(w2)); |
1623 |
< |
final CompletableFuture<Integer> h3 = m.thenCombine(f, g, r3); |
1623 |
> |
final CompletableFuture<Integer> h4 = m.thenCombine(f, g, rs[4]); |
1624 |
|
|
1625 |
< |
checkCompletedNormally(h1, subtract(v1, v2)); |
1625 |
> |
checkCompletedNormally(h0, subtract(v1, v2)); |
1626 |
|
checkCompletedNormally(h2, subtract(v1, v2)); |
1627 |
< |
checkCompletedNormally(h3, subtract(v1, v2)); |
1628 |
< |
r1.assertValue(subtract(v1, v2)); |
1629 |
< |
r2.assertValue(subtract(v1, v2)); |
1630 |
< |
r3.assertValue(subtract(v1, v2)); |
1627 |
> |
checkCompletedNormally(h4, subtract(v1, v2)); |
1628 |
> |
rs[0].assertValue(subtract(v1, v2)); |
1629 |
> |
rs[2].assertValue(subtract(v1, v2)); |
1630 |
> |
rs[4].assertValue(subtract(v1, v2)); |
1631 |
> |
|
1632 |
|
checkCompletedNormally(f, v1); |
1633 |
|
checkCompletedNormally(g, v2); |
1634 |
|
}} |