@@ -611,3 +611,79 @@ TEST_P(DemanglingPartsTestFixture, DemanglingParts) {
611611
612612INSTANTIATE_TEST_SUITE_P (DemanglingPartsTests, DemanglingPartsTestFixture,
613613 ::testing::ValuesIn (g_demangling_parts_test_cases));
614+
615+ struct DemangledNameInfoTestCase {
616+ DemangledNameInfo expected_info;
617+ bool valid_basename;
618+ bool valid_scope;
619+ bool valid_arguments;
620+ bool valid_qualifiers;
621+ bool valid_prefix;
622+ bool valid_suffix;
623+ };
624+
625+ DemangledNameInfoTestCase g_demangled_name_info_test_cases[] = {
626+ // clang-format off
627+ {
628+ { /* .BasenameRange=*/ {0 , 10 }, /* .ScopeRange=*/ {0 , 0 }, /* .ArgumentsRange=*/ {0 , 0 },
629+ /* .QualifiersRange=*/ {0 , 0 }, /* .PrefixRange=*/ {0 , 0 }, /* .SuffixRange=*/ {0 , 0 }
630+ },
631+ /* valid_basename=*/ true , /* valid_scope=*/ false , /* valid_arguments=*/ false ,
632+ /* valid_qualifiers=*/ false , /* valid_prefix=*/ false , /* valid_suffix=*/ false ,
633+ },
634+ {
635+ { /* .BasenameRange=*/ {0 , 0 }, /* .ScopeRange=*/ {0 , 10 }, /* .ArgumentsRange=*/ {0 , 0 },
636+ /* .QualifiersRange=*/ {0 , 0 }, /* .PrefixRange=*/ {0 , 0 }, /* .SuffixRange=*/ {0 , 0 }
637+ },
638+ /* valid_basename=*/ false , /* valid_scope=*/ true , /* valid_arguments=*/ false ,
639+ /* valid_qualifiers=*/ false , /* valid_prefix=*/ false , /* valid_suffix=*/ false ,
640+ },
641+ {
642+ { /* .BasenameRange=*/ {0 , 0 }, /* .ScopeRange=*/ {0 , 0 }, /* .ArgumentsRange=*/ {0 , 10 },
643+ /* .QualifiersRange=*/ {0 , 0 }, /* .PrefixRange=*/ {0 , 0 }, /* .SuffixRange=*/ {0 , 0 }
644+ },
645+ /* valid_basename=*/ false , /* valid_scope=*/ false , /* valid_arguments=*/ true ,
646+ /* valid_qualifiers=*/ false , /* valid_prefix=*/ false , /* valid_suffix=*/ false ,
647+ },
648+ {
649+ { /* .BasenameRange=*/ {0 , 0 }, /* .ScopeRange=*/ {0 , 0 }, /* .ArgumentsRange=*/ {0 , 0 },
650+ /* .QualifiersRange=*/ {0 , 10 }, /* .PrefixRange=*/ {0 , 0 }, /* .SuffixRange=*/ {0 , 0 }
651+ },
652+ /* valid_basename=*/ false , /* valid_scope=*/ false , /* valid_arguments=*/ false ,
653+ /* valid_qualifiers=*/ true , /* valid_prefix=*/ false , /* valid_suffix=*/ false ,
654+ },
655+ {
656+ { /* .BasenameRange=*/ {0 , 0 }, /* .ScopeRange=*/ {0 , 0 }, /* .ArgumentsRange=*/ {0 , 0 },
657+ /* .QualifiersRange=*/ {0 , 0 }, /* .PrefixRange=*/ {0 , 10 }, /* .SuffixRange=*/ {0 , 0 }
658+ },
659+ /* valid_basename=*/ false , /* valid_scope=*/ false , /* valid_arguments=*/ false ,
660+ /* valid_qualifiers=*/ false , /* valid_prefix=*/ true , /* valid_suffix=*/ false ,
661+ },
662+ {
663+ { /* .BasenameRange=*/ {0 , 0 }, /* .ScopeRange=*/ {0 , 0 }, /* .ArgumentsRange=*/ {0 , 0 },
664+ /* .QualifiersRange=*/ {0 , 0 }, /* .PrefixRange=*/ {0 , 0 }, /* .SuffixRange=*/ {0 , 10 }
665+ },
666+ /* valid_basename=*/ false , /* valid_scope=*/ false , /* valid_arguments=*/ false ,
667+ /* valid_qualifiers=*/ false , /* valid_prefix=*/ false , /* valid_suffix=*/ true ,
668+ },
669+ // clang-format on
670+ };
671+
672+ struct DemangledNameInfoTestFixture
673+ : public ::testing::TestWithParam<DemangledNameInfoTestCase> {};
674+
675+ TEST_P (DemangledNameInfoTestFixture, DemangledNameInfoRanges) {
676+ const auto &[info, valid_basename, valid_scope, valid_arguments,
677+ valid_qualifiers, valid_prefix, valid_suffix] = GetParam ();
678+
679+ ASSERT_EQ (info.hasBasename (), valid_basename);
680+ ASSERT_EQ (info.hasScope (), valid_scope);
681+ ASSERT_EQ (info.hasArguments (), valid_arguments);
682+ ASSERT_EQ (info.hasQualifiers (), valid_qualifiers);
683+ ASSERT_EQ (info.hasPrefix (), valid_prefix);
684+ ASSERT_EQ (info.hasSuffix (), valid_suffix);
685+ }
686+
687+ INSTANTIATE_TEST_SUITE_P (DemangledNameInfoRangesTests,
688+ DemangledNameInfoTestFixture,
689+ ::testing::ValuesIn (g_demangled_name_info_test_cases));
0 commit comments