@@ -635,6 +635,82 @@ TEST_P(DemanglingPartsTestFixture, DemanglingParts) {
635635INSTANTIATE_TEST_SUITE_P (DemanglingPartsTests, DemanglingPartsTestFixture,
636636 ::testing::ValuesIn (g_demangling_parts_test_cases));
637637
638+ struct DemangledNameInfoTestCase {
639+ DemangledNameInfo expected_info;
640+ bool valid_basename;
641+ bool valid_scope;
642+ bool valid_arguments;
643+ bool valid_qualifiers;
644+ bool valid_prefix;
645+ bool valid_suffix;
646+ };
647+
648+ DemangledNameInfoTestCase g_demangled_name_info_test_cases[] = {
649+ // clang-format off
650+ {
651+ { /* .BasenameRange=*/ {0 , 10 }, /* .ScopeRange=*/ {0 , 0 }, /* .ArgumentsRange=*/ {0 , 0 },
652+ /* .QualifiersRange=*/ {0 , 0 }, /* .PrefixRange=*/ {0 , 0 }, /* .SuffixRange=*/ {0 , 0 }
653+ },
654+ /* valid_basename=*/ true , /* valid_scope=*/ false , /* valid_arguments=*/ false ,
655+ /* valid_qualifiers=*/ false , /* valid_prefix=*/ false , /* valid_suffix=*/ false ,
656+ },
657+ {
658+ { /* .BasenameRange=*/ {0 , 0 }, /* .ScopeRange=*/ {0 , 10 }, /* .ArgumentsRange=*/ {0 , 0 },
659+ /* .QualifiersRange=*/ {0 , 0 }, /* .PrefixRange=*/ {0 , 0 }, /* .SuffixRange=*/ {0 , 0 }
660+ },
661+ /* valid_basename=*/ false , /* valid_scope=*/ true , /* valid_arguments=*/ false ,
662+ /* valid_qualifiers=*/ false , /* valid_prefix=*/ false , /* valid_suffix=*/ false ,
663+ },
664+ {
665+ { /* .BasenameRange=*/ {0 , 0 }, /* .ScopeRange=*/ {0 , 0 }, /* .ArgumentsRange=*/ {0 , 10 },
666+ /* .QualifiersRange=*/ {0 , 0 }, /* .PrefixRange=*/ {0 , 0 }, /* .SuffixRange=*/ {0 , 0 }
667+ },
668+ /* valid_basename=*/ false , /* valid_scope=*/ false , /* valid_arguments=*/ true ,
669+ /* valid_qualifiers=*/ false , /* valid_prefix=*/ false , /* valid_suffix=*/ false ,
670+ },
671+ {
672+ { /* .BasenameRange=*/ {0 , 0 }, /* .ScopeRange=*/ {0 , 0 }, /* .ArgumentsRange=*/ {0 , 0 },
673+ /* .QualifiersRange=*/ {0 , 10 }, /* .PrefixRange=*/ {0 , 0 }, /* .SuffixRange=*/ {0 , 0 }
674+ },
675+ /* valid_basename=*/ false , /* valid_scope=*/ false , /* valid_arguments=*/ false ,
676+ /* valid_qualifiers=*/ true , /* valid_prefix=*/ false , /* valid_suffix=*/ false ,
677+ },
678+ {
679+ { /* .BasenameRange=*/ {0 , 0 }, /* .ScopeRange=*/ {0 , 0 }, /* .ArgumentsRange=*/ {0 , 0 },
680+ /* .QualifiersRange=*/ {0 , 0 }, /* .PrefixRange=*/ {0 , 10 }, /* .SuffixRange=*/ {0 , 0 }
681+ },
682+ /* valid_basename=*/ false , /* valid_scope=*/ false , /* valid_arguments=*/ false ,
683+ /* valid_qualifiers=*/ false , /* valid_prefix=*/ true , /* valid_suffix=*/ false ,
684+ },
685+ {
686+ { /* .BasenameRange=*/ {0 , 0 }, /* .ScopeRange=*/ {0 , 0 }, /* .ArgumentsRange=*/ {0 , 0 },
687+ /* .QualifiersRange=*/ {0 , 0 }, /* .PrefixRange=*/ {0 , 0 }, /* .SuffixRange=*/ {0 , 10 }
688+ },
689+ /* valid_basename=*/ false , /* valid_scope=*/ false , /* valid_arguments=*/ false ,
690+ /* valid_qualifiers=*/ false , /* valid_prefix=*/ false , /* valid_suffix=*/ true ,
691+ },
692+ // clang-format on
693+ };
694+
695+ struct DemangledNameInfoTestFixture
696+ : public ::testing::TestWithParam<DemangledNameInfoTestCase> {};
697+
698+ TEST_P (DemangledNameInfoTestFixture, DemangledNameInfoRanges) {
699+ const auto &[info, valid_basename, valid_scope, valid_arguments,
700+ valid_qualifiers, valid_prefix, valid_suffix] = GetParam ();
701+
702+ ASSERT_EQ (info.hasBasename (), valid_basename);
703+ ASSERT_EQ (info.hasScope (), valid_scope);
704+ ASSERT_EQ (info.hasArguments (), valid_arguments);
705+ ASSERT_EQ (info.hasQualifiers (), valid_qualifiers);
706+ ASSERT_EQ (info.hasPrefix (), valid_prefix);
707+ ASSERT_EQ (info.hasSuffix (), valid_suffix);
708+ }
709+
710+ INSTANTIATE_TEST_SUITE_P (DemangledNameInfoRangesTests,
711+ DemangledNameInfoTestFixture,
712+ ::testing::ValuesIn (g_demangled_name_info_test_cases));
713+
638714struct DemanglingInfoCorrectnessTestCase {
639715 const char *mangled;
640716 const char *demangled;
0 commit comments