diff options
author | Abseil Team <absl-team@google.com> | 2021-11-08 18:12:33 (GMT) |
---|---|---|
committer | dinord <dino.radakovich@gmail.com> | 2021-11-09 15:24:05 (GMT) |
commit | c3792825bfb11490a61caa088692be95944c1faf (patch) | |
tree | 76b33fb4149cf739c1c6557607030e8af7456642 | |
parent | d4e084a1cc1b9d86f34b410bc43d1a5b6739427d (diff) | |
download | googletest-c3792825bfb11490a61caa088692be95944c1faf.zip googletest-c3792825bfb11490a61caa088692be95944c1faf.tar.gz googletest-c3792825bfb11490a61caa088692be95944c1faf.tar.bz2 |
Googletest export
Add printer for std::type_info.
PiperOrigin-RevId: 408375407
-rw-r--r-- | googletest/include/gtest/gtest-printers.h | 6 | ||||
-rw-r--r-- | googletest/test/googletest-printers-test.cc | 10 |
2 files changed, 16 insertions, 0 deletions
diff --git a/googletest/include/gtest/gtest-printers.h b/googletest/include/gtest/gtest-printers.h index a28843d..e07b537 100644 --- a/googletest/include/gtest/gtest-printers.h +++ b/googletest/include/gtest/gtest-printers.h @@ -591,6 +591,12 @@ inline void PrintTo(internal::StringView sp, ::std::ostream* os) { inline void PrintTo(std::nullptr_t, ::std::ostream* os) { *os << "(nullptr)"; } +#if GTEST_HAS_RTTI +inline void PrintTo(const std::type_info& info, std::ostream* os) { + *os << internal::GetTypeName(info); +} +#endif // GTEST_HAS_RTTI + template <typename T> void PrintTo(std::reference_wrapper<T> ref, ::std::ostream* os) { UniversalPrinter<T&>::Print(ref.get(), os); diff --git a/googletest/test/googletest-printers-test.cc b/googletest/test/googletest-printers-test.cc index eb78eab..0058917 100644 --- a/googletest/test/googletest-printers-test.cc +++ b/googletest/test/googletest-printers-test.cc @@ -473,6 +473,16 @@ TEST(PrintBuiltInTypeTest, FloatingPoints) { EXPECT_EQ("-2.5", Print(-2.5)); // double } +#if GTEST_HAS_RTTI +TEST(PrintBuiltInTypeTest, TypeInfo) { + struct MyStruct {}; + auto res = Print(typeid(MyStruct{})); + // We can't guarantee that we can demangle the name, but either name should + // contain the substring "MyStruct". + EXPECT_NE(res.find("MyStruct"), res.npos) << res; +} +#endif // GTEST_HAS_RTTI + // Since ::std::stringstream::operator<<(const void *) formats the pointer // output differently with different compilers, we have to create the expected // output first and use it as our expectation. |