Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:02:08

0001 #include "CondFormats/DTObjects/interface/DTBufferTree.h"
0002 
0003 #include <cassert>
0004 #include <iostream>
0005 #include <memory>
0006 
0007 int main() {
0008   std::cout << "testDTBufferTree\n";
0009 
0010   DTBufferTree<int, int> buf;
0011   DTBufferTree<int, int> const* pBuf = &buf;
0012   std::vector<int> keys;
0013 
0014   int i;
0015   assert(buf.find(keys.end(), keys.end(), i) == 0);
0016   assert(i == 0);
0017   keys.push_back(1);
0018   assert(buf.find(keys.begin(), keys.end(), i) == 1);
0019   assert(i == 0);
0020   assert(buf.find(1, i) == 1);
0021   assert(i == 0);
0022 
0023   assert(pBuf->find(keys.end(), keys.end(), i) == 0);
0024   assert(i == 0);
0025   assert(pBuf->find(keys.begin(), keys.end(), i) == 1);
0026   assert(i == 0);
0027   assert(pBuf->find(1, i) == 1);
0028   assert(i == 0);
0029 
0030   keys.push_back(2);
0031   keys.push_back(3);
0032   assert(buf.insert(keys.begin(), keys.end(), 11) == 0);
0033   assert(buf.find(keys.begin(), keys.end(), i) == 0);
0034   assert(i == 11);
0035   assert(pBuf->find(keys.begin(), keys.end(), i) == 0);
0036   assert(i == 11);
0037 
0038   assert(buf.insert(keys.begin(), keys.end(), 12) == 1);
0039   assert(buf.find(keys.begin(), keys.end(), i) == 0);
0040   assert(i == 12);
0041   assert(pBuf->find(keys.begin(), keys.end(), i) == 0);
0042   assert(i == 12);
0043 
0044   assert(buf.insert(100, 111) == 0);
0045   assert(buf.find(100, i) == 0);
0046   assert(i == 111);
0047   assert(pBuf->find(100, i) == 0);
0048   assert(i == 111);
0049 
0050   assert(buf.insert(100, 112) == 1);
0051   assert(buf.find(100, i) == 0);
0052   assert(i == 112);
0053   assert(pBuf->find(100, i) == 0);
0054   assert(i == 112);
0055 
0056   assert(buf.insert(keys.end(), keys.end(), 1000) == 1);
0057   assert(buf.find(keys.end(), keys.end(), i) == 0);
0058   assert(i == 1000);
0059   assert(pBuf->find(keys.end(), keys.end(), i) == 0);
0060   assert(i == 1000);
0061 
0062   buf.clear();
0063   assert(buf.find(keys.end(), keys.end(), i) == 0);
0064   assert(i == 0);
0065   assert(pBuf->find(keys.end(), keys.end(), i) == 0);
0066   assert(i == 0);
0067   assert(buf.find(keys.begin(), keys.end(), i) == 1);
0068   assert(i == 0);
0069   assert(pBuf->find(keys.begin(), keys.end(), i) == 1);
0070   assert(i == 0);
0071 
0072   assert(buf.insert(keys.begin(), keys.end(), 7) == 0);
0073   assert(buf.find(keys.begin(), keys.end(), i) == 0);
0074   assert(i == 7);
0075 
0076   // ********************************************
0077   // Repeat with unique_ptr template parameter
0078   // Running this under valgrind checks for leaks
0079   // (which was done when the test was created)
0080 
0081   DTBufferTreeUniquePtr buf2;
0082   DTBufferTreeUniquePtr const* pBuf2 = &buf2;
0083 
0084   keys.clear();
0085   std::vector<int> v;
0086   std::vector<int>* ptr = &v;
0087   std::vector<int> const* cptr = &v;
0088   assert(buf2.find(keys.end(), keys.end(), ptr) == 0);
0089   assert(ptr == nullptr);
0090   keys.push_back(1);
0091   assert(buf2.find(keys.begin(), keys.end(), ptr) == 1);
0092   assert(ptr == nullptr);
0093   assert(buf2.find(1, ptr) == 1);
0094   assert(ptr == nullptr);
0095 
0096   assert(pBuf2->find(keys.end(), keys.end(), cptr) == 0);
0097   assert(cptr == nullptr);
0098   assert(pBuf2->find(keys.begin(), keys.end(), cptr) == 1);
0099   assert(cptr == nullptr);
0100   assert(pBuf2->find(1, cptr) == 1);
0101   assert(cptr == nullptr);
0102 
0103   keys.push_back(2);
0104   keys.push_back(3);
0105   std::unique_ptr<std::vector<int> > uptr(new std::vector<int>);
0106   uptr->push_back(101);
0107   uptr->push_back(102);
0108   assert(buf2.insert(keys.begin(), keys.end(), std::move(uptr)) == 0);
0109   assert(buf2.find(keys.begin(), keys.end(), ptr) == 0);
0110   assert(ptr->at(0) == 101 && ptr->at(1) == 102);
0111   ptr->push_back(103);
0112   assert(pBuf2->find(keys.begin(), keys.end(), cptr) == 0);
0113   assert(cptr->at(0) == 101 && cptr->at(1) == 102 && cptr->at(2) == 103);
0114 
0115   std::unique_ptr<std::vector<int> > uptr2(new std::vector<int>);
0116   uptr2->push_back(21);
0117   assert(buf2.insert(keys.begin(), keys.end(), std::move(uptr2)) == 1);
0118   assert(buf2.find(keys.begin(), keys.end(), ptr) == 0);
0119   assert(ptr->at(0) == 21);
0120   assert(pBuf2->find(keys.begin(), keys.end(), cptr) == 0);
0121   assert(cptr->at(0) == 21);
0122 
0123   std::unique_ptr<std::vector<int> > uptr3(new std::vector<int>);
0124   uptr3->push_back(31);
0125   assert(buf2.insert(100, std::move(uptr3)) == 0);
0126   assert(buf2.find(100, ptr) == 0);
0127   assert(ptr->at(0) == 31);
0128   assert(pBuf2->find(100, cptr) == 0);
0129   assert(cptr->at(0) == 31);
0130 
0131   std::unique_ptr<std::vector<int> > uptr4(new std::vector<int>);
0132   uptr4->push_back(41);
0133   assert(buf2.insert(100, std::move(uptr4)) == 1);
0134   assert(buf2.find(100, ptr) == 0);
0135   assert(ptr->at(0) == 41);
0136   assert(pBuf2->find(100, cptr) == 0);
0137   assert(cptr->at(0) == 41);
0138 
0139   std::unique_ptr<std::vector<int> > uptr5(new std::vector<int>);
0140   uptr5->push_back(51);
0141   assert(buf2.insert(keys.end(), keys.end(), std::move(uptr5)) == 1);
0142   assert(buf2.find(keys.end(), keys.end(), ptr) == 0);
0143   assert(ptr->at(0) == 51);
0144   assert(pBuf2->find(keys.end(), keys.end(), cptr) == 0);
0145   assert(cptr->at(0) == 51);
0146 
0147   buf2.clear();
0148   assert(buf2.find(keys.end(), keys.end(), ptr) == 0);
0149   assert(ptr == nullptr);
0150   assert(pBuf2->find(keys.end(), keys.end(), cptr) == 0);
0151   assert(cptr == nullptr);
0152   assert(buf2.find(keys.begin(), keys.end(), ptr) == 1);
0153   assert(ptr == nullptr);
0154   assert(pBuf2->find(keys.begin(), keys.end(), cptr) == 1);
0155   assert(cptr == nullptr);
0156 
0157   std::unique_ptr<std::vector<int> > uptr6(new std::vector<int>);
0158   uptr6->push_back(61);
0159   assert(buf2.insert(keys.begin(), keys.end(), std::move(uptr6)) == 0);
0160   assert(buf2.find(keys.begin(), keys.end(), ptr) == 0);
0161   assert(ptr->at(0) == 61);
0162 }