ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/test/tck/ForkJoinTaskTest.java
(Generate patch)

Comparing jsr166/src/test/tck/ForkJoinTaskTest.java (file contents):
Revision 1.46 by dl, Sun Oct 11 13:30:30 2015 UTC vs.
Revision 1.50 by jsr166, Wed Aug 10 01:28:14 2016 UTC

# Line 263 | Line 263 | public class ForkJoinTaskTest extends JS
263              }
264              return false;
265          }
266 <        
266 >
267          public final void complete() {
268              BinaryAsyncAction a = this;
269              for (;;) {
# Line 340 | Line 340 | public class ForkJoinTaskTest extends JS
340          public final boolean exec() {
341              AsyncFib f = this;
342              int n = f.number;
343 <            if (n > 1) {
344 <                while (n > 1) {
345 <                    AsyncFib p = f;
346 <                    AsyncFib r = new AsyncFib(n - 2);
347 <                    f = new AsyncFib(--n);
348 <                    p.linkSubtasks(r, f);
349 <                    r.fork();
350 <                }
351 <                f.number = n;
343 >            while (n > 1) {
344 >                AsyncFib p = f;
345 >                AsyncFib r = new AsyncFib(n - 2);
346 >                f = new AsyncFib(--n);
347 >                p.linkSubtasks(r, f);
348 >                r.fork();
349              }
350              f.complete();
351              return false;
# Line 368 | Line 365 | public class ForkJoinTaskTest extends JS
365          public final boolean exec() {
366              FailingAsyncFib f = this;
367              int n = f.number;
368 <            if (n > 1) {
369 <                while (n > 1) {
370 <                    FailingAsyncFib p = f;
371 <                    FailingAsyncFib r = new FailingAsyncFib(n - 2);
372 <                    f = new FailingAsyncFib(--n);
373 <                    p.linkSubtasks(r, f);
377 <                    r.fork();
378 <                }
379 <                f.number = n;
368 >            while (n > 1) {
369 >                FailingAsyncFib p = f;
370 >                FailingAsyncFib r = new FailingAsyncFib(n - 2);
371 >                f = new FailingAsyncFib(--n);
372 >                p.linkSubtasks(r, f);
373 >                r.fork();
374              }
375              f.complete();
376              return false;
# Line 782 | Line 776 | public class ForkJoinTaskTest extends JS
776      }
777  
778      /**
779 +     * completeExceptionally(null) surprisingly has the same effect as
780 +     * completeExceptionally(new RuntimeException())
781 +     */
782 +    public void testCompleteExceptionally_null() {
783 +        RecursiveAction a = new CheckedRecursiveAction() {
784 +            protected void realCompute() {
785 +                AsyncFib f = new AsyncFib(8);
786 +                f.completeExceptionally(null);
787 +                try {
788 +                    f.invoke();
789 +                    shouldThrow();
790 +                } catch (RuntimeException success) {
791 +                    assertSame(success.getClass(), RuntimeException.class);
792 +                    assertNull(success.getCause());
793 +                    checkCompletedAbnormally(f, success);
794 +                }
795 +            }};
796 +        testInvokeOnPool(mainPool(), a);
797 +    }
798 +
799 +    /**
800       * invokeAll(t1, t2) invokes all task arguments
801       */
802      public void testInvokeAll2() {
# Line 882 | Line 897 | public class ForkJoinTaskTest extends JS
897                  AsyncFib f = new AsyncFib(8);
898                  FailingAsyncFib g = new FailingAsyncFib(9);
899                  ForkJoinTask[] tasks = { f, g };
900 <                Collections.shuffle(Arrays.asList(tasks));
900 >                shuffle(tasks);
901                  try {
902                      invokeAll(tasks);
903                      shouldThrow();
# Line 920 | Line 935 | public class ForkJoinTaskTest extends JS
935                  FailingAsyncFib g = new FailingAsyncFib(9);
936                  AsyncFib h = new AsyncFib(7);
937                  ForkJoinTask[] tasks = { f, g, h };
938 <                Collections.shuffle(Arrays.asList(tasks));
938 >                shuffle(tasks);
939                  try {
940                      invokeAll(tasks);
941                      shouldThrow();
# Line 941 | Line 956 | public class ForkJoinTaskTest extends JS
956                  AsyncFib g = new AsyncFib(9);
957                  AsyncFib h = new AsyncFib(7);
958                  ForkJoinTask[] tasks = { f, g, h };
959 <                List taskList = Arrays.asList(tasks);
945 <                Collections.shuffle(taskList);
959 >                shuffle(tasks);
960                  try {
961 <                    invokeAll(taskList);
961 >                    invokeAll(Arrays.asList(tasks));
962                      shouldThrow();
963                  } catch (FJException success) {
964                      checkCompletedAbnormally(f, success);
# Line 1552 | Line 1566 | public class ForkJoinTaskTest extends JS
1566                  AsyncFib f = new AsyncFib(8);
1567                  FailingAsyncFib g = new FailingAsyncFib(9);
1568                  ForkJoinTask[] tasks = { f, g };
1569 <                Collections.shuffle(Arrays.asList(tasks));
1569 >                shuffle(tasks);
1570                  try {
1571                      invokeAll(tasks);
1572                      shouldThrow();
# Line 1590 | Line 1604 | public class ForkJoinTaskTest extends JS
1604                  FailingAsyncFib g = new FailingAsyncFib(9);
1605                  AsyncFib h = new AsyncFib(7);
1606                  ForkJoinTask[] tasks = { f, g, h };
1607 <                Collections.shuffle(Arrays.asList(tasks));
1607 >                shuffle(tasks);
1608                  try {
1609                      invokeAll(tasks);
1610                      shouldThrow();
# Line 1611 | Line 1625 | public class ForkJoinTaskTest extends JS
1625                  AsyncFib g = new AsyncFib(9);
1626                  AsyncFib h = new AsyncFib(7);
1627                  ForkJoinTask[] tasks = { f, g, h };
1628 <                List taskList = Arrays.asList(tasks);
1615 <                Collections.shuffle(taskList);
1628 >                shuffle(tasks);
1629                  try {
1630 <                    invokeAll(taskList);
1630 >                    invokeAll(Arrays.asList(tasks));
1631                      shouldThrow();
1632                  } catch (FJException success) {
1633                      checkCompletedAbnormally(f, success);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines