Index: net/http2/hpack/decoder/hpack_string_decoder_test.cc |
diff --git a/net/http2/hpack/decoder/hpack_string_decoder_test.cc b/net/http2/hpack/decoder/hpack_string_decoder_test.cc |
deleted file mode 100644 |
index e4afc61e4e74bb3a02c34877e6cd534e435a5c85..0000000000000000000000000000000000000000 |
--- a/net/http2/hpack/decoder/hpack_string_decoder_test.cc |
+++ /dev/null |
@@ -1,194 +0,0 @@ |
-// Copyright 2016 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "net/http2/hpack/decoder/hpack_string_decoder.h" |
- |
-// Tests of HpackStringDecoder. |
- |
-#include "base/bind.h" |
-#include "base/bind_helpers.h" |
-#include "base/strings/string_piece.h" |
-#include "net/http2/hpack/decoder/hpack_string_collector.h" |
-#include "net/http2/hpack/decoder/hpack_string_decoder_listener.h" |
-#include "net/http2/hpack/tools/hpack_block_builder.h" |
-#include "net/http2/tools/failure.h" |
-#include "net/http2/tools/http2_random.h" |
-#include "net/http2/tools/random_decoder_test.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
- |
-using ::testing::AssertionResult; |
-using ::testing::AssertionSuccess; |
-using base::StringPiece; |
-using std::string; |
- |
-namespace net { |
-namespace test { |
-namespace { |
- |
-const bool kMayReturnZeroOnFirst = false; |
-const bool kCompressed = true; |
-const bool kUncompressed = false; |
- |
-enum StartMethod { |
- kStart, |
- kStartOnly, |
- kStartAndDecodeLength, |
- kStartSpecialCaseShort, |
-}; |
- |
-class HpackStringDecoderTest |
- : public RandomDecoderTest, |
- public ::testing::WithParamInterface<StartMethod> { |
- protected: |
- HpackStringDecoderTest() |
- : start_method_(GetParam()), listener_(&collector_) {} |
- |
- DecodeStatus StartDecoding(DecodeBuffer* b) override { |
- ++start_decoding_calls_; |
- collector_.Clear(); |
- switch (start_method_) { |
- case kStart: |
- return decoder_.Start(b, &listener_); |
- case kStartOnly: |
- return decoder_.StartOnly(b, &listener_); |
- case kStartAndDecodeLength: |
- return decoder_.StartAndDecodeLength(b, &listener_); |
- case kStartSpecialCaseShort: |
- return decoder_.StartSpecialCaseShort(b, &listener_); |
- default: |
- return DecodeStatus::kDecodeError; |
- } |
- } |
- |
- DecodeStatus ResumeDecoding(DecodeBuffer* b) override { |
- // Provides coverage of DebugString and StateToString. |
- // Not validating output. |
- VLOG(1) << decoder_.DebugString(); |
- VLOG(2) << collector_; |
- return decoder_.Resume(b, &listener_); |
- } |
- |
- AssertionResult Collected(StringPiece s, bool huffman_encoded) { |
- VLOG(1) << collector_; |
- return collector_.Collected(s, huffman_encoded); |
- } |
- |
- // Note that base::Bind() makes a copy of |expected_str| even though it is |
- // taken as a constant reference, so even if MakeValidator is called with a |
- // C-style string that is cast to a temporary std::string that gets destroyed |
- // after the call to MakeValidator, |expected_str| is still valid later when |
- // the Validator is run. |
- AssertionResult StringValidator(const string& expected_str, |
- bool expected_huffman, |
- const DecodeBuffer& input, |
- DecodeStatus status) { |
- AssertionResult result = Collected(expected_str, expected_huffman); |
- if (result) { |
- VERIFY_EQ(collector_, |
- HpackStringCollector(expected_str, expected_huffman)); |
- } else { |
- VERIFY_NE(collector_, |
- HpackStringCollector(expected_str, expected_huffman)); |
- } |
- VLOG(2) << collector_.ToString(); |
- collector_.Clear(); |
- VLOG(2) << collector_; |
- return result; |
- } |
- |
- Validator MakeValidator(const string& expected_str, bool expected_huffman) { |
- return base::Bind(&HpackStringDecoderTest::StringValidator, |
- base::Unretained(this), expected_str, expected_huffman); |
- } |
- |
- const StartMethod start_method_; |
- HpackStringDecoder decoder_; |
- HpackStringCollector collector_; |
- HpackStringDecoderVLoggingListener listener_; |
- size_t start_decoding_calls_ = 0; |
-}; |
- |
-TEST_P(HpackStringDecoderTest, DecodeEmptyString) { |
- { |
- Validator validator = ValidateDoneAndEmpty(MakeValidator("", kCompressed)); |
- const char kData[] = {0x80u}; |
- DecodeBuffer b(kData); |
- EXPECT_TRUE( |
- DecodeAndValidateSeveralWays(&b, kMayReturnZeroOnFirst, validator)); |
- } |
- { |
- // Make sure it stops after decoding the empty string. |
- Validator validator = |
- ValidateDoneAndOffset(1, MakeValidator("", kUncompressed)); |
- const char kData[] = {0x00, 0xffu}; |
- DecodeBuffer b(kData); |
- EXPECT_EQ(2u, b.Remaining()); |
- EXPECT_TRUE( |
- DecodeAndValidateSeveralWays(&b, kMayReturnZeroOnFirst, validator)); |
- EXPECT_EQ(1u, b.Remaining()); |
- } |
-} |
- |
-TEST_P(HpackStringDecoderTest, DecodeShortString) { |
- { |
- // Make sure it stops after decoding the non-empty string. |
- Validator validator = |
- ValidateDoneAndOffset(11, MakeValidator("start end.", kCompressed)); |
- const char kData[] = "\x8astart end.Don't peek at this."; |
- DecodeBuffer b(kData); |
- EXPECT_TRUE( |
- DecodeAndValidateSeveralWays(&b, kMayReturnZeroOnFirst, validator)); |
- } |
- { |
- Validator validator = |
- ValidateDoneAndOffset(11, MakeValidator("start end.", kUncompressed)); |
- StringPiece data("\x0astart end."); |
- DecodeBuffer b(data); |
- EXPECT_TRUE( |
- DecodeAndValidateSeveralWays(&b, kMayReturnZeroOnFirst, validator)); |
- } |
-} |
- |
-TEST_P(HpackStringDecoderTest, DecodeLongStrings) { |
- string name = Random().RandString(1024); |
- string value = Random().RandString(65536); |
- HpackBlockBuilder hbb; |
- |
- hbb.AppendString(false, name); |
- uint32_t offset_after_name = hbb.size(); |
- EXPECT_EQ(3 + name.size(), offset_after_name); |
- |
- hbb.AppendString(true, value); |
- uint32_t offset_after_value = hbb.size(); |
- EXPECT_EQ(3 + name.size() + 4 + value.size(), offset_after_value); |
- |
- DecodeBuffer b(hbb.buffer()); |
- |
- // Decode the name... |
- EXPECT_TRUE(DecodeAndValidateSeveralWays( |
- &b, kMayReturnZeroOnFirst, |
- ValidateDoneAndOffset(offset_after_name, |
- MakeValidator(name, kUncompressed)))); |
- EXPECT_EQ(offset_after_name, b.Offset()); |
- EXPECT_EQ(offset_after_value - offset_after_name, b.Remaining()); |
- |
- // Decode the value... |
- EXPECT_TRUE(DecodeAndValidateSeveralWays( |
- &b, kMayReturnZeroOnFirst, |
- ValidateDoneAndOffset(offset_after_value - offset_after_name, |
- MakeValidator(value, kCompressed)))); |
- EXPECT_EQ(offset_after_value, b.Offset()); |
- EXPECT_EQ(0u, b.Remaining()); |
-} |
- |
-INSTANTIATE_TEST_CASE_P(AllStartMethods, |
- HpackStringDecoderTest, |
- ::testing::Values(kStart, |
- kStartOnly, |
- kStartAndDecodeLength, |
- kStartSpecialCaseShort)); |
- |
-} // namespace |
-} // namespace test |
-} // namespace net |