| #include "quiche/http2/test_tools/hpack_example.h" | |
| // Tests of HpackExampleToStringOrDie. | |
| #include "quiche/common/platform/api/quiche_test.h" | |
| namespace http2 { | |
| namespace test { | |
| namespace { | |
| TEST(HpackExampleToStringOrDie, GoodInput) { | |
| std::string bytes = HpackExampleToStringOrDie(R"( | |
| 40 | == Literal never indexed == | |
| | Blank lines are OK in example: | |
| 08 | Literal name (len = 8) | |
| 7061 7373 776f 7264 | password | |
| 06 | Literal value (len = 6) | |
| 7365 6372 6574 | secret | |
| | -> password: secret | |
| )"); | |
| // clang-format off | |
| const char kExpected[] = { | |
| 0x40, // Never Indexed, Literal Name and Value | |
| 0x08, // Name Len: 8 | |
| 0x70, 0x61, 0x73, 0x73, // Name: password | |
| 0x77, 0x6f, 0x72, 0x64, // | |
| 0x06, // Value Len: 6 | |
| 0x73, 0x65, 0x63, 0x72, // Value: secret | |
| 0x65, 0x74, // | |
| }; | |
| // clang-format on | |
| EXPECT_EQ(absl::string_view(kExpected, sizeof kExpected), bytes); | |
| } | |
| TEST(HpackExampleToStringOrDie, InvalidInput) { | |
| EXPECT_DEATH(HpackExampleToStringOrDie("4"), "Truncated"); | |
| EXPECT_DEATH(HpackExampleToStringOrDie("4x"), "half"); | |
| EXPECT_DEATH(HpackExampleToStringOrDie(""), "empty"); | |
| } | |
| } // namespace | |
| } // namespace test | |
| } // namespace http2 |