summaryrefslogtreecommitdiffstats
path: root/simple/simple-http/src/test/java/org/simpleframework/http/core/ChunkedProducerTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'simple/simple-http/src/test/java/org/simpleframework/http/core/ChunkedProducerTest.java')
-rw-r--r--simple/simple-http/src/test/java/org/simpleframework/http/core/ChunkedProducerTest.java43
1 files changed, 43 insertions, 0 deletions
diff --git a/simple/simple-http/src/test/java/org/simpleframework/http/core/ChunkedProducerTest.java b/simple/simple-http/src/test/java/org/simpleframework/http/core/ChunkedProducerTest.java
new file mode 100644
index 0000000..9f7a6bb
--- /dev/null
+++ b/simple/simple-http/src/test/java/org/simpleframework/http/core/ChunkedProducerTest.java
@@ -0,0 +1,43 @@
+package org.simpleframework.http.core;
+
+import junit.framework.TestCase;
+
+import org.simpleframework.common.buffer.ArrayAllocator;
+import org.simpleframework.http.message.ChunkedConsumer;
+import org.simpleframework.transport.ByteCursor;
+
+public class ChunkedProducerTest extends TestCase {
+
+ public void testChunk() throws Exception {
+ testChunk(1024, 1);
+ testChunk(1024, 2);
+ testChunk(512, 20);
+ testChunk(64, 64);
+ }
+
+ public void testChunk(int chunkSize, int count) throws Exception {
+ MockSender sender = new MockSender((chunkSize * count) + 1024);
+ MockObserver monitor = new MockObserver();
+ ChunkedConsumer validator = new ChunkedConsumer(new ArrayAllocator());
+ ChunkedEncoder producer = new ChunkedEncoder(monitor, sender);
+ byte[] chunk = new byte[chunkSize];
+
+ for(int i = 0; i < chunk.length; i++) {
+ chunk[i] = (byte)String.valueOf(i).charAt(0);
+ }
+ for(int i = 0; i < count; i++) {
+ producer.encode(chunk, 0, chunkSize);
+ }
+ producer.close();
+
+ System.err.println(sender.getBuffer().encode("UTF-8"));
+
+ ByteCursor cursor = sender.getCursor();
+
+ while(!validator.isFinished()) {
+ validator.consume(cursor);
+ }
+ assertEquals(cursor.ready(), -1);
+ assertTrue(monitor.isReady());
+ }
+}