From a57f9645b2ebf7f85285494318a3135a140521a4 Mon Sep 17 00:00:00 2001 From: Nana Sakisaka <1901813+saki7@users.noreply.github.com> Date: Sun, 13 Sep 2026 18:15:01 +0900 Subject: [PATCH] Add test utilities for Catch2 --- include/iris/test/catch2.hpp | 73 +++++++++++++++++++++++++++++++++ include/iris/unicode/string.hpp | 40 +++++++++--------- test/iris_test.hpp | 16 +------- 3 files changed, 94 insertions(+), 35 deletions(-) create mode 100644 include/iris/test/catch2.hpp diff --git a/include/iris/test/catch2.hpp b/include/iris/test/catch2.hpp new file mode 100644 index 0000000..b84ac6f --- /dev/null +++ b/include/iris/test/catch2.hpp @@ -0,0 +1,73 @@ +#ifndef IRIS_ZZ_TEST_CATCH2_HPP +#define IRIS_ZZ_TEST_CATCH2_HPP + +// SPDX-License-Identifier: MIT + +#include // IWYU pragma: keep + +#include +#include + +#include // IWYU pragma: export +#include + +#include +#include +#include +#include +#include +#include + +#include // IWYU pragma: keep + +template T> + requires (!std::ranges::range) +struct Catch::StringMaker +{ + static std::string convert(T const& value) + { + return std::format("{}", value); + } +}; + +template + requires (!std::same_as && !std::same_as) +struct Catch::StringMaker +{ + static std::string convert(CharT const (&str)[N]) + { + return iris::to_string_ref(str); + } +}; + +template + requires (!std::same_as && !std::same_as) +struct Catch::StringMaker +{ + static std::string convert(CharT const* str) + { + return iris::to_string_ref(str); + } +}; + +template + requires (!std::same_as && !std::same_as) +struct Catch::StringMaker, std::enable_if_t>::value && !::Catch::Detail::IsStreamInsertable_v>>> +{ + static std::string convert(std::basic_string const& str) + { + return iris::to_string_ref(str); + } +}; + +template + requires (!std::same_as && !std::same_as) +struct Catch::StringMaker, std::enable_if_t>::value && !::Catch::Detail::IsStreamInsertable_v>>> +{ + static std::string convert(std::basic_string_view const& str) + { + return iris::to_string_ref(str); + } +}; + +#endif diff --git a/include/iris/unicode/string.hpp b/include/iris/unicode/string.hpp index 12e2cbf..62d738c 100644 --- a/include/iris/unicode/string.hpp +++ b/include/iris/unicode/string.hpp @@ -1416,22 +1416,22 @@ template requires std::same_as constexpr std::u8string_view transcode_ref(std::u8string const&&) = delete; -//template -// requires (!std::same_as) -//[[nodiscard]] constexpr std::basic_string transcode_ref(std::u16string_view str) -//{ -// return unicode::transcode(str); -//} +template + requires (!std::same_as) +[[nodiscard]] constexpr std::basic_string transcode_ref(std::u16string_view str) +{ + return unicode::transcode(str); +} -//template -// requires std::same_as -//[[nodiscard]] constexpr std::u16string_view transcode_ref(std::u16string_view str) -//{ -// return str; -//} -//template -// requires std::same_as -//constexpr std::u16string_view transcode_ref(std::u16string const&&) = delete; +template + requires std::same_as +[[nodiscard]] constexpr std::u16string_view transcode_ref(std::u16string_view str) +{ + return str; +} +template + requires std::same_as +constexpr std::u16string_view transcode_ref(std::u16string const&&) = delete; template requires (!std::same_as) @@ -1486,11 +1486,11 @@ template // ------------------------------------------------------- -//template -//[[nodiscard]] constexpr std::string to_string_ref(std::u16string_view str) -//{ -// return unicode::transcode(str); -//} +template +[[nodiscard]] constexpr std::string to_string_ref(std::u16string_view str) +{ + return unicode::transcode(str); +} // ------------------------------------------------------- diff --git a/test/iris_test.hpp b/test/iris_test.hpp index 8b465f5..42d5ac0 100644 --- a/test/iris_test.hpp +++ b/test/iris_test.hpp @@ -5,20 +5,6 @@ #include // IWYU pragma: keep -#include // IWYU pragma: export -#include - -#include -#include - -template T> - requires (!std::ranges::range) -struct Catch::StringMaker -{ - static std::string convert(T const& value) - { - return std::format("{}", value); - } -}; +#include #endif