@Test
public void testDelay() throws InterruptedException {

    ScheduledExecutorService ses =
        Executors.newSingleThreadScheduledExecutor();
    SingletonTask st1 = new SingletonTask(ses, new Runnable() {
        @Override
        public void run() {
            ran += 1;
            time = System.nanoTime();
        }
    });
    st1.reschedule(10, TimeUnit.MILLISECONDS);
    assertFalse("Check that task hasn't run yet", ran > 0);
    ses.shutdown();
    ses.awaitTermination(5, TimeUnit.SECONDS);
    assertEquals("Check that task ran", 1, ran);
}