#include "tile/base/demangle.h"
#include "gtest/gtest.h"

namespace tile {
struct C {
    struct D {
        struct E {};
    };
};

TEST(Demangle, All)
{
    ASSERT_EQ("tile::C::D::E", GetTypeName<C::D::E>());
    ASSERT_NE(GetTypeName<C::D>(), typeid(C::D::E).name());
    ASSERT_EQ("invalid function name !@#$", Demangle("invalid function name !@#$"));
}

}// namespace tile
