@@ -45,11 +45,25 @@ TEST(RNTuple, TypeNameNormalizationByName)
4545 EXPECT_EQ (" std::vector<std::array<Double32_t,2>>" ,
4646 RFieldBase::Create (" f" , " vector<Double32_t[2]>" ).Unwrap ()->GetTypeAlias ());
4747
48+ EXPECT_EQ (" std::array<std::vector<std::array<double,3>>,10>" ,
49+ RFieldBase::Create (" f" , " std::vector<Double32_t[3] > [10 ] " ).Unwrap ()->GetTypeName ());
50+ EXPECT_EQ (" std::array<std::vector<std::array<Double32_t,3>>,10>" ,
51+ RFieldBase::Create (" f" , " std::vector<Double32_t[3] > [10 ] " ).Unwrap ()->GetTypeAlias ());
52+
53+ // We keep CV qualifiers only in template arguments of user-defined types
54+ EXPECT_EQ (" std::unique_ptr<std::array<std::string,2>>" ,
55+ RFieldBase::Create (" f" , " std::unique_ptr<const std::string[2]>" ).Unwrap ()->GetTypeName ());
4856 const std::string innerCV = " class InnerCV<const int, const volatile int, volatile const int, volatile int>" ;
4957 const std::string normInnerCV =
5058 " InnerCV<const std::int32_t,const volatile std::int32_t,const volatile std::int32_t,volatile std::int32_t>" ;
5159 EXPECT_EQ (normInnerCV, RFieldBase::Create (" f" , innerCV).Unwrap ()->GetTypeName ());
5260 EXPECT_EQ (" " , RFieldBase::Create (" f" , innerCV).Unwrap ()->GetTypeAlias ());
61+ EXPECT_EQ (
62+ " InnerCV<const std::vector<std::array<std::string,2>>,std::int32_t,std::int32_t,std::int32_t>" ,
63+ RFieldBase::Create (" f" , " InnerCV<const std::vector<std::string[2]>, int, int, int>" ).Unwrap ()->GetTypeName ());
64+ EXPECT_EQ (
65+ " " ,
66+ RFieldBase::Create (" f" , " InnerCV<const std::vector<std::string[2]>, int, int, int>" ).Unwrap ()->GetTypeAlias ());
5367
5468 const std::string example = " const pair<size_t, array<class CustomStruct, 6>>" ;
5569 std::string normExample;
@@ -68,59 +82,63 @@ TEST(RNTuple, TypeNameNormalizationByName)
6882
6983TEST (RNTuple, TypeNameNormalizationById)
7084{
71- EXPECT_EQ (" std::int32_t" , ROOT::Internal::GetRenormalizedTypeName (typeid (signed )));
72- EXPECT_EQ (" std::int32_t" , ROOT::Internal::GetRenormalizedTypeName (typeid (std::int32_t )));
73- EXPECT_EQ (" double" , ROOT::Internal::GetRenormalizedTypeName (typeid (Double32_t)));
74- EXPECT_EQ (" float" , ROOT::Internal::GetRenormalizedTypeName (typeid (const float )));
75-
76- EXPECT_EQ (" std::string" , ROOT::Internal::GetRenormalizedTypeName (typeid (std::string)));
77- EXPECT_EQ (" std::map<std::string,std::string>" ,
78- ROOT::Internal::GetRenormalizedTypeName (typeid (std::map<std::string, std::string>)));
79- EXPECT_EQ (" char" , ROOT::Internal::GetRenormalizedTypeName (typeid (std::string::value_type)));
80-
81- EXPECT_EQ (" std::vector<bool>" , ROOT::Internal::GetRenormalizedTypeName (typeid (std::vector<Bool_t>)));
82- EXPECT_EQ (" std::vector<char>" , ROOT::Internal::GetRenormalizedTypeName (typeid (std::vector<char >)));
83- EXPECT_EQ (" ROOT::VecOps::RVec<float>" , ROOT::Internal::GetRenormalizedTypeName (typeid (ROOT::RVec<float >)));
84- EXPECT_EQ (" std::array<float,2>" , ROOT::Internal::GetRenormalizedTypeName (typeid (std::array<float , 0x02 >)));
85- EXPECT_EQ (" std::variant<float,double>" ,
86- ROOT::Internal::GetRenormalizedTypeName (typeid (std::variant<float , double >)));
87- EXPECT_EQ (" std::pair<float,double>" , ROOT::Internal::GetRenormalizedTypeName (typeid (std::pair<float , double >)));
88- EXPECT_EQ (" std::tuple<float,float,float>" ,
89- ROOT::Internal::GetRenormalizedTypeName (typeid (std::tuple<float , float , float >)));
90- EXPECT_EQ (" std::bitset<1000>" , ROOT::Internal::GetRenormalizedTypeName (typeid (std::bitset<1000lu>)));
91- EXPECT_EQ (" std::atomic<std::int32_t>" , ROOT::Internal::GetRenormalizedTypeName (typeid (std::atomic<int >)));
92- EXPECT_EQ (" std::unique_ptr<std::int32_t>" , ROOT::Internal::GetRenormalizedTypeName (typeid (std::unique_ptr<int >)));
93- EXPECT_EQ (" std::optional<std::int32_t>" , ROOT::Internal::GetRenormalizedTypeName (typeid (std::optional<int >)));
94-
95- EXPECT_EQ (" std::array<std::array<std::uint32_t,3>,2>" ,
96- ROOT::Internal::GetRenormalizedTypeName (typeid (SG::sgkey_t [2 ][3 ])));
97- EXPECT_EQ (" std::vector<std::array<double,2>>" ,
98- ROOT::Internal::GetRenormalizedTypeName (typeid (std::vector<Double32_t[2 ]>)));
99-
100- EXPECT_EQ (" std::set<std::int32_t>" , ROOT::Internal::GetRenormalizedTypeName (typeid (std::set<int >)));
101- EXPECT_EQ (" std::unordered_set<std::int32_t>" ,
102- ROOT::Internal::GetRenormalizedTypeName (typeid (std::unordered_set<int >)));
103- EXPECT_EQ (" std::multiset<std::int32_t>" , ROOT::Internal::GetRenormalizedTypeName (typeid (std::multiset<int >)));
104- EXPECT_EQ (" std::unordered_multiset<std::int32_t>" ,
105- ROOT::Internal::GetRenormalizedTypeName (typeid (std::unordered_multiset<int >)));
106-
107- EXPECT_EQ (" std::map<std::int32_t,std::int32_t>" ,
108- ROOT::Internal::GetRenormalizedTypeName (typeid (std::map<int , int >)));
85+ using ROOT::Internal::GetRenormalizedTypeName;
86+
87+ EXPECT_EQ (" std::int32_t" , GetRenormalizedTypeName (typeid (signed )));
88+ EXPECT_EQ (" std::int32_t" , GetRenormalizedTypeName (typeid (std::int32_t )));
89+ EXPECT_EQ (" double" , GetRenormalizedTypeName (typeid (Double32_t)));
90+ EXPECT_EQ (" float" , GetRenormalizedTypeName (typeid (const float )));
91+
92+ EXPECT_EQ (" std::string" , GetRenormalizedTypeName (typeid (std::string)));
93+ EXPECT_EQ (" std::map<std::string,std::string>" , GetRenormalizedTypeName (typeid (std::map<std::string, std::string>)));
94+ EXPECT_EQ (" std::vector<std::array<std::string,2>>" , GetRenormalizedTypeName (typeid (std::vector<std::string[2 ]>)));
95+ EXPECT_EQ (" char" , GetRenormalizedTypeName (typeid (std::string::value_type)));
96+
97+ EXPECT_EQ (" std::vector<bool>" , GetRenormalizedTypeName (typeid (std::vector<Bool_t>)));
98+ EXPECT_EQ (" std::vector<char>" , GetRenormalizedTypeName (typeid (std::vector<char >)));
99+ EXPECT_EQ (" ROOT::VecOps::RVec<float>" , GetRenormalizedTypeName (typeid (ROOT::RVec<float >)));
100+ EXPECT_EQ (" std::array<float,2>" , GetRenormalizedTypeName (typeid (std::array<float , 0x02 >)));
101+ EXPECT_EQ (" std::variant<float,double>" , GetRenormalizedTypeName (typeid (std::variant<float , double >)));
102+ EXPECT_EQ (" std::pair<float,double>" , GetRenormalizedTypeName (typeid (std::pair<float , double >)));
103+ EXPECT_EQ (" std::tuple<float,float,float>" , GetRenormalizedTypeName (typeid (std::tuple<float , float , float >)));
104+ EXPECT_EQ (" std::bitset<1000>" , GetRenormalizedTypeName (typeid (std::bitset<1000lu>)));
105+ EXPECT_EQ (" std::atomic<std::int32_t>" , GetRenormalizedTypeName (typeid (std::atomic<int >)));
106+ EXPECT_EQ (" std::unique_ptr<std::int32_t>" , GetRenormalizedTypeName (typeid (std::unique_ptr<int >)));
107+ EXPECT_EQ (" std::optional<std::int32_t>" , GetRenormalizedTypeName (typeid (std::optional<int >)));
108+
109+ EXPECT_EQ (" std::array<std::array<std::uint32_t,3>,2>" , GetRenormalizedTypeName (typeid (SG::sgkey_t [2 ][3 ])));
110+ EXPECT_EQ (" std::vector<std::array<double,2>>" , GetRenormalizedTypeName (typeid (std::vector<Double32_t[2 ]>)));
111+ EXPECT_EQ (" std::array<std::vector<std::array<double,3>>,10>" ,
112+ GetRenormalizedTypeName (typeid (std::vector<Double32_t[3 ]>[10 ])));
113+
114+ EXPECT_EQ (" std::set<std::int32_t>" , GetRenormalizedTypeName (typeid (std::set<int >)));
115+ EXPECT_EQ (" std::unordered_set<std::int32_t>" , GetRenormalizedTypeName (typeid (std::unordered_set<int >)));
116+ EXPECT_EQ (" std::multiset<std::int32_t>" , GetRenormalizedTypeName (typeid (std::multiset<int >)));
117+ EXPECT_EQ (" std::unordered_multiset<std::int32_t>" , GetRenormalizedTypeName (typeid (std::unordered_multiset<int >)));
118+
119+ EXPECT_EQ (" std::map<std::int32_t,std::int32_t>" , GetRenormalizedTypeName (typeid (std::map<int , int >)));
109120 EXPECT_EQ (" std::unordered_map<std::int32_t,std::int32_t>" ,
110- ROOT::Internal::GetRenormalizedTypeName (typeid (std::unordered_map<int , int >)));
111- EXPECT_EQ (" std::multimap<std::int32_t,std::int32_t>" ,
112- ROOT::Internal::GetRenormalizedTypeName (typeid (std::multimap<int , int >)));
121+ GetRenormalizedTypeName (typeid (std::unordered_map<int , int >)));
122+ EXPECT_EQ (" std::multimap<std::int32_t,std::int32_t>" , GetRenormalizedTypeName (typeid (std::multimap<int , int >)));
113123 EXPECT_EQ (" std::unordered_multimap<std::int32_t,std::int32_t>" ,
114- ROOT::Internal:: GetRenormalizedTypeName (typeid (std::unordered_multimap<int , int >)));
124+ GetRenormalizedTypeName (typeid (std::unordered_multimap<int , int >)));
115125
116126 EXPECT_EQ (" CustomStruct" , ROOT::Internal::GetRenormalizedTypeName (typeid (CustomStruct)));
117127
118- EXPECT_EQ (" std::map<std::int32_t,std::int32_t>" ,
119- ROOT::Internal::GetRenormalizedTypeName (typeid (std::map<int , int >)));
128+ // We keep CV qualifiers only in template arguments of user-defined types
129+ EXPECT_EQ (" std::unique_ptr<std::array<std::string,2>>" ,
130+ GetRenormalizedTypeName (typeid (std::unique_ptr<const std::string[2 ]>)));
131+ const std::string normInnerCV =
132+ " InnerCV<const std::int32_t,const volatile std::int32_t,const volatile std::int32_t,volatile std::int32_t>" ;
133+ EXPECT_EQ (normInnerCV,
134+ GetRenormalizedTypeName (typeid (InnerCV<const int , const volatile int , volatile const int , volatile int >)));
135+ EXPECT_EQ (" InnerCV<const std::vector<std::array<std::string,2>>,std::int32_t,std::int32_t,std::int32_t>" ,
136+ GetRenormalizedTypeName (typeid (InnerCV<const std::vector<std::string[2 ]>, int , int , int >)));
120137
121- EXPECT_EQ (
122- " std::pair<std::uint32_t,std::array<CustomStruct,2>>" ,
123- ROOT::Internal::GetRenormalizedTypeName (typeid (const std::pair<unsigned int , std::array<::CustomStruct, 2 >>)));
138+ EXPECT_EQ (" std::map<std::int32_t,std::int32_t>" , GetRenormalizedTypeName (typeid (std::map<int , int >)));
139+
140+ EXPECT_EQ (" std::pair<std::uint32_t,std::array<CustomStruct,2>>" ,
141+ GetRenormalizedTypeName (typeid (const std::pair<unsigned int , std::array<::CustomStruct, 2 >>)));
124142}
125143
126144TEST (RNTuple, TClassDefaultTemplateParameter)
0 commit comments