import java.util.concurrent.*;
import java.util.concurrent.atomic.AtomicInteger;
public class TaskSchedulerTest {
public static void main(String[] args) throws Exception {
TaskScheduler scheduler = new InMemoryTaskScheduler();
AtomicInteger counter = new AtomicInteger(0);
scheduler.schedule("task1", counter::incrementAndGet,
System.currentTimeMillis() + 1000);
Thread.sleep(1500);
assert counter.get() == 1;
// Cancellation test
scheduler.schedule("task2", counter::incrementAndGet,
System.currentTimeMillis() + 1000);
boolean cancelled = scheduler.cancel("task2");
assert cancelled;
Thread.sleep(1500);
assert counter.get() == 1;
// Cancel non-existent
assert !scheduler.cancel("missing");
System.out.println("✅ TaskScheduler tests passed");
}
}