TEST(UnitTestDemangle, UnitTest) { #if defined(__PGI) { std::string linux_name("ThisIsJunk"); std::string demangled_name = stk::demangle(linux_name.c_str()); ASSERT_EQ(linux_name, demangled_name); } { std::string linux_name("bool ()"); std::string demangled_name = stk::demangle(typeid(utest_demangle).name()); ASSERT_EQ(linux_name, demangled_name); } { typedef std::vector<double> DoubleVector; DoubleVector double_vector; std::string linux_name("std::vector<double, std::allocator<double>>"); std::string demangled_name = stk::demangle(typeid(double_vector).name()); ASSERT_EQ(linux_name, demangled_name); } #elif defined(__sun) { std::string linux_name("ThisIsJunk"); std::string demangled_name = stk::demangle(linux_name.c_str()); ASSERT_EQ(linux_name, demangled_name); } { std::string linux_name("bool()"); std::string demangled_name = stk::demangle(typeid(utest_demangle).name()); ASSERT_EQ(linux_name, demangled_name); } { typedef std::vector<double> DoubleVector; DoubleVector double_vector; std::string linux_name("std::vector<double, std::allocator<double>>"); std::string demangled_name = stk::demangle(typeid(double_vector).name()); ASSERT_EQ(linux_name, demangled_name); } #elif defined(__xlC__) { std::string linux_name("ThisIsJunk"); std::string demangled_name = stk::demangle(linux_name.c_str()); // ASSERT_EQ((linux_name == demangled_name), true); } { std::string linux_name("bool ()()"); std::string demangled_name = stk::demangle(typeid(utest_demangle).name()); // ASSERT_EQ(linux_name, demangled_name); } { typedef std::vector<double> DoubleVector; DoubleVector double_vector; std::string linux_name("std::vector<double, std::allocator<double> >"); std::string demangled_name = stk::demangle(typeid(double_vector).name()); // ASSERT_EQ((linux_name == demangled_name), true); } #elif defined(__linux__) { std::string linux_name("ThisIsJunk"); std::string demangled_name = sierra::demangle(linux_name.c_str()); ASSERT_EQ((linux_name == demangled_name), true); } { #if (__GNUC_MINOR__ > 5) || defined(__clang__) std::string linux_name("bool ()"); #else std::string linux_name("bool ()()"); #endif std::string demangled_name = sierra::demangle(typeid(utest_demangle).name()); ASSERT_EQ(linux_name, demangled_name); } { typedef std::vector<double> DoubleVector; DoubleVector double_vector; #ifdef _GLIBCXX_DEBUG std::string linux_name("__gnu_debug_def::vector<double, std::allocator<double> >"); #else std::string linux_name("std::vector<double, std::allocator<double> >"); #endif std::string demangled_name = sierra::demangle(typeid(double_vector).name()); ASSERT_EQ((linux_name == demangled_name), true); } #endif }
void UnitTestDemangle::testUnit() { #if defined(__PGI) { std::string linux_name("ThisIsJunk"); std::string demangled_name = stk::demangle(linux_name.c_str()); CPPUNIT_ASSERT_EQUAL(linux_name, demangled_name); } { std::string linux_name("bool ()"); std::string demangled_name = stk::demangle(typeid(utest_demangle).name()); CPPUNIT_ASSERT_EQUAL(linux_name, demangled_name); } { typedef std::vector<double> DoubleVector; DoubleVector double_vector; std::string linux_name("std::vector<double, std::allocator<double>>"); std::string demangled_name = stk::demangle(typeid(double_vector).name()); CPPUNIT_ASSERT_EQUAL(linux_name, demangled_name); } #elif defined(__sun) { std::string linux_name("ThisIsJunk"); std::string demangled_name = stk::demangle(linux_name.c_str()); CPPUNIT_ASSERT_EQUAL(linux_name, demangled_name); } { std::string linux_name("bool()"); std::string demangled_name = stk::demangle(typeid(utest_demangle).name()); CPPUNIT_ASSERT_EQUAL(linux_name, demangled_name); } { typedef std::vector<double> DoubleVector; DoubleVector double_vector; std::string linux_name("std::vector<double, std::allocator<double>>"); std::string demangled_name = stk::demangle(typeid(double_vector).name()); CPPUNIT_ASSERT_EQUAL(linux_name, demangled_name); } #elif defined(__linux__) { std::string linux_name("ThisIsJunk"); std::string demangled_name = stk::demangle(linux_name.c_str()); CPPUNIT_ASSERT_EQUAL(linux_name, demangled_name); } { std::string linux_name("bool ()()"); std::string demangled_name = stk::demangle(typeid(utest_demangle).name()); CPPUNIT_ASSERT_EQUAL(linux_name, demangled_name); } { typedef std::vector<double> DoubleVector; DoubleVector double_vector; std::string linux_name("std::vector<double, std::allocator<double> >"); std::string demangled_name = stk::demangle(typeid(double_vector).name()); CPPUNIT_ASSERT_EQUAL(linux_name, demangled_name); } #endif }