#include "quiche/http2/hpack/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
