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