/** Tests that {@link StreamWriteFilter#setWriteBufferSize(int)} checks the specified size. */ @Test public void testSetWriteBufferSize() { AbstractStreamWriteFilter<M> filter = createFilter(); try { filter.setWriteBufferSize(0); fail("0 writeBuferSize specified. IllegalArgumentException expected."); } catch (IllegalArgumentException iae) { // Pass, exception was thrown // Signifies a successful test execution assertTrue(true); } try { filter.setWriteBufferSize(-100); fail("Negative writeBuferSize specified. IllegalArgumentException expected."); } catch (IllegalArgumentException iae) { // Pass, exception was thrown // Signifies a successful test execution assertTrue(true); } filter.setWriteBufferSize(1); assertEquals(1, filter.getWriteBufferSize()); filter.setWriteBufferSize(1024); assertEquals(1024, filter.getWriteBufferSize()); }
/** * Tests when the contents of the file doesn't fit into one write buffer. * * @throws Exception when something goes wrong */ @Test public void testWriteSeveralBuffersStream() throws Exception { AbstractStreamWriteFilter<M> filter = createFilter(); filter.setWriteBufferSize(4); byte[] data = new byte[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; byte[] chunk1 = new byte[] {1, 2, 3, 4}; byte[] chunk2 = new byte[] {5, 6, 7, 8}; byte[] chunk3 = new byte[] {9, 10}; M message = createMessage(data); WriteRequest writeRequest = new DefaultWriteRequest(message, new DummyWriteFuture()); WriteRequest chunk1Request = new DefaultWriteRequest(IoBuffer.wrap(chunk1)); WriteRequest chunk2Request = new DefaultWriteRequest(IoBuffer.wrap(chunk2)); WriteRequest chunk3Request = new DefaultWriteRequest(IoBuffer.wrap(chunk3)); NextFilter nextFilter = EasyMock.createMock(NextFilter.class); /* * Record expectations */ nextFilter.filterWrite(EasyMock.eq(session), eqWriteRequest(chunk1Request)); nextFilter.filterWrite(EasyMock.eq(session), eqWriteRequest(chunk2Request)); nextFilter.filterWrite(EasyMock.eq(session), eqWriteRequest(chunk3Request)); nextFilter.messageSent(EasyMock.eq(session), eqWriteRequest(writeRequest)); /* * Replay. */ EasyMock.replay(nextFilter); filter.filterWrite(nextFilter, session, writeRequest); filter.messageSent(nextFilter, session, chunk1Request); filter.messageSent(nextFilter, session, chunk2Request); filter.messageSent(nextFilter, session, chunk3Request); /* * Verify. */ EasyMock.verify(nextFilter); assertTrue(writeRequest.getFuture().isWritten()); }