@@ -635,6 +635,82 @@ TEST_P(DemanglingPartsTestFixture, DemanglingParts) {
635
635
INSTANTIATE_TEST_SUITE_P (DemanglingPartsTests, DemanglingPartsTestFixture,
636
636
::testing::ValuesIn (g_demangling_parts_test_cases));
637
637
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
+
638
714
struct DemanglingInfoCorrectnessTestCase {
639
715
const char *mangled;
640
716
const char *demangled;
0 commit comments