diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/test-helper.cpp | 25 | ||||
-rw-r--r-- | src/test-helper.h | 6 |
2 files changed, 31 insertions, 0 deletions
diff --git a/src/test-helper.cpp b/src/test-helper.cpp index d441895..d591916 100644 --- a/src/test-helper.cpp +++ b/src/test-helper.cpp @@ -5,6 +5,8 @@ #include <codecvt> #include <deque> #include <exception> +#include <iostream> +#include <iomanip> #include <limits> #include <list> #include <locale> @@ -50,6 +52,29 @@ namespace std { return os; } +#ifdef __cpp_char8_t + std::ostream& operator<<(std::ostream& os, utf8_t const& c) + { + os << "\\x" << std::setfill('0') << std::setw(2) << std::right << std::hex << static_cast<uint8_t>(c); + + return os; + } +#endif + + std::ostream& operator<<(std::ostream& os, char16_t const& c) + { + os << "\\u" << std::setfill('0') << std::setw(4) << std::right << std::hex << static_cast<uint16_t>(c); + + return os; + } + + std::ostream& operator<<(std::ostream& os, char32_t const& c) + { + os << "\\U" << std::setfill('0') << std::setw(8) << std::right << std::hex << static_cast<uint32_t>(c); + + return os; + } + } // namespace std namespace { diff --git a/src/test-helper.h b/src/test-helper.h index c3e2900..676af73 100644 --- a/src/test-helper.h +++ b/src/test-helper.h @@ -14,6 +14,12 @@ namespace std { std::ostream& operator<<(std::ostream& os, std::basic_string<char16_t> const& s); std::ostream& operator<<(std::ostream& os, std::basic_string<char32_t> const& s); +#ifdef __cpp_char8_t + std::ostream& operator<<(std::ostream& os, utf8_t const& c); +#endif + std::ostream& operator<<(std::ostream& os, char16_t const& c); + std::ostream& operator<<(std::ostream& os, char32_t const& c); + } // namespace std template<typename From, typename To> |