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

Side by Side Diff: net/spdy/spdy_header_block_test.cc

Issue 2801603003: Add SpdyString alias for std::string in net/spdy. (Closed)
Patch Set: Created 3 years, 8 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 unified diff | Download patch
« no previous file with comments | « net/spdy/spdy_header_block.cc ('k') | net/spdy/spdy_header_indexing.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/spdy/spdy_header_block.h" 5 #include "net/spdy/spdy_header_block.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/values.h" 10 #include "base/values.h"
11 #include "net/log/net_log_capture_mode.h" 11 #include "net/log/net_log_capture_mode.h"
12 #include "net/spdy/spdy_test_utils.h" 12 #include "net/spdy/spdy_test_utils.h"
13 #include "testing/gmock/include/gmock/gmock.h" 13 #include "testing/gmock/include/gmock/gmock.h"
14 #include "testing/gtest/include/gtest/gtest.h" 14 #include "testing/gtest/include/gtest/gtest.h"
15 15
16 using std::string;
17 using ::testing::ElementsAre; 16 using ::testing::ElementsAre;
18 17
19 namespace net { 18 namespace net {
20 namespace test { 19 namespace test {
21 20
22 class ValueProxyPeer { 21 class ValueProxyPeer {
23 public: 22 public:
24 static SpdyStringPiece key(SpdyHeaderBlock::ValueProxy* p) { return p->key_; } 23 static SpdyStringPiece key(SpdyHeaderBlock::ValueProxy* p) { return p->key_; }
25 }; 24 };
26 25
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 // modify and access the SpdyHeaderBlock. 65 // modify and access the SpdyHeaderBlock.
67 block["key"] = "value"; 66 block["key"] = "value";
68 EXPECT_EQ("value", block["key"]); 67 EXPECT_EQ("value", block["key"]);
69 EXPECT_EQ("some value", block["some other key name"]); 68 EXPECT_EQ("some value", block["some other key name"]);
70 EXPECT_TRUE(block.find("some key name") == block.end()); 69 EXPECT_TRUE(block.find("some key name") == block.end());
71 } 70 }
72 71
73 // This test verifies that headers can be set in a variety of ways. 72 // This test verifies that headers can be set in a variety of ways.
74 TEST(SpdyHeaderBlockTest, AddHeaders) { 73 TEST(SpdyHeaderBlockTest, AddHeaders) {
75 SpdyHeaderBlock block; 74 SpdyHeaderBlock block;
76 block["foo"] = string(300, 'x'); 75 block["foo"] = SpdyString(300, 'x');
77 block["bar"] = "baz"; 76 block["bar"] = "baz";
78 block["qux"] = "qux1"; 77 block["qux"] = "qux1";
79 block["qux"] = "qux2"; 78 block["qux"] = "qux2";
80 block.insert(std::make_pair("key", "value")); 79 block.insert(std::make_pair("key", "value"));
81 80
82 EXPECT_EQ(Pair("foo", string(300, 'x')), *block.find("foo")); 81 EXPECT_EQ(Pair("foo", SpdyString(300, 'x')), *block.find("foo"));
83 EXPECT_EQ("baz", block["bar"]); 82 EXPECT_EQ("baz", block["bar"]);
84 string qux("qux"); 83 SpdyString qux("qux");
85 EXPECT_EQ("qux2", block[qux]); 84 EXPECT_EQ("qux2", block[qux]);
86 ASSERT_NE(block.end(), block.find("key")); 85 ASSERT_NE(block.end(), block.find("key"));
87 EXPECT_EQ(Pair("key", "value"), *block.find("key")); 86 EXPECT_EQ(Pair("key", "value"), *block.find("key"));
88 87
89 block.erase("key"); 88 block.erase("key");
90 EXPECT_EQ(block.end(), block.find("key")); 89 EXPECT_EQ(block.end(), block.find("key"));
91 } 90 }
92 91
93 // This test verifies that SpdyHeaderBlock can be copied using Clone(). 92 // This test verifies that SpdyHeaderBlock can be copied using Clone().
94 TEST(SpdyHeaderBlockTest, CopyBlocks) { 93 TEST(SpdyHeaderBlockTest, CopyBlocks) {
95 SpdyHeaderBlock block1; 94 SpdyHeaderBlock block1;
96 block1["foo"] = string(300, 'x'); 95 block1["foo"] = SpdyString(300, 'x');
97 block1["bar"] = "baz"; 96 block1["bar"] = "baz";
98 block1.insert(std::make_pair("qux", "qux1")); 97 block1.insert(std::make_pair("qux", "qux1"));
99 98
100 SpdyHeaderBlock block2 = block1.Clone(); 99 SpdyHeaderBlock block2 = block1.Clone();
101 SpdyHeaderBlock block3(block1.Clone()); 100 SpdyHeaderBlock block3(block1.Clone());
102 101
103 EXPECT_EQ(block1, block2); 102 EXPECT_EQ(block1, block2);
104 EXPECT_EQ(block1, block3); 103 EXPECT_EQ(block1, block3);
105 } 104 }
106 105
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
157 block1["foo"] = "bar"; 156 block1["foo"] = "bar";
158 EXPECT_THAT(block1, ElementsAre(Pair("foo", "bar"))); 157 EXPECT_THAT(block1, ElementsAre(Pair("foo", "bar")));
159 } 158 }
160 159
161 // This test verifies that headers can be appended to no matter how they were 160 // This test verifies that headers can be appended to no matter how they were
162 // added originally. 161 // added originally.
163 TEST(SpdyHeaderBlockTest, AppendHeaders) { 162 TEST(SpdyHeaderBlockTest, AppendHeaders) {
164 SpdyHeaderBlock block; 163 SpdyHeaderBlock block;
165 block["foo"] = "foo"; 164 block["foo"] = "foo";
166 block.AppendValueOrAddHeader("foo", "bar"); 165 block.AppendValueOrAddHeader("foo", "bar");
167 EXPECT_EQ(Pair("foo", string("foo\0bar", 7)), *block.find("foo")); 166 EXPECT_EQ(Pair("foo", SpdyString("foo\0bar", 7)), *block.find("foo"));
168 167
169 block.insert(std::make_pair("foo", "baz")); 168 block.insert(std::make_pair("foo", "baz"));
170 EXPECT_EQ("baz", block["foo"]); 169 EXPECT_EQ("baz", block["foo"]);
171 EXPECT_EQ(Pair("foo", "baz"), *block.find("foo")); 170 EXPECT_EQ(Pair("foo", "baz"), *block.find("foo"));
172 171
173 // Try all four methods of adding an entry. 172 // Try all four methods of adding an entry.
174 block["cookie"] = "key1=value1"; 173 block["cookie"] = "key1=value1";
175 block.AppendValueOrAddHeader("h1", "h1v1"); 174 block.AppendValueOrAddHeader("h1", "h1v1");
176 block.insert(std::make_pair("h2", "h2v1")); 175 block.insert(std::make_pair("h2", "h2v1"));
177 176
178 block.AppendValueOrAddHeader("h3", "h3v2"); 177 block.AppendValueOrAddHeader("h3", "h3v2");
179 block.AppendValueOrAddHeader("h2", "h2v2"); 178 block.AppendValueOrAddHeader("h2", "h2v2");
180 block.AppendValueOrAddHeader("h1", "h1v2"); 179 block.AppendValueOrAddHeader("h1", "h1v2");
181 block.AppendValueOrAddHeader("cookie", "key2=value2"); 180 block.AppendValueOrAddHeader("cookie", "key2=value2");
182 181
183 block.AppendValueOrAddHeader("cookie", "key3=value3"); 182 block.AppendValueOrAddHeader("cookie", "key3=value3");
184 block.AppendValueOrAddHeader("h1", "h1v3"); 183 block.AppendValueOrAddHeader("h1", "h1v3");
185 block.AppendValueOrAddHeader("h2", "h2v3"); 184 block.AppendValueOrAddHeader("h2", "h2v3");
186 block.AppendValueOrAddHeader("h3", "h3v3"); 185 block.AppendValueOrAddHeader("h3", "h3v3");
187 block.AppendValueOrAddHeader("h4", "singleton"); 186 block.AppendValueOrAddHeader("h4", "singleton");
188 187
189 EXPECT_EQ("key1=value1; key2=value2; key3=value3", block["cookie"]); 188 EXPECT_EQ("key1=value1; key2=value2; key3=value3", block["cookie"]);
190 EXPECT_EQ("baz", block["foo"]); 189 EXPECT_EQ("baz", block["foo"]);
191 EXPECT_EQ(string("h1v1\0h1v2\0h1v3", 14), block["h1"]); 190 EXPECT_EQ(SpdyString("h1v1\0h1v2\0h1v3", 14), block["h1"]);
192 EXPECT_EQ(string("h2v1\0h2v2\0h2v3", 14), block["h2"]); 191 EXPECT_EQ(SpdyString("h2v1\0h2v2\0h2v3", 14), block["h2"]);
193 EXPECT_EQ(string("h3v2\0h3v3", 9), block["h3"]); 192 EXPECT_EQ(SpdyString("h3v2\0h3v3", 9), block["h3"]);
194 EXPECT_EQ("singleton", block["h4"]); 193 EXPECT_EQ("singleton", block["h4"]);
195 } 194 }
196 195
197 TEST(JoinTest, JoinEmpty) { 196 TEST(JoinTest, JoinEmpty) {
198 std::vector<SpdyStringPiece> empty; 197 std::vector<SpdyStringPiece> empty;
199 SpdyStringPiece separator = ", "; 198 SpdyStringPiece separator = ", ";
200 char buf[10] = ""; 199 char buf[10] = "";
201 size_t written = Join(buf, empty, separator); 200 size_t written = Join(buf, empty, separator);
202 EXPECT_EQ(0u, written); 201 EXPECT_EQ(0u, written);
203 } 202 }
(...skipping 11 matching lines...) Expand all
215 std::vector<SpdyStringPiece> v = {"one", "two", "three"}; 214 std::vector<SpdyStringPiece> v = {"one", "two", "three"};
216 SpdyStringPiece separator = ", "; 215 SpdyStringPiece separator = ", ";
217 char buf[15]; 216 char buf[15];
218 size_t written = Join(buf, v, separator); 217 size_t written = Join(buf, v, separator);
219 EXPECT_EQ(15u, written); 218 EXPECT_EQ(15u, written);
220 EXPECT_EQ("one, two, three", SpdyStringPiece(buf, written)); 219 EXPECT_EQ("one, two, three", SpdyStringPiece(buf, written));
221 } 220 }
222 221
223 } // namespace test 222 } // namespace test
224 } // namespace net 223 } // namespace net
OLDNEW
« no previous file with comments | « net/spdy/spdy_header_block.cc ('k') | net/spdy/spdy_header_indexing.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698