File indexing completed on 2024-04-06 12:13:14
0001
0002
0003
0004
0005
0006
0007
0008
0009 #include <cppunit/extensions/HelperMacros.h>
0010 #include <iostream>
0011 #include "FWCore/Utilities/interface/FriendlyName.h"
0012
0013 using namespace edm;
0014
0015 class testfriendlyName : public CppUnit::TestFixture {
0016 CPPUNIT_TEST_SUITE(testfriendlyName);
0017
0018 CPPUNIT_TEST(test);
0019
0020 CPPUNIT_TEST_SUITE_END();
0021
0022 public:
0023 void setUp() {}
0024 void tearDown() {}
0025
0026 void test();
0027 };
0028
0029
0030 CPPUNIT_TEST_SUITE_REGISTRATION(testfriendlyName);
0031
0032 void testfriendlyName::test() {
0033 typedef std::pair<std::string, std::string> Values;
0034 std::map<std::string, std::string> classToFriendly;
0035 classToFriendly.insert(Values("Foo", "Foo"));
0036 classToFriendly.insert(Values("const Foo", "constFoo"));
0037 classToFriendly.insert(Values("bar::Foo", "barFoo"));
0038 classToFriendly.insert(Values("std::vector<Foo>", "Foos"));
0039 classToFriendly.insert(Values("std::vector<bar::Foo>", "barFoos"));
0040 classToFriendly.insert(Values("std::set<bar::Foo>", "barFoostdset"));
0041 classToFriendly.insert(Values("std::map<Foo, bar::Bar>", "FoobarBarstdmap"));
0042 classToFriendly.insert(Values("std::unordered_set<bar::Foo>", "barFoostduset"));
0043 classToFriendly.insert(Values("std::unordered_set<std::basic_string<char>>", "Stringstduset"));
0044 classToFriendly.insert(Values("std::unordered_set<bar::Foo, std::hash<bar::Foo>>", "barFoostduset"));
0045 classToFriendly.insert(
0046 Values("std::unordered_set<std::basic_string<char>, std::hash<std::basic_string<char>>>", "Stringstduset"));
0047 classToFriendly.insert(
0048 Values("std::unordered_set<bar::Foo, std::hash<bar::Foo>, std::equal_to<bar::Foo>>", "barFoostduset"));
0049 classToFriendly.insert(
0050 Values("std::unordered_set<std::basic_string<char>, std::hash<std::basic_string<char>>, "
0051 "std::equal_to<std::basic_string<char>>>",
0052 "Stringstduset"));
0053 classToFriendly.insert(
0054 Values("std::unordered_set<bar::Foo, CustomHash, std::equal_to<bar::Foo>>", "barFooCustomHashstduset"));
0055 classToFriendly.insert(
0056 Values("std::unordered_set<std::basic_string<char>, CustomHash, std::equal_to<std::basic_string<char>>>",
0057 "StringCustomHashstduset"));
0058 classToFriendly.insert(Values("std::unordered_set<bar::Foo, CustomHash>", "barFooCustomHashstduset"));
0059 classToFriendly.insert(Values("std::unordered_set<std::basic_string<char>, CustomHash>", "StringCustomHashstduset"));
0060 classToFriendly.insert(Values("std::unordered_map<Foo, bar::Bar>", "FoobarBarstdumap"));
0061 classToFriendly.insert(Values("std::unordered_map<std::basic_string<char>, bar::Bar>", "StringbarBarstdumap"));
0062 classToFriendly.insert(Values("std::unordered_map<Foo, std::basic_string<char>>", "FooStringstdumap"));
0063 classToFriendly.insert(Values("std::unordered_map<Foo, bar::Bar, std::hash<Foo>>", "FoobarBarstdumap"));
0064 classToFriendly.insert(
0065 Values("std::unordered_map<std::basic_string<char> , bar::Bar, std::hash<std::basic_string<char> > >",
0066 "StringbarBarstdumap"));
0067 classToFriendly.insert(
0068 Values("std::unordered_map<Foo, std::basic_string<char> , std::hash<Foo>>", "FooStringstdumap"));
0069 classToFriendly.insert(
0070 Values("std::unordered_map<Foo, bar::Bar, std::hash<Foo>, std::equal_to<Foo>>", "FoobarBarstdumap"));
0071 classToFriendly.insert(
0072 Values("std::unordered_map<std::basic_string<char>, bar::Bar, std::hash<std::basic_string<char>>, "
0073 "std::equal_to<std::basic_string<char>>>",
0074 "StringbarBarstdumap"));
0075 classToFriendly.insert(Values("std::unordered_map<Foo, std::basic_string<char>, std::hash<Foo>, std::equal_to<Foo>>",
0076 "FooStringstdumap"));
0077 classToFriendly.insert(
0078 Values("std::unordered_map<Foo, bar::Bar, CustomHash, std::equal_to<Foo>>", "FoobarBarCustomHashstdumap"));
0079 classToFriendly.insert(Values(
0080 "std::unordered_map<std::basic_string<char>, bar::Bar, CustomHash, std::equal_to<std::basic_string<char>>>",
0081 "StringbarBarCustomHashstdumap"));
0082 classToFriendly.insert(Values("std::unordered_map<Foo, std::basic_string<char>, CustomHash, std::equal_to<Foo>>",
0083 "FooStringCustomHashstdumap"));
0084 classToFriendly.insert(Values("std::unordered_map<Foo, bar::Bar, CustomHash>", "FoobarBarCustomHashstdumap"));
0085 classToFriendly.insert(
0086 Values("std::unordered_map<std::basic_string<char>, bar::Bar, CustomHash>", "StringbarBarCustomHashstdumap"));
0087 classToFriendly.insert(
0088 Values("std::unordered_map<Foo, std::basic_string<char>, CustomHash>", "FooStringCustomHashstdumap"));
0089 classToFriendly.insert(Values("std::shared_ptr<Foo>", "FooSharedPtr"));
0090 classToFriendly.insert(Values("std::shared_ptr<bar::Foo>", "barFooSharedPtr"));
0091 classToFriendly.insert(Values("std::basic_string<char>", "String"));
0092 classToFriendly.insert(Values("std::string", "String"));
0093 classToFriendly.insert(Values("std::__cxx11::basic_string<char>", "String"));
0094 classToFriendly.insert(Values("std::__cxx11::basic_string<char,std::char_traits<char> >", "String"));
0095 classToFriendly.insert(Values("std::list<int>", "intstdlist"));
0096 classToFriendly.insert(Values("std::__cxx11::list<int>", "intstdlist"));
0097 classToFriendly.insert(Values("std::vector<std::shared_ptr<bar::Foo>>", "barFooSharedPtrs"));
0098 classToFriendly.insert(Values("std::vector<std::basic_string<char>>", "Strings"));
0099 classToFriendly.insert(Values("std::__cxx11::vector<std::__cxx11::basic_string<char>>", "Strings"));
0100 classToFriendly.insert(Values("std::unique_ptr<Foo>", "FooUniquePtr"));
0101 classToFriendly.insert(Values("std::unique_ptr<bar::Foo>", "barFooUniquePtr"));
0102 classToFriendly.insert(Values("std::unique_ptr<const Foo>", "constFooUniquePtr"));
0103 classToFriendly.insert(Values("const std::unique_ptr<Foo>", "FooconstUniquePtr"));
0104 classToFriendly.insert(Values("std::unique_ptr<Foo,std::default_delete<Foo>>", "FooUniquePtr"));
0105 classToFriendly.insert(Values("std::unique_ptr<const Foo, std::default_delete<const Foo>>", "constFooUniquePtr"));
0106 classToFriendly.insert(
0107 Values("std::unique_ptr<std::unique_ptr<Bar,std::default_delete<Bar>>,std::default_delete<std::unique_ptr<Bar,"
0108 "std::default_delete<Bar>>>>",
0109 "BarUniquePtrUniquePtr"));
0110 classToFriendly.insert(Values("std::vector<std::unique_ptr<bar::Foo>>", "barFooUniquePtrs"));
0111 classToFriendly.insert(
0112 Values("std::vector<std::unique_ptr<bar::Foo, std::default_delete<bar::Foo>>>", "barFooUniquePtrs"));
0113 classToFriendly.insert(Values("std::vector<std::unique_ptr<const Foo>>", "constFooUniquePtrs"));
0114 classToFriendly.insert(
0115 Values("std::unique_ptr<std::vector<std::unique_ptr<bar::Foo>>>", "barFooUniquePtrsUniquePtr"));
0116 classToFriendly.insert(
0117 Values("std::unique_ptr<std::vector<std::unique_ptr<bar::Foo>>, "
0118 "std::default_delete<std::vector<std::unique_ptr<bar::Foo>>>>",
0119 "barFooUniquePtrsUniquePtr"));
0120 classToFriendly.insert(
0121 Values("std::unique_ptr<std::vector<std::unique_ptr<bar::Foo, std::default_delete<bar::Foo>>>>",
0122 "barFooUniquePtrsUniquePtr"));
0123 classToFriendly.insert(
0124 Values("std::unique_ptr<std::vector<std::unique_ptr<bar::Foo, std::default_delete<bar::Foo>>>, "
0125 "std::default_delete<std::vector<std::unique_ptr<bar::Foo, std::default_delete<bar::Foo>>>>>",
0126 "barFooUniquePtrsUniquePtr"));
0127 classToFriendly.insert(Values("V<A,B>", "ABV"));
0128 classToFriendly.insert(Values("edm::ExtCollection<std::vector<reco::SuperCluster>,reco::SuperClusterRefProds>",
0129 "recoSuperClustersrecoSuperClusterRefProdsedmExtCollection"));
0130 classToFriendly.insert(
0131 Values("edm::SortedCollection<EcalUncalibratedRecHit,edm::StrictWeakOrdering<EcalUncalibratedRecHit> >",
0132 "EcalUncalibratedRecHitsSorted"));
0133 classToFriendly.insert(
0134 Values("edm::OwnVector<aod::Candidate,edm::ClonePolicy<aod::Candidate> >", "aodCandidatesOwned"));
0135 classToFriendly.insert(Values("edm::OwnVector<Foo,edm::ClonePolicy<Foo> >", "FoosOwned"));
0136 classToFriendly.insert(Values("edm::OwnVector<My<int>, edm::ClonePolicy<My<int> > >", "intMysOwned"));
0137 classToFriendly.insert(Values("std::vector<edm::OwnVector<My<int>, edm::ClonePolicy<My<int> > > >", "intMysOwneds"));
0138 classToFriendly.insert(
0139 Values("edm::Wrapper<MuonDigiCollection<CSCDetId,CSCALCTDigi> >", "CSCDetIdCSCALCTDigiMuonDigiCollection"));
0140 classToFriendly.insert(
0141 Values("edm::AssociationMap<edm::OneToMany<std::vector<CaloJet>,std::vector<reco::Track>,unsigned int> >",
0142 "CaloJetsToManyrecoTracksAssociation"));
0143 classToFriendly.insert(
0144 Values("edm::AssociationMap<edm::OneToOne<std::vector<reco::Track>,std::vector<reco::TrackInfo>,unsigned int> >",
0145 "recoTracksToOnerecoTrackInfosAssociation"));
0146 classToFriendly.insert(Values("edm::AssociationMap<edm::OneToValue<std::vector<reco::Electron>,float,unsigned int> >",
0147 "recoElectronsToValuefloatAssociation"));
0148 classToFriendly.insert(
0149 Values("edm::AssociationMap<edm::OneToManyWithQuality<edm::OwnVector<reco::Candidate,edm::ClonePolicy<reco::"
0150 "Candidate> >,edm::OwnVector<reco::Candidate,edm::ClonePolicy<reco::Candidate> >,double,unsigned int> >",
0151 "recoCandidatesOwnedToManyrecoCandidatesOwnedWithQuantitydoubleAssociation"));
0152 classToFriendly.insert(
0153 Values("edm::AssociationVector<edm::RefProd<std::vector<reco::CaloJet> "
0154 ">,std::vector<int>,edm::Ref<std::vector<reco::CaloJet>,reco::CaloJet,edm::refhelper::FindUsingAdvance<"
0155 "std::vector<reco::CaloJet>,reco::CaloJet> >,unsigned int,edm::helper::AssociationIdenticalKeyReference>",
0156 "recoCaloJetsedmRefProdTointsAssociationVector"));
0157 classToFriendly.insert(
0158 Values("edm::AssociationVector<edm::RefProd<edm::OwnVector<reco::Candidate,edm::ClonePolicy<reco::Candidate> > "
0159 ">,std::vector<double>,edm::Ref<edm::OwnVector<reco::Candidate,edm::ClonePolicy<reco::Candidate> "
0160 ">,reco::Candidate,edm::refhelper::FindUsingAdvance<edm::OwnVector<reco::Candidate,edm::ClonePolicy<reco::"
0161 "Candidate> >,reco::Candidate> >,unsigned int,edm::helper::AssociationIdenticalKeyReference>",
0162 "recoCandidatesOwnededmRefProdTodoublesAssociationVector"));
0163 classToFriendly.insert(
0164 Values("edm::AssociationMap<edm::OneToOne<std::vector<reco::Track>,std::vector<std::pair<double,double> "
0165 ">,unsigned int> >",
0166 "recoTracksToOnedoubledoublestdpairsAssociation"));
0167 classToFriendly.insert(
0168 Values("edm::AssociationMap<edm::OneToOne<std::vector<reco::Track>,std::vector<std::pair<Point3DBase<float,"
0169 "GlobalTag>,GlobalErrorBase<double,ErrorMatrixTag> > >,unsigned int> >",
0170 "recoTracksToOnefloatGlobalTagPoint3DBasedoubleErrorMatrixTagGlobalErrorBasestdpairsAssociation"));
0171 classToFriendly.insert(Values("A<B<C>, D<E> >", "CBEDA"));
0172 classToFriendly.insert(Values("A<B<C<D> > >", "DCBA"));
0173 classToFriendly.insert(Values("A<B<C,D>, E<F> >", "CDBFEA"));
0174 classToFriendly.insert(Values("Aa<Bb<Cc>, Dd<Ee> >", "CcBbEeDdAa"));
0175 classToFriendly.insert(Values("Aa<Bb<Cc<Dd> > >", "DdCcBbAa"));
0176 classToFriendly.insert(Values("Aa<Bb<Cc,Dd>, Ee<Ff> >", "CcDdBbFfEeAa"));
0177 classToFriendly.insert(Values("Aa<Bb<Cc,Dd>, Ee<Ff,Gg> >", "CcDdBbFfGgEeAa"));
0178 classToFriendly.insert(
0179 Values("edm::RangeMap<DetId,edm::OwnVector<SiPixelRecHit,edm::ClonePolicy<SiPixelRecHit> "
0180 ">,edm::ClonePolicy<SiPixelRecHit> >",
0181 "DetIdSiPixelRecHitsOwnedRangeMap"));
0182 classToFriendly.insert(
0183 Values("std::vector<edm::RangeMap<DetId,edm::OwnVector<SiPixelRecHit,edm::ClonePolicy<SiPixelRecHit> "
0184 ">,edm::ClonePolicy<SiPixelRecHit> > >",
0185 "DetIdSiPixelRecHitsOwnedRangeMaps"));
0186 classToFriendly.insert(
0187 Values("edm::RefVector< edm::OwnVector<reco::Candidate,edm::ClonePolicy<reco::Candidate> >,reco::Candidate, "
0188 "edm::refhelper::FindUsingAdvance<edm::OwnVector<reco::Candidate,edm::ClonePolicy<reco::Candidate> >, "
0189 "reco::Candidate> >",
0190 "recoCandidatesOwnedRefs"));
0191 classToFriendly.insert(
0192 Values("edm::RefVector< std::vector<reco::Track>, reco::Track, "
0193 "edm::refhelper::FindUsingAdvance<std::vector<reco::Track>, reco::Track> >",
0194 "recoTracksRefs"));
0195 classToFriendly.insert(
0196 Values("edm::RefVector<Col, Type, edm::refhelper::FindUsingAdvance<Col, Type> >", "ColTypeRefs"));
0197 classToFriendly.insert(
0198 Values("edm::AssociationMap<edm::OneToMany<std::vector<reco::PixelMatchGsfElectron>,edm::SortedCollection<"
0199 "EcalRecHit,edm::StrictWeakOrdering<EcalRecHit> >,unsigned int> >",
0200 "recoPixelMatchGsfElectronsToManyEcalRecHitsSortedAssociation"));
0201 classToFriendly.insert(
0202 Values("edm::AssociationVector<edm::RefToBaseProd<reco::Candidate>,std::vector<double>,edm::RefToBase<reco::"
0203 "Candidate>,unsigned int,edm::helper::AssociationIdenticalKeyReference>",
0204 "recoCandidateedmRefToBaseProdTodoublesAssociationVector"));
0205 classToFriendly.insert(
0206 Values("edm::RefVector<edm::AssociationMap<edm::OneToOne<std::vector<reco::BasicCluster>,std::vector<reco::"
0207 "ClusterShape>,unsigned int> "
0208 ">,edm::helpers::KeyVal<edm::Ref<std::vector<reco::BasicCluster>,reco::BasicCluster,edm::refhelper::"
0209 "FindUsingAdvance<std::vector<reco::BasicCluster>,reco::BasicCluster> "
0210 ">,edm::Ref<std::vector<reco::ClusterShape>,reco::ClusterShape,edm::refhelper::FindUsingAdvance<std::"
0211 "vector<reco::ClusterShape>,reco::ClusterShape> > "
0212 ">,edm::AssociationMap<edm::OneToOne<std::vector<reco::BasicCluster>,std::vector<reco::ClusterShape>,"
0213 "unsigned int> >::Find>",
0214 "recoBasicClustersToOnerecoClusterShapesAssociationRefs"));
0215 classToFriendly.insert(
0216 Values("edmNew::DetSetVector<edm::Ref<edmNew::DetSetVector<SiPixelCluster>,SiPixelCluster,edmNew::DetSetVector<"
0217 "SiPixelCluster>::FindForDetSetVector> >",
0218 "SiPixelClusteredmNewDetSetVectorSiPixelClusterSiPixelClusteredmNewDetSetVectorFindForDetSetVectoredmRefed"
0219 "mNewDetSetVector"));
0220 classToFriendly.insert(
0221 Values("std::vector<std::pair<const pat::Muon *, TLorentzVector>>", "constpatMuonptrTLorentzVectorstdpairs"));
0222 classToFriendly.insert(Values("int[]", "intAs"));
0223 classToFriendly.insert(Values("foo<int[]>", "intAsfoo"));
0224 classToFriendly.insert(Values("bar<foo<int[]>>", "intAsfoobar"));
0225
0226
0227 classToFriendly.insert(Values("alpaka::DevCpu", "alpakaDevCpu"));
0228 classToFriendly.insert(Values("alpaka::DevUniformCudaHipRt<alpaka::ApiCudaRt>", "alpakaDevCudaRt"));
0229 classToFriendly.insert(Values("alpaka::DevUniformCudaHipRt<alpaka::ApiHipRt>", "alpakaDevHipRt"));
0230 classToFriendly.insert(Values("alpaka::QueueGenericThreadsBlocking<alpaka::DevCpu>", "alpakaQueueCpuBlocking"));
0231 classToFriendly.insert(Values("alpaka::QueueGenericThreadsNonBlocking<alpaka::DevCpu>", "alpakaQueueCpuNonBlocking"));
0232 classToFriendly.insert(Values("alpaka::uniform_cuda_hip::detail::QueueUniformCudaHipRt<alpaka::ApiCudaRt,true>",
0233 "alpakaQueueCudaRtBlocking"));
0234 classToFriendly.insert(Values("alpaka::uniform_cuda_hip::detail::QueueUniformCudaHipRt<alpaka::ApiCudaRt,false>",
0235 "alpakaQueueCudaRtNonBlocking"));
0236 classToFriendly.insert(Values("alpaka::uniform_cuda_hip::detail::QueueUniformCudaHipRt<alpaka::ApiHipRt,true>",
0237 "alpakaQueueHipRtBlocking"));
0238 classToFriendly.insert(Values("alpaka::uniform_cuda_hip::detail::QueueUniformCudaHipRt<alpaka::ApiHipRt,false>",
0239 "alpakaQueueHipRtNonBlocking"));
0240
0241 for (std::map<std::string, std::string>::iterator itInfo = classToFriendly.begin(), itInfoEnd = classToFriendly.end();
0242 itInfo != itInfoEnd;
0243 ++itInfo) {
0244
0245 if (itInfo->second != edm::friendlyname::friendlyName(itInfo->first)) {
0246 std::cout << "class name: '" << itInfo->first << "' has wrong friendly name \n"
0247 << "expect: '" << itInfo->second << "' got: '" << edm::friendlyname::friendlyName(itInfo->first) << "'"
0248 << std::endl;
0249 CPPUNIT_ASSERT(0 && "expected friendly name does not match actual friendly name");
0250 }
0251 }
0252 }