package org.threadly.concurrent.wrapper; import static org.junit.Assert.*; import java.util.concurrent.Executor; import org.junit.Test; import org.threadly.concurrent.PrioritySchedulerTest.PrioritySchedulerFactory; import org.threadly.concurrent.SubmitterExecutorInterfaceTest; import org.threadly.test.concurrent.TestRunnable; @SuppressWarnings("javadoc") public class SubmitterExecutorAdapterTest extends SubmitterExecutorInterfaceTest { @Override protected SubmitterExecutorFactory getSubmitterExecutorFactory() { return new ExecutorWrapperFactory(); } @SuppressWarnings("unused") @Test (expected = IllegalArgumentException.class) public void constructorFail() { new SubmitterExecutorAdapter(null); fail("Exception should have thrown"); } @Test @Override public void executeTest() { TestExecutor te = new TestExecutor(); SubmitterExecutorAdapter ew = new SubmitterExecutorAdapter(te); Runnable r = new TestRunnable(); ew.execute(r); assertTrue(te.lastCommand == r); super.executeTest(); } private class ExecutorWrapperFactory implements SubmitterExecutorFactory { private final PrioritySchedulerFactory schedulerFactory = new PrioritySchedulerFactory(); @Override public SubmitterExecutorAdapter makeSubmitterExecutor(int poolSize, boolean prestartIfAvailable) { return new SubmitterExecutorAdapter(schedulerFactory.makeSubmitterExecutor(poolSize, prestartIfAvailable)); } @Override public void shutdown() { schedulerFactory.shutdown(); } } private static class TestExecutor implements Executor { private Runnable lastCommand = null; @Override public void execute(Runnable command) { lastCommand = command; } } }