1 // Copyright (c) 2018 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef QUICHE_QUIC_TEST_TOOLS_QPACK_QPACK_TEST_UTILS_H_ 6 #define QUICHE_QUIC_TEST_TOOLS_QPACK_QPACK_TEST_UTILS_H_ 7 8 #include <cstddef> 9 #include <functional> 10 11 #include "absl/strings/string_view.h" 12 #include "quiche/quic/core/qpack/qpack_stream_sender_delegate.h" 13 #include "quiche/quic/platform/api/quic_test.h" 14 15 namespace quic { 16 namespace test { 17 18 // Called repeatedly to determine the size of each fragment when encoding or 19 // decoding. Must return a positive value. 20 using FragmentSizeGenerator = std::function<size_t()>; 21 22 enum class FragmentMode { 23 kSingleChunk, 24 kOctetByOctet, 25 }; 26 27 FragmentSizeGenerator FragmentModeToFragmentSizeGenerator( 28 FragmentMode fragment_mode); 29 30 // Mock QpackUnidirectionalStreamSenderDelegate implementation. 31 class MockQpackStreamSenderDelegate : public QpackStreamSenderDelegate { 32 public: 33 ~MockQpackStreamSenderDelegate() override = default; 34 35 MOCK_METHOD(void, WriteStreamData, (absl::string_view data), (override)); 36 MOCK_METHOD(uint64_t, NumBytesBuffered, (), (const, override)); 37 }; 38 39 class NoopQpackStreamSenderDelegate : public QpackStreamSenderDelegate { 40 public: 41 ~NoopQpackStreamSenderDelegate() override = default; 42 WriteStreamData(absl::string_view)43 void WriteStreamData(absl::string_view /*data*/) override {} 44 NumBytesBuffered()45 uint64_t NumBytesBuffered() const override { return 0; } 46 }; 47 48 } // namespace test 49 } // namespace quic 50 51 #endif // QUICHE_QUIC_TEST_TOOLS_QPACK_QPACK_TEST_UTILS_H_ 52