Adds test cases demonstrating that HpackEncoder will emit a comma-delimited value as a single HPACK entry.
gfe-relnote: n/a (test only)
PiperOrigin-RevId: 284992107
Change-Id: I61df44dea58630412ac6065cde91d30dc6c506e1
diff --git a/spdy/core/hpack/hpack_encoder_test.cc b/spdy/core/hpack/hpack_encoder_test.cc
index 9df4f26..9a73a88 100644
--- a/spdy/core/hpack/hpack_encoder_test.cc
+++ b/spdy/core/hpack/hpack_encoder_test.cc
@@ -307,6 +307,13 @@
CompareWithExpectedEncoding(headers);
}
+TEST_P(HpackEncoderTest, MultiValuedHeadersNotCrumbled) {
+ ExpectIndexedLiteral("foo", "bar, baz");
+ SpdyHeaderBlock headers;
+ headers["foo"] = "bar, baz";
+ CompareWithExpectedEncoding(headers);
+}
+
TEST_P(HpackEncoderTest, StringsDynamicallySelectHuffmanCoding) {
// Compactable string. Uses Huffman coding.
peer_.EmitString("feedbeef");
@@ -343,12 +350,14 @@
ExpectNonIndexedLiteral("hello", "goodbye");
ExpectNonIndexedLiteral("hello", "aloha");
}
+ ExpectNonIndexedLiteral("multivalue", "value1, value2");
SpdyHeaderBlock headers;
headers[":path"] = "/index.html";
headers["cookie"] = "foo=bar; baz=bing";
headers["hello"] = "goodbye";
headers.AppendValueOrAddHeader("hello", "aloha");
+ headers["multivalue"] = "value1, value2";
CompareWithExpectedEncoding(headers);
@@ -359,13 +368,15 @@
headers_observed_,
ElementsAre(Pair(":path", "/index.html"), Pair("cookie", "foo=bar"),
Pair("cookie", "baz=bing"),
- Pair("hello", std::string("goodbye\0aloha", 13))));
+ Pair("hello", std::string("goodbye\0aloha", 13)),
+ Pair("multivalue", "value1, value2")));
} else {
EXPECT_THAT(
headers_observed_,
ElementsAre(Pair(":path", "/index.html"), Pair("cookie", "foo=bar"),
Pair("cookie", "baz=bing"), Pair("hello", "goodbye"),
- Pair("hello", "aloha")));
+ Pair("hello", "aloha"),
+ Pair("multivalue", "value1, value2")));
}
}