@Test public void listener_exception() throws Exception{ final CallableAsyncResult<String> t = new CallableAsyncResult<String>(new Callable<String>() { @Override public String call() throws Exception { throw new NotARealException(); } }); StatisticsCallback tl=new StatisticsCallback(); t.addCallback(tl); t.start(); t.start(); try{ t.get(); fail("exception error"); }catch(ExecutionException ex){ assertEquals("exception error", NotARealException.class, ex.getCause().getClass()); } tl.check("exception",true); }
@Test public void listener_cancel() throws Exception{ final CallableAsyncResult<String> t = new CallableAsyncResult<String>(new Callable<String>() { @Override public String call() throws Exception { throw new NotARealException(); } }); StatisticsCallback tl=new StatisticsCallback(); t.addCallback(tl); assertTrue("cancel return false", t.cancel(true)); assertTrue("cancel return false", t.cancel(true)); t.start(); t.start(); try{ t.get(); fail("cancel error"); }catch(CancellationException ex){ } tl.check("cancelled",false); }
@Test public void listener_succ() throws InterruptedException, ExecutionException{ final CallableAsyncResult<String> t4 = new CallableAsyncResult<String>(new Callable<String>() { @Override public String call() { try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } return "Return value"; } }); StatisticsCallback t4l=new StatisticsCallback(); t4.addCallback(t4l); t4.start(); t4.start(); t4.start(); assertEquals("get failed", "Return value", t4.get()); assertEquals("get failed", "Return value", t4.get()); assertEquals("get failed", "Return value", t4.get()); t4l.check("completed",true); }