Adds a new operator to SpdyHeaderBlock::ValueProxy, allowing it to be compared with SpdyStringPiece.

gfe-relnote: n/a (new code, only used in tests)
PiperOrigin-RevId: 285846905
Change-Id: I5273fbe19b4cb9c7778f98fd53e2fb7d003881d5
diff --git a/spdy/core/spdy_header_block_test.cc b/spdy/core/spdy_header_block_test.cc
index 774854b..7695aad 100644
--- a/spdy/core/spdy_header_block_test.cc
+++ b/spdy/core/spdy_header_block_test.cc
@@ -189,6 +189,27 @@
   EXPECT_EQ("singleton", block["h4"]);
 }
 
+TEST(SpdyHeaderBlockTest, CompareValueToSpdyStringPiece) {
+  SpdyHeaderBlock block;
+  block["foo"] = "foo";
+  block.AppendValueOrAddHeader("foo", "bar");
+  const auto& val = block["foo"];
+  const char expected[] = "foo\0bar";
+  EXPECT_TRUE(SpdyStringPiece(expected, 7) == val);
+  EXPECT_TRUE(val == SpdyStringPiece(expected, 7));
+  EXPECT_FALSE(SpdyStringPiece(expected, 3) == val);
+  EXPECT_FALSE(val == SpdyStringPiece(expected, 3));
+  const char not_expected[] = "foo\0barextra";
+  EXPECT_FALSE(SpdyStringPiece(not_expected, 12) == val);
+  EXPECT_FALSE(val == SpdyStringPiece(not_expected, 12));
+
+  const auto& val2 = block["foo2"];
+  EXPECT_FALSE(SpdyStringPiece(expected, 7) == val2);
+  EXPECT_FALSE(val2 == SpdyStringPiece(expected, 7));
+  EXPECT_FALSE(SpdyStringPiece("") == val2);
+  EXPECT_FALSE(val2 == SpdyStringPiece(""));
+}
+
 // This test demonstrates that the SpdyHeaderBlock data structure does not place
 // any limitations on the characters present in the header names.
 TEST(SpdyHeaderBlockTest, UpperCaseNames) {