diff options
Diffstat (limited to 'chromium/net/spdy/spdy_frame_builder_test.cc')
-rw-r--r-- | chromium/net/spdy/spdy_frame_builder_test.cc | 55 |
1 files changed, 36 insertions, 19 deletions
diff --git a/chromium/net/spdy/spdy_frame_builder_test.cc b/chromium/net/spdy/spdy_frame_builder_test.cc index 014449b2e57..73cad2419a4 100644 --- a/chromium/net/spdy/spdy_frame_builder_test.cc +++ b/chromium/net/spdy/spdy_frame_builder_test.cc @@ -10,19 +10,6 @@ namespace net { -TEST(SpdyFrameBuilderTestVersionAgnostic, GetWritableBuffer) { - const size_t builder_size = 10; - SpdyFrameBuilder builder(builder_size); - char* writable_buffer = builder.GetWritableBuffer(builder_size); - memset(writable_buffer, ~1, builder_size); - EXPECT_TRUE(builder.Seek(builder_size)); - scoped_ptr<SpdyFrame> frame(builder.take()); - char expected[builder_size]; - memset(expected, ~1, builder_size); - EXPECT_EQ(base::StringPiece(expected, builder_size), - base::StringPiece(frame->data(), builder_size)); -} - class SpdyFrameBuilderTest : public ::testing::TestWithParam<SpdyMajorVersion> { protected: virtual void SetUp() { @@ -38,20 +25,33 @@ INSTANTIATE_TEST_CASE_P(SpdyFrameBuilderTests, SpdyFrameBuilderTest, ::testing::Values(SPDY2, SPDY3, SPDY4)); +TEST_P(SpdyFrameBuilderTest, GetWritableBuffer) { + const size_t builder_size = 10; + SpdyFrameBuilder builder(builder_size, spdy_version_); + char* writable_buffer = builder.GetWritableBuffer(builder_size); + memset(writable_buffer, ~1, builder_size); + EXPECT_TRUE(builder.Seek(builder_size)); + scoped_ptr<SpdyFrame> frame(builder.take()); + char expected[builder_size]; + memset(expected, ~1, builder_size); + EXPECT_EQ(base::StringPiece(expected, builder_size), + base::StringPiece(frame->data(), builder_size)); +} + TEST_P(SpdyFrameBuilderTest, RewriteLength) { // Create an empty SETTINGS frame both via framer and manually via builder. // The one created via builder is initially given the incorrect length, but // then is corrected via RewriteLength(). SpdyFramer framer(spdy_version_); - SettingsMap settings; - scoped_ptr<SpdyFrame> expected(framer.CreateSettings(settings)); - SpdyFrameBuilder builder(expected->size() + 1); - if (spdy_version_ < 4) { + SpdySettingsIR settings_ir; + scoped_ptr<SpdyFrame> expected(framer.SerializeSettings(settings_ir)); + SpdyFrameBuilder builder(expected->size() + 1, spdy_version_); + if (spdy_version_ <= SPDY3) { builder.WriteControlFrameHeader(framer, SETTINGS, 0); + builder.WriteUInt32(0); // Write the number of settings. } else { - builder.WriteFramePrefix(framer, SETTINGS, 0, 0); + builder.BeginNewFrame(framer, SETTINGS, 0, 0); } - builder.WriteUInt32(0); // Write the number of settings. EXPECT_TRUE(builder.GetWritableBuffer(1) != NULL); builder.RewriteLength(framer); scoped_ptr<SpdyFrame> built(builder.take()); @@ -59,4 +59,21 @@ TEST_P(SpdyFrameBuilderTest, RewriteLength) { base::StringPiece(built->data(), expected->size())); } +TEST_P(SpdyFrameBuilderTest, OverwriteFlags) { + // Create a HEADERS frame both via framer and manually via builder with + // different flags set, then make them match using OverwriteFlags(). + SpdyFramer framer(spdy_version_); + if (spdy_version_ <= SPDY3) { + return; + } + SpdyHeadersIR headers_ir(1); + scoped_ptr<SpdyFrame> expected(framer.SerializeHeaders(headers_ir)); + SpdyFrameBuilder builder(expected->size(), spdy_version_); + builder.BeginNewFrame(framer, HEADERS, 0, 1); + builder.OverwriteFlags(framer, HEADERS_FLAG_END_HEADERS); + scoped_ptr<SpdyFrame> built(builder.take()); + EXPECT_EQ(base::StringPiece(expected->data(), expected->size()), + base::StringPiece(built->data(), built->size())); +} + } // namespace net |