Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(360)

Unified Diff: net/http/http_chunked_decoder_unittest.cc

Issue 267042: Add an interface to report the amount of data after a chunked encoding.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/http/http_chunked_decoder.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/http/http_chunked_decoder_unittest.cc
===================================================================
--- net/http/http_chunked_decoder_unittest.cc (revision 28152)
+++ net/http/http_chunked_decoder_unittest.cc (working copy)
@@ -13,7 +13,8 @@
void RunTest(const char* inputs[], size_t num_inputs,
const char* expected_output,
- bool expected_eof) {
+ bool expected_eof,
+ int bytes_after_eof) {
net::HttpChunkedDecoder decoder;
EXPECT_FALSE(decoder.reached_eof());
@@ -27,8 +28,9 @@
result.append(input.data(), n);
}
- EXPECT_TRUE(result == expected_output);
- EXPECT_TRUE(decoder.reached_eof() == expected_eof);
+ EXPECT_EQ(result, expected_output);
wtc 2009/10/12 18:48:19 Another nit: in these EXPECT_XX macros, the expect
+ EXPECT_EQ(decoder.reached_eof(), expected_eof);
+ EXPECT_EQ(decoder.bytes_after_eof(), bytes_after_eof);
}
// Feed the inputs to the decoder, until it returns an error.
@@ -56,14 +58,14 @@
const char* inputs[] = {
"5\r\nhello\r\n0\r\n\r\n"
};
- RunTest(inputs, arraysize(inputs), "hello", true);
+ RunTest(inputs, arraysize(inputs), "hello", true, 0);
}
TEST(HttpChunkedDecoderTest, OneChunk) {
const char* inputs[] = {
"5\r\nhello\r\n"
};
- RunTest(inputs, arraysize(inputs), "hello", false);
+ RunTest(inputs, arraysize(inputs), "hello", false, 0);
}
TEST(HttpChunkedDecoderTest, Typical) {
@@ -73,7 +75,7 @@
"5\r\nworld\r\n",
"0\r\n\r\n"
};
- RunTest(inputs, arraysize(inputs), "hello world", true);
+ RunTest(inputs, arraysize(inputs), "hello world", true, 0);
}
TEST(HttpChunkedDecoderTest, Incremental) {
@@ -90,7 +92,7 @@
"\r",
"\n"
};
- RunTest(inputs, arraysize(inputs), "hello", true);
+ RunTest(inputs, arraysize(inputs), "hello", true, 0);
}
TEST(HttpChunkedDecoderTest, LF_InsteadOf_CRLF) {
@@ -103,7 +105,7 @@
"5\nworld\n",
"0\n\n"
};
- RunTest(inputs, arraysize(inputs), "hello world", true);
+ RunTest(inputs, arraysize(inputs), "hello world", true, 0);
}
TEST(HttpChunkedDecoderTest, Extensions) {
@@ -111,7 +113,7 @@
"5;x=0\r\nhello\r\n",
"0;y=\"2 \"\r\n\r\n"
};
- RunTest(inputs, arraysize(inputs), "hello", true);
+ RunTest(inputs, arraysize(inputs), "hello", true, 0);
}
TEST(HttpChunkedDecoderTest, Trailers) {
@@ -122,7 +124,7 @@
"Bar: 2\r\n",
"\r\n"
};
- RunTest(inputs, arraysize(inputs), "hello", true);
+ RunTest(inputs, arraysize(inputs), "hello", true, 0);
}
TEST(HttpChunkedDecoderTest, TrailersUnfinished) {
@@ -131,7 +133,7 @@
"0\r\n",
"Foo: 1\r\n"
};
- RunTest(inputs, arraysize(inputs), "hello", false);
+ RunTest(inputs, arraysize(inputs), "hello", false, 0);
}
TEST(HttpChunkedDecoderTest, InvalidChunkSize_TooBig) {
@@ -165,7 +167,7 @@
"5 \r\nhello\r\n",
"0\r\n\r\n"
};
- RunTest(inputs, arraysize(inputs), "hello", true);
+ RunTest(inputs, arraysize(inputs), "hello", true, 0);
}
TEST(HttpChunkedDecoderTest, InvalidChunkSize_TrailingTab) {
@@ -273,3 +275,35 @@
};
RunTestUntilFailure(inputs, arraysize(inputs), 0);
}
+
+TEST(HttpChunkedDecoderTest, BasicExtraData) {
+ const char* inputs[] = {
+ "5\r\nhello\r\n0\r\n\r\nextra bytes"
+ };
+ RunTest(inputs, arraysize(inputs), "hello", true, 11);
+}
+
+TEST(HttpChunkedDecoderTest, IncrementalExtraData) {
+ const char* inputs[] = {
+ "5",
+ "\r",
+ "\n",
+ "hello",
+ "\r",
+ "\n",
+ "0",
+ "\r",
+ "\n",
+ "\r",
+ "\nextra bytes"
+ };
+ RunTest(inputs, arraysize(inputs), "hello", true, 11);
+}
+
+TEST(HttpChunkedDecoderTest, MultipleExtraDataBlocks) {
+ const char* inputs[] = {
+ "5\r\nhello\r\n0\r\n\r\nextra",
+ " bytes"
+ };
+ RunTest(inputs, arraysize(inputs), "hello", true, 11);
+}
« no previous file with comments | « net/http/http_chunked_decoder.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698