@Test public void cancelFutureBeforeBindingShouldRemoveRecordedTask() { Future<?> future = goro.schedule(mock(Callable.class)); future.cancel(true); goro.bind(); assertBinding(); verify(serviceInstance, never()).schedule(anyString(), any(Callable.class)); }
@Test public void afterBindingScheduleShouldBeDelegated() { goro.bind(); Callable<?> task = mock(Callable.class); ObservableFuture<?> future = mock(ObservableFuture.class); doReturn(future).when(serviceInstance).schedule("2", task); assertThat((Object) goro.schedule("2", task)).isSameAs(future); }
@Test public void throwingTimeoutWithoutBinding() throws Exception { final Future<String> f = goro.schedule(okTask()); final String[] result = new String[1]; final Exception[] error = new Exception[1]; Thread t = new Thread() { @Override public void run() { try { result[0] = f.get(5, TimeUnit.MILLISECONDS); } catch (Exception e) { error[0] = e; } } }; t.start(); t.join(1000); assertThat(result).containsNull(); assertThat(error[0]).isInstanceOf(TimeoutException.class); }
@Override public <T> ObservableFuture<T> schedule(final Callable<T> task) { return schedule(DEFAULT_QUEUE, task); }