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

Unified Diff: net/spdy/spdy_header_block_test.cc

Issue 2125403003: Make sure moved-from SpdyHeaderBlock instances are valid. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 5 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/spdy/spdy_header_block.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/spdy/spdy_header_block_test.cc
diff --git a/net/spdy/spdy_header_block_test.cc b/net/spdy/spdy_header_block_test.cc
index b4273af5c77290bf00fa474eb87f321f4ee96c68..bfbd0c2fd4c540ea099f5d9f827dfe71c95899a4 100644
--- a/net/spdy/spdy_header_block_test.cc
+++ b/net/spdy/spdy_header_block_test.cc
@@ -76,24 +76,24 @@ TEST(SpdyHeaderBlockTest, KeyMemoryReclaimedOnLookup) {
// This test verifies that headers can be set in a variety of ways.
TEST(SpdyHeaderBlockTest, AddHeaders) {
- SpdyHeaderBlock block1;
- block1["foo"] = string(300, 'x');
- block1["bar"] = "baz";
- block1.ReplaceOrAppendHeader("qux", "qux1");
- block1["qux"] = "qux2";
- block1.insert(make_pair("key", "value"));
-
- EXPECT_EQ(Pair("foo", string(300, 'x')), *block1.find("foo"));
- EXPECT_EQ("baz", block1["bar"]);
- EXPECT_EQ("baz", block1.GetHeader("bar"));
+ SpdyHeaderBlock block;
+ block["foo"] = string(300, 'x');
+ block["bar"] = "baz";
+ block.ReplaceOrAppendHeader("qux", "qux1");
+ block["qux"] = "qux2";
+ block.insert(std::make_pair("key", "value"));
+
+ EXPECT_EQ(Pair("foo", string(300, 'x')), *block.find("foo"));
+ EXPECT_EQ("baz", block["bar"]);
+ EXPECT_EQ("baz", block.GetHeader("bar"));
string qux("qux");
- EXPECT_EQ("qux2", block1[qux]);
- EXPECT_EQ("qux2", block1.GetHeader(qux));
- EXPECT_EQ(Pair("key", "value"), *block1.find("key"));
+ EXPECT_EQ("qux2", block[qux]);
+ EXPECT_EQ("qux2", block.GetHeader(qux));
+ EXPECT_EQ(Pair("key", "value"), *block.find("key"));
- block1.erase("key");
- EXPECT_EQ(block1.end(), block1.find("key"));
- EXPECT_EQ("", block1.GetHeader("key"));
+ block.erase("key");
+ EXPECT_EQ(block.end(), block.find("key"));
+ EXPECT_EQ("", block.GetHeader("key"));
}
// This test verifies that SpdyHeaderBlock can be copied using Clone().
@@ -141,5 +141,28 @@ TEST(SpdyHeaderBlockTest, Equality) {
EXPECT_NE(block1, block2);
}
+// Test that certain methods do not crash on moved-from instances.
+TEST(SpdyHeaderBlockTest, MovedFromIsValid) {
+ SpdyHeaderBlock block1;
+ block1["foo"] = "bar";
+
+ SpdyHeaderBlock block2(std::move(block1));
+ EXPECT_THAT(block2, ElementsAre(Pair("foo", "bar")));
+
+ block1.ReplaceOrAppendHeader("baz", "qux");
+
+ SpdyHeaderBlock block3(std::move(block1));
+
+ block1["foo"] = "bar";
+
+ SpdyHeaderBlock block4(std::move(block1));
+
+ block1.clear();
+ EXPECT_TRUE(block1.empty());
+
+ block1["foo"] = "bar";
+ EXPECT_THAT(block1, ElementsAre(Pair("foo", "bar")));
+}
+
} // namespace test
} // namespace net
« no previous file with comments | « net/spdy/spdy_header_block.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698