diff options
author | Abseil Team <absl-team@google.com> | 2023-09-26 14:39:04 -0700 |
---|---|---|
committer | Copybara-Service <copybara-worker@google.com> | 2023-09-26 14:39:48 -0700 |
commit | cced061b3e68da386aaadca0d87e03538ce2bc72 (patch) | |
tree | e2084a66fd3ea9bf0d6c6c1b283bc41b725cf02a /absl/debugging/internal/demangle_test.cc | |
parent | ac364eb9d07ff4d8c7fb8d848b66398559220d04 (diff) | |
download | abseil-cced061b3e68da386aaadca0d87e03538ce2bc72.tar.gz abseil-cced061b3e68da386aaadca0d87e03538ce2bc72.tar.bz2 abseil-cced061b3e68da386aaadca0d87e03538ce2bc72.zip |
Add an internal wrapper for `abi::__cxa_demangle()`.
PiperOrigin-RevId: 568652465
Change-Id: I9f72a11cb514eaf694dae589a19dc139891e7af2
Diffstat (limited to 'absl/debugging/internal/demangle_test.cc')
-rw-r--r-- | absl/debugging/internal/demangle_test.cc | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/absl/debugging/internal/demangle_test.cc b/absl/debugging/internal/demangle_test.cc index faec72b5..26ed9cee 100644 --- a/absl/debugging/internal/demangle_test.cc +++ b/absl/debugging/internal/demangle_test.cc @@ -17,6 +17,7 @@ #include <cstdlib> #include <string> +#include "gmock/gmock.h" #include "gtest/gtest.h" #include "absl/base/config.h" #include "absl/debugging/internal/stack_consumption.h" @@ -28,6 +29,8 @@ ABSL_NAMESPACE_BEGIN namespace debugging_internal { namespace { +using ::testing::ContainsRegex; + // A wrapper function for Demangle() to make the unit test simple. static const char *DemangleIt(const char * const mangled) { static char demangled[4096]; @@ -237,6 +240,25 @@ TEST(DemangleRegression, DeeplyNestedArrayType) { TestOnInput(data.c_str()); } +struct Base { + virtual ~Base() = default; +}; + +struct Derived : public Base {}; + +TEST(DemangleStringTest, SupportsSymbolNameReturnedByTypeId) { + EXPECT_EQ(DemangleString(typeid(int).name()), "int"); + // We want to test that `DemangleString` can demangle the symbol names + // returned by `typeid`, but without hard-coding the actual demangled values + // (because they are platform-specific). + EXPECT_THAT( + DemangleString(typeid(Base).name()), + ContainsRegex("absl.*debugging_internal.*anonymous namespace.*::Base")); + EXPECT_THAT(DemangleString(typeid(Derived).name()), + ContainsRegex( + "absl.*debugging_internal.*anonymous namespace.*::Derived")); +} + } // namespace } // namespace debugging_internal ABSL_NAMESPACE_END |