aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarco Poletti <poletti.marco@gmail.com>2019-09-01 11:55:23 -0700
committerMarco Poletti <poletti.marco@gmail.com>2019-09-01 11:55:23 -0700
commit9c1ac1e6187e0e39202ad63728cc7fffc338f7bf (patch)
tree0a87a77374d1766a645c83f7cc28d9de9efd8a9b
parente28d693e3860b66692394e0b5aa7a97b7957cf58 (diff)
downloadgoogle-fruit-9c1ac1e6187e0e39202ad63728cc7fffc338f7bf.tar.gz
Add a more complex test case for name demangling.
-rw-r--r--tests/util/test_type_info.py23
1 files changed, 15 insertions, 8 deletions
diff --git a/tests/util/test_type_info.py b/tests/util/test_type_info.py
index 1eb1806..b67f197 100644
--- a/tests/util/test_type_info.py
+++ b/tests/util/test_type_info.py
@@ -49,20 +49,27 @@ class TestTypeInfo(parameterized.TestCase):
source,
locals())
- def test_name(self):
+ @parameterized.parameters([
+ ('MyStruct', '{"MyStruct", "struct MyStruct"}'),
+ ('std::pair<MyStruct, int>', '{"std::pair<MyStruct, int>", "std::__1::pair<MyStruct, int>"}'),
+ ])
+ def test_name(self, T, Expected):
source = '''
struct MyStruct {
};
int main() {
- std::string result = getTypeId<MyStruct>().type_info->name();
- if (result != "MyStruct" && result != "struct MyStruct") {
- std::cerr << "Demangling failed." << std::endl;
- std::cerr << "typeid(MyStruct).name() == " << typeid(MyStruct).name() << std::endl;
- std::cerr << "getTypeId<MyStruct>().type_info->name() == " << result << std::endl;
- abort();
+ std::string result = getTypeId<T>().type_info->name();
+ Assert(std::string(getTypeId<T>()) == getTypeId<T>().type_info->name());
+ for (std::string expected : Expected) {
+ if (result == expected) {
+ return 0;
+ }
}
- Assert(std::string(getTypeId<MyStruct>()) == "MyStruct" || std::string(getTypeId<MyStruct>()) == "struct MyStruct");
+ std::cerr << "Unexpected demangled name." << std::endl;
+ std::cerr << "typeid(T).name() == " << typeid(T).name() << std::endl;
+ std::cerr << "getTypeId<T>().type_info->name() == " << result << std::endl;
+ abort();
}
'''
expect_success(