diff --git a/tests/unit/utils/test_demangler_utils.nompi.cc b/tests/unit/utils/test_demangler_utils.nompi.cc index 8107aab70a..2912105f4f 100644 --- a/tests/unit/utils/test_demangler_utils.nompi.cc +++ b/tests/unit/utils/test_demangler_utils.nompi.cc @@ -48,7 +48,18 @@ namespace vt { namespace tests { namespace unit { -struct TestDemanglerUtils : TestHarness { }; +struct TestDemanglerUtils : TestHarness { + + template + std::string func_1(T1) { + return __PRETTY_FUNCTION__; + } + + template + std::string func_2(T1, T2){ + return __PRETTY_FUNCTION__; + } +}; using TE = vt::util::demangle::TemplateExtract; @@ -103,4 +114,30 @@ TEST_F(TestDemanglerUtils, test_getBarename) { } } +TEST_F(TestDemanglerUtils, test_lastNamedPfType) { + std::vector> data; + data.emplace_back("", "", ""); + data.emplace_back(__PRETTY_FUNCTION__, "", ""); + data.emplace_back(func_1(1.0), "IncorrectName", ""); + + data.emplace_back(func_1(100), "T1", "int"); + data.emplace_back(func_1("abc"), "T1", "const char *"); + data.emplace_back(func_1(nullptr), "T1", "std::nullptr_t"); + + data.emplace_back(func_2(100, 10.0), "T2", "double"); + data.emplace_back(func_2("abc", std::string("abc")), "T2", "std::string"); + data.emplace_back(func_2(nullptr, nullptr), "T2", "std::nullptr_t"); + + auto lambda = [] (auto aa, auto bb) { return __PRETTY_FUNCTION__; }; + data.emplace_back(lambda(10, 20), "bb:auto", "int"); + data.emplace_back(lambda("", nullptr), "bb:auto", "std::nullptr_t"); + + for (auto& t : data) { + std::string& spf = std::get<0>(t); + std::string& tparam = std::get<1>(t); + std::string& expected = std::get<2>(t); + EXPECT_EQ(TE::lastNamedPfType(spf, tparam), expected); + } +} + }}} /* end namespace vt::tests::unit */