@Test
public void testPost() throws Exception {

	AsyncBroker<String, String> asyncBroker = new AsyncBroker<>();
	Map<String, DefaultNoticeableFuture<String>> defaultNoticeableFutures =
		ReflectionTestUtil.getFieldValue(
			asyncBroker, "_defaultNoticeableFutures");
	NoticeableFuture<String> noticeableFuture = asyncBroker.post(_KEY);
	Assert.assertEquals(
		defaultNoticeableFutures.toString(), 1,
		defaultNoticeableFutures.size());
	Assert.assertSame(noticeableFuture, defaultNoticeableFutures.get(_KEY));
	Assert.assertSame(noticeableFuture, asyncBroker.post(_KEY));
	Assert.assertEquals(
		defaultNoticeableFutures.toString(), 1,
		defaultNoticeableFutures.size());
	Assert.assertTrue(noticeableFuture.cancel(true));
	Assert.assertTrue(
		defaultNoticeableFutures.toString(),
		defaultNoticeableFutures.isEmpty());
	boolean[] newMarker = new boolean[1];
	noticeableFuture = asyncBroker.post(_KEY, newMarker);
	Assert.assertNotNull(noticeableFuture);
	Assert.assertTrue(Arrays.toString(newMarker), newMarker[0]);
	Assert.assertSame(noticeableFuture, asyncBroker.post(_KEY, newMarker));
	Assert.assertFalse(Arrays.toString(newMarker), newMarker[0]);
	Assert.assertTrue(noticeableFuture.cancel(true));
	Assert.assertTrue(
		defaultNoticeableFutures.toString(),
		defaultNoticeableFutures.isEmpty());
}