xref: /aosp_15_r20/external/cronet/net/third_party/quiche/src/quiche/quic/core/qpack/qpack_static_table_test.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
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 #include "quiche/quic/core/qpack/qpack_static_table.h"
6 
7 #include <set>
8 
9 #include "absl/base/macros.h"
10 #include "absl/strings/string_view.h"
11 #include "quiche/quic/platform/api/quic_test.h"
12 
13 namespace quic {
14 
15 namespace test {
16 
17 namespace {
18 
19 // Check that an initialized instance has the right number of entries.
TEST(QpackStaticTableTest,Initialize)20 TEST(QpackStaticTableTest, Initialize) {
21   QpackStaticTable table;
22   EXPECT_FALSE(table.IsInitialized());
23 
24   table.Initialize(QpackStaticTableVector().data(),
25                    QpackStaticTableVector().size());
26   EXPECT_TRUE(table.IsInitialized());
27 
28   const auto& static_entries = table.GetStaticEntries();
29   EXPECT_EQ(QpackStaticTableVector().size(), static_entries.size());
30 
31   const auto& static_index = table.GetStaticIndex();
32   EXPECT_EQ(QpackStaticTableVector().size(), static_index.size());
33 
34   const auto& static_name_index = table.GetStaticNameIndex();
35   // Count distinct names in static table.
36   std::set<absl::string_view> names;
37   for (const auto& entry : static_entries) {
38     names.insert(entry.name());
39   }
40   EXPECT_EQ(names.size(), static_name_index.size());
41 }
42 
43 // Test that ObtainQpackStaticTable returns the same instance every time.
TEST(QpackStaticTableTest,IsSingleton)44 TEST(QpackStaticTableTest, IsSingleton) {
45   const QpackStaticTable* static_table_one = &ObtainQpackStaticTable();
46   const QpackStaticTable* static_table_two = &ObtainQpackStaticTable();
47   EXPECT_EQ(static_table_one, static_table_two);
48 }
49 
50 }  // namespace
51 
52 }  // namespace test
53 
54 }  // namespace quic
55