diff --git a/.gitignore b/.gitignore index 986988c6..cce6a9b9 100644 --- a/.gitignore +++ b/.gitignore @@ -50,3 +50,4 @@ Thumbs.db # CMake generated files **/cmake-build-debug/ **/cmake-build-release/ +**/cmake-build-release-coverage/ \ No newline at end of file diff --git a/gegelatilib/src/data/demangle.cpp b/gegelatilib/src/data/demangle.cpp index 0bc0c7f3..8faf4612 100644 --- a/gegelatilib/src/data/demangle.cpp +++ b/gegelatilib/src/data/demangle.cpp @@ -11,9 +11,7 @@ std::string demangle(const char* name) free(demangleValue); } else { - throw std::runtime_error("Error while trying to demangle the value. " - "Return code of abi::__cxa_demangle is " + - std::to_string(status)); + throw std::runtime_error("Error while trying to demangle a value."); } return result; } diff --git a/test/demangleTest.cpp b/test/demangleTest.cpp new file mode 100644 index 00000000..d669fa33 --- /dev/null +++ b/test/demangleTest.cpp @@ -0,0 +1,25 @@ +#include + +#ifdef __GNUC__ +#include "data/arrayWrapper.h" + +TEST(DemangleTest, demangleTypeDouble) +{ + std::string demangled; + const std::type_info& type = typeid(double); + ASSERT_NO_THROW(demangled = demangle(type.name())); + + ASSERT_EQ(demangled, std::string("double")); + + ASSERT_EQ(strcmp(DEMANGLE_TYPEID_NAME(type.name()), demangled.c_str()), 0); +} + +TEST(DemangleTest, demangleFail) +{ + const char* toDemangle = "gegelati"; + const std::type_info& type = typeid(double); + ASSERT_THROW(demangle(toDemangle), std::runtime_error); + + ASSERT_THROW(DEMANGLE_TYPEID_NAME(toDemangle), std::runtime_error); +} +#endif \ No newline at end of file