@Test
public void testTerminationNoticeableFuture() throws InterruptedException {

	NoticeableThreadPoolExecutor noticeableThreadPoolExecutor =
		new NoticeableThreadPoolExecutor(
			1, 1, 1, TimeUnit.NANOSECONDS, new LinkedBlockingQueue<>(),
			new MethodNameThreadFactory(),
			(runnable, threadPoolExecutor) -> {
			},
			new ThreadPoolHandlerAdapter());
	NoticeableFuture<Void> terminationNoticeableFuture =
		noticeableThreadPoolExecutor.terminationNoticeableFuture();
	Assert.assertFalse(terminationNoticeableFuture.isDone());
	AtomicBoolean terminated = new AtomicBoolean();
	terminationNoticeableFuture.addFutureListener(
		future -> terminated.set(true));
	noticeableThreadPoolExecutor.shutdown();
	Assert.assertTrue(
		noticeableThreadPoolExecutor.awaitTermination(
			10, TimeUnit.MINUTES));
	Assert.assertTrue(terminated.get());
}