Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/google/googletest.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAbseil Team <absl-team@google.com>2021-11-08 21:12:33 +0300
committerdinord <dino.radakovich@gmail.com>2021-11-09 18:24:05 +0300
commitc3792825bfb11490a61caa088692be95944c1faf (patch)
tree76b33fb4149cf739c1c6557607030e8af7456642
parentd4e084a1cc1b9d86f34b410bc43d1a5b6739427d (diff)
Googletest export
Add printer for std::type_info. PiperOrigin-RevId: 408375407
-rw-r--r--googletest/include/gtest/gtest-printers.h6
-rw-r--r--googletest/test/googletest-printers-test.cc10
2 files changed, 16 insertions, 0 deletions
diff --git a/googletest/include/gtest/gtest-printers.h b/googletest/include/gtest/gtest-printers.h
index a28843d1..e07b537d 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 eb78eabc..0058917a 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.