diff options
Diffstat (limited to 'simple/simple-http/src/test/java/org/simpleframework/http/core/AccumulatorTest.java')
-rw-r--r-- | simple/simple-http/src/test/java/org/simpleframework/http/core/AccumulatorTest.java | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/simple/simple-http/src/test/java/org/simpleframework/http/core/AccumulatorTest.java b/simple/simple-http/src/test/java/org/simpleframework/http/core/AccumulatorTest.java new file mode 100644 index 0000000..70db4a3 --- /dev/null +++ b/simple/simple-http/src/test/java/org/simpleframework/http/core/AccumulatorTest.java @@ -0,0 +1,99 @@ +package org.simpleframework.http.core; + +import java.io.IOException; + +import junit.framework.TestCase; + +public class AccumulatorTest extends TestCase { + + public void testAccumulator() throws IOException { + MockChannel channel = new MockChannel(null); + MockObserver monitor = new MockObserver(); + MockRequest request = new MockRequest(); + MockResponse response = new MockResponse(); + Conversation support = new Conversation(request, response); + ResponseBuffer buffer = new ResponseBuffer(monitor, response, support, channel); + + byte[] content = { 'T', 'E', 'S', 'T' }; + + // Start a HTTP/1.1 conversation + request.setMajor(1); + request.setMinor(1); + + // Write to a zero capacity buffer + buffer.expand(0); + buffer.write(content, 0, content.length); + + assertEquals(response.getValue("Connection"), "keep-alive"); + assertEquals(response.getValue("Transfer-Encoding"), "chunked"); + assertEquals(response.getValue("Content-Length"), null); + assertEquals(response.getContentLength(), -1); + assertTrue(response.isCommitted()); + + channel = new MockChannel(null); + monitor = new MockObserver(); + request = new MockRequest(); + response = new MockResponse(); + support = new Conversation(request, response); + buffer = new ResponseBuffer(monitor, response, support, channel); + + // Start a HTTP/1.0 conversation + request.setMajor(1); + request.setMinor(0); + + // Write to a zero capacity buffer + buffer.expand(0); + buffer.write(content, 0, content.length); + + assertEquals(response.getValue("Connection"), "close"); + assertEquals(response.getValue("Transfer-Encoding"), null); + assertEquals(response.getValue("Content-Length"), null); + assertEquals(response.getContentLength(), -1); + assertTrue(response.isCommitted()); + + channel = new MockChannel(null); + monitor = new MockObserver(); + request = new MockRequest(); + response = new MockResponse(); + support = new Conversation(request, response); + buffer = new ResponseBuffer(monitor, response, support, channel); + + // Start a HTTP/1.1 conversation + request.setMajor(1); + request.setMinor(1); + + // Write to a large capacity buffer + buffer.expand(1024); + buffer.write(content, 0, content.length); + + assertEquals(response.getValue("Connection"), null); + assertEquals(response.getValue("Transfer-Encoding"), null); + assertEquals(response.getValue("Content-Length"), null); + assertEquals(response.getContentLength(), -1); + assertFalse(response.isCommitted()); + assertFalse(monitor.isReady()); + assertFalse(monitor.isClose()); + assertFalse(monitor.isError()); + + // Flush the buffer + buffer.close(); + + assertEquals(response.getValue("Connection"), "keep-alive"); + assertEquals(response.getValue("Transfer-Encoding"), null); + assertEquals(response.getValue("Content-Length"), "4"); + assertEquals(response.getContentLength(), 4); + assertTrue(response.isCommitted()); + assertTrue(monitor.isReady()); + assertFalse(monitor.isClose()); + assertFalse(monitor.isError()); + + boolean catchOverflow = false; + + try { + buffer.write(content, 0, content.length); + } catch(Exception e) { + catchOverflow = true; + } + assertTrue(catchOverflow); + } +} |