summaryrefslogtreecommitdiffstats
path: root/simple/simple-http/src/test/java/org/simpleframework/http/core/AccumulatorTest.java
diff options
context:
space:
mode:
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.java99
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);
+ }
+}