| // Copyright (c) 2020 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. | |
| #ifndef QUICHE_COMMON_TEST_TOOLS_QUICHE_TEST_UTILS_H_ | |
| #define QUICHE_COMMON_TEST_TOOLS_QUICHE_TEST_UTILS_H_ | |
| #include <string> | |
| #include "absl/base/macros.h" // IWYU pragma: keep for ABSL_REFACTOR_INLINE | |
| #include "absl/status/status_matchers.h" | |
| #include "absl/strings/string_view.h" | |
| #include "quiche/common/platform/api/quiche_iovec.h" // IWYU pragma: keep for iovec | |
| #include "quiche/common/platform/api/quiche_test.h" | |
| // This macro is newer than the Abseil release we use for open-source builds. | |
| // https://github.com/abseil/abseil-cpp/blob/lts_2025_08_14/absl/base/macros.h | |
| #ifndef ABSL_REFACTOR_INLINE | |
| #define ABSL_REFACTOR_INLINE | |
| #endif | |
| namespace quiche { | |
| namespace test { | |
| void CompareCharArraysWithHexError(const std::string& description, | |
| const char* actual, int actual_len, | |
| const char* expected, int expected_len); | |
| // Create iovec that points to that data that `str` points to. | |
| iovec MakeIOVector(absl::string_view str); | |
| // Due to binary size considerations, googleurl library can be built with or | |
| // without IDNA support, meaning that we have to adjust our tests accordingly. | |
| // This function checks if IDNAs are supported. | |
| bool GoogleUrlSupportsIdnaForTest(); | |
| [[deprecated( | |
| "Use absl_testing::IsOk directly.")]] ABSL_REFACTOR_INLINE inline auto | |
| IsOk() { | |
| return absl_testing::IsOk(); | |
| } | |
| template <typename InnerMatcherT> | |
| [[deprecated( | |
| "Use absl_testing::IsOkAndHolds " | |
| "directly.")]] ABSL_REFACTOR_INLINE inline auto | |
| IsOkAndHolds(InnerMatcherT&& matcher) { | |
| return absl_testing::IsOkAndHolds(matcher); | |
| } | |
| template <typename InnerMatcherT> | |
| [[deprecated( | |
| "Use absl_testing::StatusIs directly.")]] ABSL_REFACTOR_INLINE inline auto | |
| StatusIs(InnerMatcherT&& matcher) { | |
| return absl_testing::StatusIs(matcher); | |
| } | |
| template <typename MatcherT, typename MessageT> | |
| [[deprecated( | |
| "Use absl_testing::StatusIs directly.")]] ABSL_REFACTOR_INLINE inline auto | |
| StatusIs(MatcherT&& matcher, MessageT&& message) { | |
| return absl_testing::StatusIs(matcher, message); | |
| } | |
| // We can't deprecate these directly, since they're macros. | |
| #define QUICHE_EXPECT_OK(arg) EXPECT_THAT(arg, ::quiche::test::IsOk()) | |
| #define QUICHE_ASSERT_OK(arg) ASSERT_THAT(arg, ::quiche::test::IsOk()) | |
| } // namespace test | |
| } // namespace quiche | |
| #endif // QUICHE_COMMON_TEST_TOOLS_QUICHE_TEST_UTILS_H_ |