### Question:
ThreadPool extends ThreadPoolExecutor { @Override public WorkQueue getQueue() { return queue; } private  ThreadPool(String name,
                       int corePoolSize,
                       int maximumPoolSize,
                       int growthThreshold,
                       int growthRate,
                       long keepAliveTime,
                       TimeUnit keepAliveTimeUnit,
                       ThreadFactory threadFactory,
                       WorkQueue queue,
                       RejectionHandler rejectionHandler); static Optional<ThreadPool> asThreadPool(ExecutorService executor); String getName(); int getQueueCapacity(); float getAverageQueueSize(); int getPeakQueueSize(); int getCompletedTasks(); int getFailedTasks(); int getTotalTasks(); int getActiveThreads(); float getAverageActiveThreads(); int getRejectionCount(); boolean isFixedSize(); @Override WorkQueue getQueue(); int getQueueSize(); @Override void setRejectedExecutionHandler(RejectedExecutionHandler handler); @Override RejectionHandler getRejectedExecutionHandler(); @Override void setMaximumPoolSize(int maximumPoolSize); @Override String toString(); @Override void shutdown();  }### Answer:
@Test void testFixedPoolQueueSelection() { pool = newPool(2, 2, 100, 25); assertThat(pool.getQueue().getClass() == ThreadPool.WorkQueue.class, is(true)); }
@Test void testZeroGrowthRateQueueSelection() { pool = newPool(2, 8, 100, 0); assertThat(pool.getQueue().getClass() == ThreadPool.WorkQueue.class, is(true)); }
@Test void testNonZeroGrowthRateQueueSelection() { pool = newPool(2, 8, 100, 10); assertThat(pool.getQueue().getClass() == ThreadPool.DynamicPoolWorkQueue.class, is(true)); }