public virtual void test_combineFuturesAsList_exception()
        {
            CompletableFuture <string> future1 = new CompletableFuture <string>();

            future1.complete("A");
            System.Threading.CountdownEvent latch   = new System.Threading.CountdownEvent(1);
            CompletableFuture <string>      future2 = CompletableFuture.supplyAsync(() =>
            {
                try
                {
                    latch.await();
                }
                catch (InterruptedException)
                {
                }
                throw new System.InvalidOperationException("Oops");
            });
            IList <CompletableFuture <string> > input = ImmutableList.of(future1, future2);

            CompletableFuture <IList <string> > test = Guavate.combineFuturesAsList(input);

            assertEquals(test.Done, false);
            latch.Signal();
            assertThrows(typeof(CompletionException), () => test.join());
            assertEquals(test.Done, true);
            assertEquals(test.CompletedExceptionally, true);
        }
        //-------------------------------------------------------------------------
        public virtual void test_combineFuturesAsList()
        {
            CompletableFuture <string> future1 = new CompletableFuture <string>();

            future1.complete("A");
            System.Threading.CountdownEvent latch   = new System.Threading.CountdownEvent(1);
            CompletableFuture <string>      future2 = CompletableFuture.supplyAsync(() =>
            {
                try
                {
                    latch.await();
                }
                catch (InterruptedException)
                {
                }
                return("B");
            });
            IList <CompletableFuture <string> > input = ImmutableList.of(future1, future2);

            CompletableFuture <IList <string> > test = Guavate.combineFuturesAsList(input);

            assertEquals(test.Done, false);
            latch.Signal();
            IList <string> combined = test.join();

            assertEquals(test.Done, true);
            assertEquals(combined.Count, 2);
            assertEquals(combined[0], "A");
            assertEquals(combined[1], "B");
        }