Back to home page

Project CMSSW displayed by LXR

 
 

    


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

0001 #include "DataFormats/Common/interface/DetSetVectorNew.h"
0002 #include "FWCore/Utilities/interface/Exception.h"
0003 #include <iostream>
0004 #include <functional>
0005 #include "catch.hpp"
0006 
0007 namespace {
0008   struct T {
0009     float v;
0010   };
0011 }  // namespace
0012 
0013 typedef edmNew::DetSetVector<T> DSTV;
0014 typedef edmNew::DetSet<T> DST;
0015 typedef DSTV::FastFiller FF;
0016 
0017 TEST_CASE("test edmNew::DetSetVector", "[edmNew::DetSetVector]") {
0018   DSTV dstv;
0019 
0020   {
0021     FF ff(dstv, 1);
0022     ff.push_back(T());
0023     ff[0].v = 2.1;
0024   }
0025   {
0026     FF ff(dstv, 2);
0027     ff.push_back(T());
0028     ff.push_back(T());
0029   }
0030   REQUIRE(dstv.size() == 2);
0031   REQUIRE(dstv.dataSize() == 3);
0032   REQUIRE(dstv.detsetSize(0) == 1);
0033 
0034   DST d1 = *dstv.find(2);
0035   d1[0].v = 3.14;
0036   DST d2 = dstv.insert(4, 3);
0037   d2[0].v = 4.15;
0038 
0039   SECTION("iterator") {
0040     int i = 0;
0041     std::vector<float> values = {2.1, 3.14, 4.15};
0042     std::for_each(dstv.begin(), dstv.end(), [&i, &values](auto const& value) { REQUIRE(value[0].v == values[i++]); });
0043   }
0044 }