• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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