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 }