public static <T> Completion<T> future(Future<T> future) { return future(future, null); }
public static <T> Completion<T> future(Future<T> future) { return future(future, null); }
public static <T> Completion<T> future(Callable<T> callable) { FutureTask<T> task = new FutureTask<T>(callable); return future(task, task); }
public static <T> Completion<T> future(Callable<T> callable) { FutureTask<T> task = new FutureTask<T>(callable); return future(task, task); }
@Test public void testFutureFails() { final Exception reason = new Exception(); final AtomicInteger count = new AtomicInteger(); Completion<String> completion = Completion.future(new Callable<String>() { public String call() throws Exception { count.incrementAndGet(); throw reason; } }); assertEquals(0, count.get()); assertEquals(null, completion.get()); assertEquals(1, count.get()); assertEquals(null, completion.get()); assertEquals(1, count.get()); assertEquals(reason, completion.getCause()); assertEquals(1, count.get()); assertEquals(true, completion.isFailed()); assertEquals(1, count.get()); } }
@Test public void testFutureComplete() { final AtomicInteger count = new AtomicInteger(); Completion<String> completion = Completion.future(new Callable<String>() { public String call() throws Exception { count.incrementAndGet(); return "foo"; } }); assertEquals(0, count.get()); assertEquals("foo", completion.get()); assertEquals(1, count.get()); assertEquals("foo", completion.get()); assertEquals(1, count.get()); assertEquals(null, completion.getCause()); assertEquals(1, count.get()); assertEquals(false, completion.isFailed()); assertEquals(1, count.get()); }
@Test public void testFutureFails() { final Exception reason = new Exception(); final AtomicInteger count = new AtomicInteger(); Completion<String> completion = Completion.future(new Callable<String>() { public String call() throws Exception { count.incrementAndGet(); throw reason; } }); assertEquals(0, count.get()); assertEquals(null, completion.get()); assertEquals(1, count.get()); assertEquals(null, completion.get()); assertEquals(1, count.get()); assertEquals(reason, completion.getCause()); assertEquals(1, count.get()); assertEquals(true, completion.isFailed()); assertEquals(1, count.get()); } }
@Test public void testFutureComplete() { final AtomicInteger count = new AtomicInteger(); Completion<String> completion = Completion.future(new Callable<String>() { public String call() throws Exception { count.incrementAndGet(); return "foo"; } }); assertEquals(0, count.get()); assertEquals("foo", completion.get()); assertEquals(1, count.get()); assertEquals("foo", completion.get()); assertEquals(1, count.get()); assertEquals(null, completion.getCause()); assertEquals(1, count.get()); assertEquals(false, completion.isFailed()); assertEquals(1, count.get()); }