| // Copyright 2021 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "quiche/common/print_elements.h" |
| |
| #include <list> |
| #include <string> |
| #include <vector> |
| |
| #include "absl/strings/string_view.h" |
| #include "quiche/quic/core/quic_error_codes.h" |
| #include "quiche/common/platform/api/quiche_test.h" |
| |
| using quic::QuicIetfTransportErrorCodes; |
| |
| namespace quiche { |
| namespace test { |
| namespace { |
| |
| TEST(PrintElementsTest, Empty) { |
| std::vector<std::string> empty{}; |
| EXPECT_EQ("{}", PrintElements(empty)); |
| } |
| |
| TEST(PrintElementsTest, StdContainers) { |
| std::vector<std::string> one{"foo"}; |
| EXPECT_EQ("{foo}", PrintElements(one)); |
| |
| std::list<std::string> two{"foo", "bar"}; |
| EXPECT_EQ("{foo, bar}", PrintElements(two)); |
| |
| std::deque<absl::string_view> three{"foo", "bar", "baz"}; |
| EXPECT_EQ("{foo, bar, baz}", PrintElements(three)); |
| } |
| |
| // QuicIetfTransportErrorCodes has a custom operator<<() override. |
| TEST(PrintElementsTest, CustomPrinter) { |
| std::vector<QuicIetfTransportErrorCodes> empty{}; |
| EXPECT_EQ("{}", PrintElements(empty)); |
| |
| std::list<QuicIetfTransportErrorCodes> one{ |
| QuicIetfTransportErrorCodes::NO_IETF_QUIC_ERROR}; |
| EXPECT_EQ("{NO_IETF_QUIC_ERROR}", PrintElements(one)); |
| |
| std::vector<QuicIetfTransportErrorCodes> two{ |
| QuicIetfTransportErrorCodes::FLOW_CONTROL_ERROR, |
| QuicIetfTransportErrorCodes::STREAM_LIMIT_ERROR}; |
| EXPECT_EQ("{FLOW_CONTROL_ERROR, STREAM_LIMIT_ERROR}", PrintElements(two)); |
| |
| std::list<QuicIetfTransportErrorCodes> three{ |
| QuicIetfTransportErrorCodes::CONNECTION_ID_LIMIT_ERROR, |
| QuicIetfTransportErrorCodes::PROTOCOL_VIOLATION, |
| QuicIetfTransportErrorCodes::INVALID_TOKEN}; |
| EXPECT_EQ("{CONNECTION_ID_LIMIT_ERROR, PROTOCOL_VIOLATION, INVALID_TOKEN}", |
| PrintElements(three)); |
| } |
| |
| } // anonymous namespace |
| } // namespace test |
| } // namespace quiche |