diff options
author | dmauro <dmauro@google.com> | 2020-06-12 11:56:15 -0400 |
---|---|---|
committer | vslashg <gfalcon@google.com> | 2020-06-12 18:24:28 -0400 |
commit | 8567b09290fe402cf01923e2131c5635b8ed851b (patch) | |
tree | 39ff9319f92811442999d6fb74805ed67780b570 | |
parent | 13a433a94dd9c7e55907d7a9b75f44ff82f309eb (diff) | |
download | googletest-8567b09290fe402cf01923e2131c5635b8ed851b.tar.gz googletest-8567b09290fe402cf01923e2131c5635b8ed851b.zip |
Googletest export
Adds support for printing pointers of types char8_t, char16_t, and char32_t.
PiperOrigin-RevId: 316112767
-rw-r--r-- | googletest/include/gtest/gtest-printers.h | 20 | ||||
-rw-r--r-- | googletest/test/googletest-printers-test.cc | 50 |
2 files changed, 70 insertions, 0 deletions
diff --git a/googletest/include/gtest/gtest-printers.h b/googletest/include/gtest/gtest-printers.h index c74894b0..f24512a9 100644 --- a/googletest/include/gtest/gtest-printers.h +++ b/googletest/include/gtest/gtest-printers.h @@ -499,6 +499,26 @@ inline void PrintTo(const unsigned char* s, ::std::ostream* os) { inline void PrintTo(unsigned char* s, ::std::ostream* os) { PrintTo(ImplicitCast_<const void*>(s), os); } +#ifdef __cpp_char8_t +inline void PrintTo(const char8_t* s, ::std::ostream* os) { + PrintTo(ImplicitCast_<const void*>(s), os); +} +inline void PrintTo(char8_t* s, ::std::ostream* os) { + PrintTo(ImplicitCast_<const void*>(s), os); +} +#endif +inline void PrintTo(const char16_t* s, ::std::ostream* os) { + PrintTo(ImplicitCast_<const void*>(s), os); +} +inline void PrintTo(char16_t* s, ::std::ostream* os) { + PrintTo(ImplicitCast_<const void*>(s), os); +} +inline void PrintTo(const char32_t* s, ::std::ostream* os) { + PrintTo(ImplicitCast_<const void*>(s), os); +} +inline void PrintTo(char32_t* s, ::std::ostream* os) { + PrintTo(ImplicitCast_<const void*>(s), os); +} // MSVC can be configured to define wchar_t as a typedef of unsigned // short. It defines _NATIVE_WCHAR_T_DEFINED when wchar_t is a native diff --git a/googletest/test/googletest-printers-test.cc b/googletest/test/googletest-printers-test.cc index b0c52ef5..ba2befb8 100644 --- a/googletest/test/googletest-printers-test.cc +++ b/googletest/test/googletest-printers-test.cc @@ -513,6 +513,56 @@ TEST(PrintCharPointerTest, ConstUnsignedChar) { EXPECT_EQ("NULL", Print(p)); } +#ifdef __cpp_char8_t +// char8_t* +TEST(PrintCharPointerTest, Char8) { + char8_t* p = reinterpret_cast<char8_t*>(0x1234); + EXPECT_EQ(PrintPointer(p), Print(p)); + p = nullptr; + EXPECT_EQ("NULL", Print(p)); +} + +// const char8_t* +TEST(PrintCharPointerTest, ConstChar8) { + const char8_t* p = reinterpret_cast<const char8_t*>(0x1234); + EXPECT_EQ(PrintPointer(p), Print(p)); + p = nullptr; + EXPECT_EQ("NULL", Print(p)); +} +#endif + +// char16_t* +TEST(PrintCharPointerTest, Char16) { + char16_t* p = reinterpret_cast<char16_t*>(0x1234); + EXPECT_EQ(PrintPointer(p), Print(p)); + p = nullptr; + EXPECT_EQ("NULL", Print(p)); +} + +// const char16_t* +TEST(PrintCharPointerTest, ConstChar16) { + const char16_t* p = reinterpret_cast<const char16_t*>(0x1234); + EXPECT_EQ(PrintPointer(p), Print(p)); + p = nullptr; + EXPECT_EQ("NULL", Print(p)); +} + +// char32_t* +TEST(PrintCharPointerTest, Char32) { + char32_t* p = reinterpret_cast<char32_t*>(0x1234); + EXPECT_EQ(PrintPointer(p), Print(p)); + p = nullptr; + EXPECT_EQ("NULL", Print(p)); +} + +// const char32_t* +TEST(PrintCharPointerTest, ConstChar32) { + const char32_t* p = reinterpret_cast<const char32_t*>(0x1234); + EXPECT_EQ(PrintPointer(p), Print(p)); + p = nullptr; + EXPECT_EQ("NULL", Print(p)); +} + // Tests printing pointers to simple, built-in types. // bool*. |