Chromium Code Reviews| Index: net/spdy/spdy_protocol_test.cc |
| =================================================================== |
| --- net/spdy/spdy_protocol_test.cc (revision 131881) |
| +++ net/spdy/spdy_protocol_test.cc (working copy) |
| @@ -215,7 +215,7 @@ |
| SpdyFramer framer(spdy_version_); |
| // Create a settings frame with no settings. |
| - SpdySettings settings; |
| + SettingsMap settings; |
| scoped_ptr<SpdySettingsControlFrame> settings_frame( |
| framer.CreateSettings(settings)); |
| EXPECT_EQ(framer.protocol_version(), settings_frame->version()); |
| @@ -225,34 +225,65 @@ |
| // We'll add several different ID/Flag combinations and then verify |
| // that they encode and decode properly. |
| - SettingsFlagsAndId ids[] = { |
| + SettingsFlagsAndId spdy2_ids[] = { |
| + // id = 0, flags = 0. |
| SettingsFlagsAndId::FromWireFormat(spdy_version_, 0x00000000), |
| + // id = 1, flags = 0xff. |
| + SettingsFlagsAndId::FromWireFormat(spdy_version_, 0xff000001), |
| + // id = 2, flags = 1. |
| + SettingsFlagsAndId::FromWireFormat(spdy_version_, 0x01000002), |
| + // id = 9, flags = 6. |
| + SettingsFlagsAndId(6, 9), |
| + // id = 0x00ffffff, flags = 0xff. |
| SettingsFlagsAndId::FromWireFormat(spdy_version_, 0xffffffff), |
| + }; |
| + |
| + SettingsFlagsAndId spdy3_ids[] = { |
| + // id = 0, flags = 0. |
| + SettingsFlagsAndId::FromWireFormat(spdy_version_, 0x00000000), |
| + // id = 1, flags = 2. |
| + SettingsFlagsAndId::FromWireFormat(spdy_version_, 0x01000002), |
| + // id = 9, flags = 6. |
| + SettingsFlagsAndId(6, 9), |
| + // id = 0xff, flags = 1. |
| SettingsFlagsAndId::FromWireFormat(spdy_version_, 0xff000001), |
| + // id = 0x00ffffff, flags = 0xff. |
| SettingsFlagsAndId::FromWireFormat(spdy_version_, 0xffffffff), |
| - SettingsFlagsAndId::FromWireFormat(spdy_version_, 0x01000002), |
| - SettingsFlagsAndId(3, 1) |
| }; |
|
Ryan Hamilton
2012/04/12 17:11:21
How come the spdy2 and spdy3 settings are separate
ramant (doing other things)
2012/04/12 18:35:59
In the map, settings are stored in sorted order ba
Ryan Hamilton
2012/04/17 02:32:49
Perhaps I'm missing something, but it looks like b
ramant (doing other things)
2012/04/17 18:48:19
(sorry if already known)
We get data out of "ids"
|
| - for (size_t index = 0; index < arraysize(ids); ++index) { |
| - settings.insert(settings.end(), std::make_pair(ids[index], index)); |
| + SettingsFlagsAndId* ids; |
| + size_t settings_size; |
| + if (IsSpdy2()) { |
| + ids = &spdy2_ids[0]; |
| + settings_size = arraysize(spdy2_ids); |
| + } else { |
| + ids = &spdy3_ids[0]; |
| + settings_size = arraysize(spdy3_ids); |
| + } |
| + |
| + for (size_t index = 0; index < settings_size; ++index) { |
| + SettingsFlagsAndId flags_and_id = ids[index]; |
| + SpdySettingsIds id = static_cast<SpdySettingsIds>(flags_and_id.id()); |
| + SpdySettingsFlags flags = |
| + static_cast<SpdySettingsFlags>(flags_and_id.flags()); |
| + settings[id] = SettingsFlagsAndValue(flags, index); |
| settings_frame.reset(framer.CreateSettings(settings)); |
| EXPECT_EQ(framer.protocol_version(), settings_frame->version()); |
| EXPECT_TRUE(settings_frame->is_control_frame()); |
| EXPECT_EQ(SETTINGS, settings_frame->type()); |
| EXPECT_EQ(index + 1, settings_frame->num_entries()); |
| - SpdySettings parsed_settings; |
| + SettingsMap parsed_settings; |
| EXPECT_TRUE(framer.ParseSettings(settings_frame.get(), &parsed_settings)); |
| EXPECT_EQ(settings.size(), parsed_settings.size()); |
| - SpdySettings::const_iterator it = parsed_settings.begin(); |
| + SettingsMap::const_iterator it = parsed_settings.begin(); |
| int pos = 0; |
| while (it != parsed_settings.end()) { |
| - SettingsFlagsAndId parsed = it->first; |
| - uint32 value = it->second; |
| - EXPECT_EQ(ids[pos].flags(), parsed.flags()); |
| - EXPECT_EQ(ids[pos].id(), parsed.id()); |
| - EXPECT_EQ(static_cast<uint32>(pos), value); |
| + SpdySettingsIds parsed_id = it->first; |
| + SettingsFlagsAndValue parsed = it->second; |
| + EXPECT_EQ(ids[pos].flags(), static_cast<uint8>(parsed.first)); |
| + EXPECT_EQ(ids[pos].id(), static_cast<uint32>(parsed_id)); |
| + EXPECT_EQ(static_cast<uint32>(pos), parsed.second); |
| ++it; |
| ++pos; |
| } |