xref: /aosp_15_r20/external/cronet/net/third_party/quiche/src/quiche/quic/core/http/http_frames_test.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1 // Copyright (c) 2020 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/http/http_frames.h"
6 
7 #include <sstream>
8 
9 #include "quiche/quic/core/http/http_constants.h"
10 #include "quiche/quic/platform/api/quic_test.h"
11 
12 namespace quic {
13 namespace test {
14 
TEST(HttpFramesTest,SettingsFrame)15 TEST(HttpFramesTest, SettingsFrame) {
16   SettingsFrame a;
17   EXPECT_TRUE(a == a);
18   EXPECT_EQ("", a.ToString());
19 
20   SettingsFrame b;
21   b.values[SETTINGS_QPACK_MAX_TABLE_CAPACITY] = 1;
22   EXPECT_FALSE(a == b);
23   EXPECT_TRUE(b == b);
24 
25   a.values[SETTINGS_QPACK_MAX_TABLE_CAPACITY] = 2;
26   EXPECT_FALSE(a == b);
27   a.values[SETTINGS_QPACK_MAX_TABLE_CAPACITY] = 1;
28   EXPECT_TRUE(a == b);
29 
30   EXPECT_EQ("SETTINGS_QPACK_MAX_TABLE_CAPACITY = 1; ", b.ToString());
31   std::stringstream s;
32   s << b;
33   EXPECT_EQ("SETTINGS_QPACK_MAX_TABLE_CAPACITY = 1; ", s.str());
34 }
35 
TEST(HttpFramesTest,GoAwayFrame)36 TEST(HttpFramesTest, GoAwayFrame) {
37   GoAwayFrame a{1};
38   EXPECT_TRUE(a == a);
39 
40   GoAwayFrame b{2};
41   EXPECT_FALSE(a == b);
42 
43   b.id = 1;
44   EXPECT_TRUE(a == b);
45 }
46 
TEST(HttpFramesTest,PriorityUpdateFrame)47 TEST(HttpFramesTest, PriorityUpdateFrame) {
48   PriorityUpdateFrame a{0, ""};
49   EXPECT_TRUE(a == a);
50   PriorityUpdateFrame b{4, ""};
51   EXPECT_FALSE(a == b);
52   a.prioritized_element_id = 4;
53   EXPECT_TRUE(a == b);
54 
55   a.priority_field_value = "foo";
56   EXPECT_FALSE(a == b);
57 
58   EXPECT_EQ(
59       "Priority Frame : {prioritized_element_id: 4, priority_field_value: foo}",
60       a.ToString());
61   std::stringstream s;
62   s << a;
63   EXPECT_EQ(
64       "Priority Frame : {prioritized_element_id: 4, priority_field_value: foo}",
65       s.str());
66 }
67 
TEST(HttpFramesTest,AcceptChFrame)68 TEST(HttpFramesTest, AcceptChFrame) {
69   AcceptChFrame a;
70   EXPECT_TRUE(a == a);
71   EXPECT_EQ("ACCEPT_CH frame with 0 entries: ", a.ToString());
72 
73   AcceptChFrame b{{{"foo", "bar"}}};
74   EXPECT_FALSE(a == b);
75 
76   a.entries.push_back({"foo", "bar"});
77   EXPECT_TRUE(a == b);
78 
79   EXPECT_EQ("ACCEPT_CH frame with 1 entries: origin: foo; value: bar",
80             a.ToString());
81   std::stringstream s;
82   s << a;
83   EXPECT_EQ("ACCEPT_CH frame with 1 entries: origin: foo; value: bar", s.str());
84 }
85 
86 }  // namespace test
87 }  // namespace quic
88