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

Comparing jsr166/src/test/tck/CompletableFutureTest.java (file contents):
Revision 1.85 by jsr166, Mon Jun 16 20:44:14 2014 UTC vs.
Revision 1.86 by jsr166, Mon Jun 16 21:04:23 2014 UTC

# Line 2922 | Line 2922 | public class CompletableFutureTest exten
2922       * when all components complete normally
2923       */
2924      public void testAllOf_normal() throws Exception {
2925 <        for (int k = 1; k < 20; ++k) {
2925 >        for (int k = 1; k < 20; k++) {
2926              CompletableFuture<Integer>[] fs
2927                  = (CompletableFuture<Integer>[]) new CompletableFuture[k];
2928 <            for (int i = 0; i < k; ++i)
2928 >            for (int i = 0; i < k; i++)
2929                  fs[i] = new CompletableFuture<>();
2930              CompletableFuture<Void> f = CompletableFuture.allOf(fs);
2931 <            for (int i = 0; i < k; ++i) {
2931 >            for (int i = 0; i < k; i++) {
2932                  checkIncomplete(f);
2933                  checkIncomplete(CompletableFuture.allOf(fs));
2934                  fs[i].complete(one);
# Line 2939 | Line 2939 | public class CompletableFutureTest exten
2939      }
2940  
2941      public void testAllOf_backwards() throws Exception {
2942 <        for (int k = 1; k < 20; ++k) {
2942 >        for (int k = 1; k < 20; k++) {
2943              CompletableFuture<Integer>[] fs
2944                  = (CompletableFuture<Integer>[]) new CompletableFuture[k];
2945 <            for (int i = 0; i < k; ++i)
2945 >            for (int i = 0; i < k; i++)
2946                  fs[i] = new CompletableFuture<>();
2947              CompletableFuture<Void> f = CompletableFuture.allOf(fs);
2948              for (int i = k - 1; i >= 0; i--) {
# Line 2959 | Line 2959 | public class CompletableFutureTest exten
2959       * anyOf(no component futures) returns an incomplete future
2960       */
2961      public void testAnyOf_empty() throws Exception {
2962 +        for (Integer v1 : new Integer[] { 1, null })
2963 +    {
2964          CompletableFuture<Object> f = CompletableFuture.anyOf();
2965          checkIncomplete(f);
2966 <    }
2966 >
2967 >        f.complete(v1);
2968 >        checkCompletedNormally(f, v1);
2969 >    }}
2970  
2971      /**
2972       * anyOf returns a future completed normally with a value when
2973       * a component future does
2974       */
2975      public void testAnyOf_normal() throws Exception {
2976 <        for (int k = 0; k < 10; ++k) {
2976 >        for (int k = 0; k < 10; k++) {
2977              CompletableFuture[] fs = new CompletableFuture[k];
2978 <            for (int i = 0; i < k; ++i)
2978 >            for (int i = 0; i < k; i++)
2979                  fs[i] = new CompletableFuture<>();
2980              CompletableFuture<Object> f = CompletableFuture.anyOf(fs);
2981              checkIncomplete(f);
2982 <            for (int i = 0; i < k; ++i) {
2983 <                fs[i].complete(one);
2984 <                checkCompletedNormally(f, one);
2985 <                checkCompletedNormally(CompletableFuture.anyOf(fs), one);
2982 >            for (int i = 0; i < k; i++) {
2983 >                fs[i].complete(i);
2984 >                checkCompletedNormally(f, 0);
2985 >                int x = (int) CompletableFuture.anyOf(fs).join();
2986 >                assertTrue(0 <= x && x <= i);
2987 >            }
2988 >        }
2989 >    }
2990 >    public void testAnyOf_normal_backwards() throws Exception {
2991 >        for (int k = 0; k < 10; k++) {
2992 >            CompletableFuture[] fs = new CompletableFuture[k];
2993 >            for (int i = 0; i < k; i++)
2994 >                fs[i] = new CompletableFuture<>();
2995 >            CompletableFuture<Object> f = CompletableFuture.anyOf(fs);
2996 >            checkIncomplete(f);
2997 >            for (int i = k - 1; i >= 0; i--) {
2998 >                fs[i].complete(i);
2999 >                checkCompletedNormally(f, k - 1);
3000 >                int x = (int) CompletableFuture.anyOf(fs).join();
3001 >                assertTrue(i <= x && x <= k - 1);
3002              }
3003          }
3004      }
# Line 2986 | Line 3007 | public class CompletableFutureTest exten
3007       * anyOf result completes exceptionally when any component does.
3008       */
3009      public void testAnyOf_exceptional() throws Exception {
3010 <        for (int k = 0; k < 10; ++k) {
3010 >        for (int k = 0; k < 10; k++) {
3011              CompletableFuture[] fs = new CompletableFuture[k];
3012 <            for (int i = 0; i < k; ++i)
3012 >            for (int i = 0; i < k; i++)
3013                  fs[i] = new CompletableFuture<>();
3014              CompletableFuture<Object> f = CompletableFuture.anyOf(fs);
3015              checkIncomplete(f);
3016 <            for (int i = 0; i < k; ++i) {
3016 >            for (int i = 0; i < k; i++) {
3017                  fs[i].completeExceptionally(new CFException());
3018                  checkCompletedWithWrappedCFException(f);
3019                  checkCompletedWithWrappedCFException(CompletableFuture.anyOf(fs));

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines