public void testWhenAllTwoErrors()

in BoltsTest/src/bolts/TaskTest.java [271:312]


  public void testWhenAllTwoErrors() {
    final Exception error = new RuntimeException("This task failed.");
    
    runTaskTest(new Callable<Task<?>>() {
      @Override
      public Task<?> call() throws Exception {
        final ArrayList<Task<Void>> tasks = new ArrayList<Task<Void>>();
        for (int i = 0; i < 20; i++) {
          final int number = i;
          Task<Void> task = Task.callInBackground(new Callable<Void>() {
            @Override
            public Void call() throws Exception {
              Thread.sleep((long) (Math.random() * 1000));
              if (number == 10 || number == 11) {
                throw error;
              }
              return null;
            }
          });
          tasks.add(task);
        }
        return Task.whenAll(tasks).continueWith(new Continuation<Void, Void>() {
          @Override
          public Void then(Task<Void> task) {
            assertTrue(task.isCompleted());
            assertTrue(task.isFaulted());
            assertFalse(task.isCancelled());

            assertTrue(task.getError() instanceof AggregateException);
            assertEquals(2, ((AggregateException)task.getError()).getErrors().size());
            assertEquals(error, ((AggregateException)task.getError()).getErrors().get(0));
            assertEquals(error, ((AggregateException)task.getError()).getErrors().get(1));

            for (Task<Void> t : tasks) {
              assertTrue(t.isCompleted());
            }
            return null;
          }
        });
      }
    });
  }