Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:03:57

0001 #include "cppunit/extensions/HelperMacros.h"
0002 #include <algorithm>
0003 #include <iterator>
0004 #include <iostream>
0005 #include "DataFormats/Common/interface/AssociationMap.h"
0006 
0007 class testOneToManyAssociation : public CppUnit::TestFixture {
0008   CPPUNIT_TEST_SUITE(testOneToManyAssociation);
0009   CPPUNIT_TEST(checkAll);
0010   CPPUNIT_TEST_SUITE_END();
0011 
0012 public:
0013   void setUp() {}
0014   void tearDown() {}
0015   void checkAll();
0016   void dummy();
0017 };
0018 
0019 CPPUNIT_TEST_SUITE_REGISTRATION(testOneToManyAssociation);
0020 
0021 void testOneToManyAssociation::checkAll() {
0022   typedef std::vector<int> CKey;
0023   typedef std::vector<double> CVal;
0024   typedef edm::AssociationMap<edm::OneToMany<CKey, CVal, unsigned char> > Assoc;
0025   Assoc v;
0026   CPPUNIT_ASSERT(v.empty());
0027   CPPUNIT_ASSERT(v.size() == 0);
0028 }
0029 
0030 // just check that some stuff compiles
0031 void testOneToManyAssociation::dummy() {
0032   typedef std::vector<int> CKey;
0033   typedef std::vector<double> CVal;
0034   {
0035     typedef edm::AssociationMap<edm::OneToMany<CKey, CVal, unsigned char> > Assoc;
0036     Assoc v;
0037     v.insert(edm::Ref<CKey>(), edm::Ref<CVal>());
0038     v.insert(Assoc::value_type(edm::Ref<CKey>(), edm::RefVector<CVal>()));
0039     Assoc::const_iterator b = v.begin(), e = v.end();
0040     ++b;
0041     ++e;
0042     Assoc::const_iterator f = v.find(edm::Ref<CKey>());
0043     v.numberOfAssociations(edm::Ref<CKey>());
0044     const edm::RefVector<CVal>& x = v[edm::Ref<CKey>()];
0045     int n = x.size();
0046     ++f;
0047     n = v.numberOfAssociations(edm::Ref<CKey>());
0048     ++n;
0049     std::cout << "numberOfAssociations:" << n << std::endl;
0050     edm::Ref<Assoc> r;
0051     v[edm::Ref<CKey>()];
0052     v.erase(edm::Ref<CKey>());
0053     v.clear();
0054     CPPUNIT_ASSERT(v.size() == 0);
0055     v.post_insert();
0056   }
0057   {
0058     typedef edm::AssociationMap<edm::OneToManyWithQuality<CKey, CVal, double, unsigned char> > Assoc;
0059     Assoc v;
0060     v.insert(edm::Ref<CKey>(), std::make_pair(edm::Ref<CVal>(), 3.14));
0061     Assoc::const_iterator b = v.begin(), e = v.end();
0062     ++b;
0063     ++e;
0064     Assoc::const_iterator f = v.find(edm::Ref<CKey>());
0065     v.numberOfAssociations(edm::Ref<CKey>());
0066     const std::vector<std::pair<edm::Ref<CVal>, double> >& x = v[edm::Ref<CKey>()];
0067     int n = x.size();
0068     ++f;
0069     n = v.numberOfAssociations(edm::Ref<CKey>());
0070     ++n;
0071     std::cout << "numberOfAssociations:" << n << std::endl;
0072     edm::Ref<Assoc> r;
0073     v[edm::Ref<CKey>()];
0074     v.erase(edm::Ref<CKey>());
0075     v.clear();
0076     CPPUNIT_ASSERT(v.size() == 0);
0077     v.post_insert();
0078   }
0079 }