1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
#include <vector>
#include "catch.hpp"
#include "DataFormats/Common/interface/Ref.h"
#include "DataFormats/Common/interface/RefVector.h"
TEST_CASE("RefVector", "[RefVector]") {
SECTION("iteration") {
using product_t = std::vector<double>;
using ref_t = edm::Ref<product_t>;
using refvec_t = edm::RefVector<product_t>;
product_t product;
product.push_back(1.0);
product.push_back(100.0);
product.push_back(0.5);
product.push_back(2.0);
refvec_t refvec;
REQUIRE(refvec.size() == 0);
REQUIRE(refvec.empty());
ref_t ref0(edm::ProductID(1, 1), &product[0], 0);
refvec.push_back(ref0);
ref_t ref1(edm::ProductID(1, 1), &product[2], 2);
refvec.push_back(ref1);
ref_t ref2(edm::ProductID(1, 1), &product[3], 3);
refvec.push_back(ref2);
auto iter = refvec.begin();
REQUIRE(iter->id() == edm::ProductID(1, 1));
REQUIRE(iter->key() == 0);
REQUIRE(*(iter->get()) == 1.0);
++iter;
REQUIRE(iter->id() == edm::ProductID(1, 1));
REQUIRE(iter->key() == 2);
REQUIRE(*(iter->get()) == 0.5);
++iter;
REQUIRE(iter->id() == edm::ProductID(1, 1));
REQUIRE(iter->key() == 3);
REQUIRE(*(iter->get()) == 2.0);
++iter;
REQUIRE(iter == refvec.end());
}
}
|