@@ -0,0 +1,1504 @@
+package com.github.phantomthief.concurrent;%0A%0Aimport static com.github.phantomthief.concurrent.MoreFutures.scheduleWithDynamicDelay;%0Aimport static com.google.common.util.concurrent.Uninterruptibles.sleepUninterruptibly;%0Aimport static java.time.Duration.ofSeconds;%0Aimport static java.util.concurrent.Executors.newSingleThreadScheduledExecutor;%0Aimport static java.util.concurrent.TimeUnit.SECONDS;%0Aimport static org.junit.jupiter.api.Assertions.assertEquals;%0A%0Aimport java.time.Duration;%0Aimport java.util.concurrent.Future;%0Aimport java.util.concurrent.ScheduledExecutorService;%0A%0Aimport org.junit.jupiter.api.Disabled;%0Aimport org.junit.jupiter.api.Test;%0Aimport org.slf4j.Logger;%0Aimport org.slf4j.LoggerFactory;%0A%0A/**%0A * @author w.vela%0A * Created on 2019-11-26.%0A */%0Aclass MoreFuturesDynamicTest %7B%0A%0A    private static final Logger logger = LoggerFactory.getLogger(MoreFuturesDynamicTest.class);%0A%0A    @Disabled%0A    @Test%0A    void test() %7B%0A        ScheduledExecutorService scheduled = newSingleThreadScheduledExecutor();%0A        int%5B%5D i = %7B1%7D;%0A        int%5B%5D run = %7B0%7D;%0A        Future%3C?%3E future = scheduleWithDynamicDelay(scheduled, () -%3E %7B%0A            Duration duration = ofSeconds(i%5B0%5D);%0A            i%5B0%5D++;%0A            return duration;%0A        %7D, () -%3E %7B%0A            logger.info(%22run...%22);%0A            run%5B0%5D++;%0A        %7D);%0A        sleepUninterruptibly(7, SECONDS);%0A        assertEquals(3, run%5B0%5D);%0A        future.cancel(false);%0A        sleepUninterruptibly(5, SECONDS);%0A        assertEquals(3, run%5B0%5D);%0A    %7D%0A%7D%0A

add test case for dynamic scheduled executor.