package org.threadly.concurrent.wrapper.interceptor; import java.util.ArrayList; import java.util.List; import org.junit.Before; import org.junit.Test; import org.threadly.concurrent.DoNothingRunnable; import org.threadly.concurrent.SchedulerService; import org.threadly.test.concurrent.TestRunnable; import org.threadly.test.concurrent.TestableScheduler; @SuppressWarnings("javadoc") public class SchedulerServiceTaskInterceptorTest extends SubmitterSchedulerTaskInterceptorTest { @Before @Override public void setup() { scheduler = new TestableScheduler(); submitterSchedulerInterceptor = new TestSchedulerServiceInterceptor(scheduler); executorInterceptor = submitterSchedulerInterceptor; testInterceptor = (TestInterceptor)executorInterceptor; interceptedTasks = new ArrayList<>(1); submitSchedulerTaskInterceptorLamba = new SchedulerServiceTaskInterceptor(scheduler, (r1, b1) -> { interceptedTasks.add(r1); return DoNothingRunnable.instance(); }); tr = new TestRunnable(); } @Override @Test (expected = RuntimeException.class) public void defaultConstructorFail() { SchedulerServiceTaskInterceptor ssti = new SchedulerServiceTaskInterceptor(scheduler); ssti.schedule(DoNothingRunnable.instance(), 10); } @Override @Test (expected = RuntimeException.class) public void nullConstructorFail() { @SuppressWarnings("unused") SchedulerServiceTaskInterceptor ssti = new SchedulerServiceTaskInterceptor(scheduler, null); } private static class TestSchedulerServiceInterceptor extends SchedulerServiceTaskInterceptor implements TestInterceptor { private final List<Runnable> interceptedTasks; public TestSchedulerServiceInterceptor(SchedulerService parentScheduler) { super(parentScheduler); interceptedTasks = new ArrayList<>(1); } @Override public List<Runnable> getInterceptedTasks() { return interceptedTasks; } @Override public Runnable wrapTask(Runnable task, boolean recurring) { interceptedTasks.add(task); return DoNothingRunnable.instance(); } } }