aboutsummaryrefslogtreecommitdiff
path: root/core/src/test/java/fi/iki/elonen/HttpChunkedResponseTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/test/java/fi/iki/elonen/HttpChunkedResponseTest.java')
-rw-r--r--core/src/test/java/fi/iki/elonen/HttpChunkedResponseTest.java111
1 files changed, 74 insertions, 37 deletions
diff --git a/core/src/test/java/fi/iki/elonen/HttpChunkedResponseTest.java b/core/src/test/java/fi/iki/elonen/HttpChunkedResponseTest.java
index c3fb1f0..8853efa 100644
--- a/core/src/test/java/fi/iki/elonen/HttpChunkedResponseTest.java
+++ b/core/src/test/java/fi/iki/elonen/HttpChunkedResponseTest.java
@@ -1,46 +1,50 @@
package fi.iki.elonen;
+/*
+ * #%L
+ * NanoHttpd-Core
+ * %%
+ * Copyright (C) 2012 - 2015 nanohttpd
+ * %%
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * 3. Neither the name of the nanohttpd nor the names of its contributors
+ * may be used to endorse or promote products derived from this software without
+ * specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+ * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ * #L%
+ */
+
+import static fi.iki.elonen.NanoHTTPD.Response.Status.OK;
+
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.PipedInputStream;
-import static fi.iki.elonen.NanoHTTPD.Response.Status.OK;
-
public class HttpChunkedResponseTest extends HttpServerTest {
- @org.junit.Test
- public void thatChunkedContentIsChunked() throws Exception {
- PipedInputStream pipedInputStream = new ChunkedInputStream(new String[]{
- "some",
- "thing which is longer than sixteen characters",
- "whee!",
- ""
- });
- String[] expected = {
- "HTTP/1.1 200 OK",
- "Content-Type: what/ever",
- "Date: .*",
- "Connection: keep-alive",
- "Transfer-Encoding: chunked",
- "",
- "4",
- "some",
- "2d",
- "thing which is longer than sixteen characters",
- "5",
- "whee!",
- "0",
- ""
- };
- testServer.response = new NanoHTTPD.Response(OK, "what/ever", pipedInputStream);
- testServer.response.setChunkedTransfer(true);
-
- ByteArrayOutputStream byteArrayOutputStream = invokeServer("GET / HTTP/1.0");
-
- assertResponse(byteArrayOutputStream, expected);
- }
private static class ChunkedInputStream extends PipedInputStream {
+
int chunk = 0;
+
String[] chunks;
private ChunkedInputStream(String[] chunks) {
@@ -48,12 +52,45 @@ public class HttpChunkedResponseTest extends HttpServerTest {
}
@Override
- public synchronized int read(byte[] buffer) throws IOException {
+ public synchronized int read(byte[] buffer, int off, int len) throws IOException {
// Too implementation-linked, but...
- for (int i = 0; i < chunks[chunk].length(); ++i) {
- buffer[i] = (byte) chunks[chunk].charAt(i);
+ for (int i = 0; i < this.chunks[this.chunk].length(); ++i) {
+ buffer[i] = (byte) this.chunks[this.chunk].charAt(i);
}
- return chunks[chunk++].length();
+ return this.chunks[this.chunk++].length();
}
}
+
+ @org.junit.Test
+ public void thatChunkedContentIsChunked() throws Exception {
+ PipedInputStream pipedInputStream = new ChunkedInputStream(new String[]{
+ "some",
+ "thing which is longer than sixteen characters",
+ "whee!",
+ ""
+ });
+ String[] expected = {
+ "HTTP/1.1 200 OK",
+ "Content-Type: what/ever",
+ "Date: .*",
+ "Connection: keep-alive",
+ "Transfer-Encoding: chunked",
+ "",
+ "4",
+ "some",
+ "2d",
+ "thing which is longer than sixteen characters",
+ "5",
+ "whee!",
+ "0",
+ ""
+ };
+ this.testServer.response = new NanoHTTPD(0) {
+ }.newChunkedResponse(OK, "what/ever", pipedInputStream);
+ this.testServer.response.setChunkedTransfer(true);
+
+ ByteArrayOutputStream byteArrayOutputStream = invokeServer("GET / HTTP/1.1");
+
+ assertResponse(byteArrayOutputStream, expected);
+ }
}