public void testWritesWriteRequestQueueWhenFinished() throws Exception {
AbstractStreamWriteFilter<M> filter = createFilter();
M message = createMessage(new byte[0]);
WriteRequest wrs[] = new WriteRequest[] {
new DefaultWriteRequest(new Object(), new DummyWriteFuture()),
new DefaultWriteRequest(new Object(), new DummyWriteFuture()),
new DefaultWriteRequest(new Object(), new DummyWriteFuture()) };
Queue<WriteRequest> queue = new LinkedList<WriteRequest>();
queue.add(wrs[0]);
queue.add(wrs[1]);
queue.add(wrs[2]);
/*
* Make up the situation.
*/
session.setAttribute(filter.CURRENT_STREAM, message);
session.setAttribute(filter.CURRENT_WRITE_REQUEST,
new DefaultWriteRequest(message));
session.setAttribute(filter.WRITE_REQUEST_QUEUE, queue);
/*
* Record expectations
*/
NextFilter nextFilter = EasyMock.createMock(NextFilter.class);
nextFilter.filterWrite(session, wrs[0]);
nextFilter.filterWrite(session, wrs[1]);
nextFilter.filterWrite(session, wrs[2]);
nextFilter.messageSent(EasyMock.eq(session), eqWriteRequest(new DefaultWriteRequest(message)));
/*
* Replay.
*/
EasyMock.replay(nextFilter);
filter.messageSent(nextFilter, session, new DefaultWriteRequest(
new Object()));
assertEquals(0, queue.size());
/*
* Verify.