Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2025-06-17 01:30:10

0001 #include <vector>
0002 #include "catch.hpp"
0003 
0004 #include "DataFormats/Common/interface/Ref.h"
0005 #include "DataFormats/Common/interface/RefVector.h"
0006 
0007 TEST_CASE("RefVector", "[RefVector]") {
0008   SECTION("iteration") {
0009     using product_t = std::vector<double>;
0010     using ref_t = edm::Ref<product_t>;
0011     using refvec_t = edm::RefVector<product_t>;
0012 
0013     product_t product;
0014     product.push_back(1.0);
0015     product.push_back(100.0);
0016     product.push_back(0.5);
0017     product.push_back(2.0);
0018 
0019     refvec_t refvec;
0020     REQUIRE(refvec.size() == 0);
0021     REQUIRE(refvec.empty());
0022 
0023     ref_t ref0(edm::ProductID(1, 1), &product[0], 0);
0024     refvec.push_back(ref0);
0025 
0026     ref_t ref1(edm::ProductID(1, 1), &product[2], 2);
0027     refvec.push_back(ref1);
0028 
0029     ref_t ref2(edm::ProductID(1, 1), &product[3], 3);
0030     refvec.push_back(ref2);
0031 
0032     auto iter = refvec.begin();
0033     REQUIRE(iter->id() == edm::ProductID(1, 1));
0034     REQUIRE(iter->key() == 0);
0035     REQUIRE(*(iter->get()) == 1.0);
0036     ++iter;
0037 
0038     REQUIRE(iter->id() == edm::ProductID(1, 1));
0039     REQUIRE(iter->key() == 2);
0040     REQUIRE(*(iter->get()) == 0.5);
0041     ++iter;
0042 
0043     REQUIRE(iter->id() == edm::ProductID(1, 1));
0044     REQUIRE(iter->key() == 3);
0045     REQUIRE(*(iter->get()) == 2.0);
0046     ++iter;
0047 
0048     REQUIRE(iter == refvec.end());
0049   }
0050 }