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"))); } }