// -*- C++ -*- //===----------------------------------------------------------------------===// // // The LLVM Compiler Infrastructure // // This file is dual licensed under the MIT and the University of Illinois Open // Source Licenses. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #include "demangle.h" #include <typeinfo> #include <cassert> struct MyType {}; template <class T, class U> struct ArgumentListID {}; int main() { struct { const char* raw; const char* expect; } TestCases[] = { {typeid(int).name(), "int"}, {typeid(MyType).name(), "MyType"}, {typeid(ArgumentListID<int, MyType>).name(), "ArgumentListID<int, MyType>"} }; const size_t size = sizeof(TestCases) / sizeof(TestCases[0]); for (size_t i=0; i < size; ++i) { const char* raw = TestCases[i].raw; const char* expect = TestCases[i].expect; #ifdef TEST_HAS_NO_DEMANGLE assert(demangle(raw) == raw); ((void)expect); #else assert(demangle(raw) == expect); #endif } }