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
51
52
53
54
55
56
57
58
59
60
61
62
63
|
#include <vector>
#include "Utilities/Testing/interface/CppUnit_testdriver.icpp"
#include "cppunit/extensions/HelperMacros.h"
#include "DataFormats/Common/interface/Ref.h"
#include "DataFormats/Common/interface/RefVector.h"
class TestRefVector : public CppUnit::TestFixture {
CPPUNIT_TEST_SUITE(TestRefVector);
CPPUNIT_TEST(testIteration);
CPPUNIT_TEST_SUITE_END();
public:
TestRefVector() {}
~TestRefVector() {}
void setUp() {}
void tearDown() {}
void testIteration();
private:
};
CPPUNIT_TEST_SUITE_REGISTRATION(TestRefVector);
void TestRefVector::testIteration() {
typedef std::vector<double> product_t;
typedef edm::Ref<product_t> ref_t;
typedef edm::RefVector<product_t> refvec_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;
CPPUNIT_ASSERT(refvec.size() == 0);
CPPUNIT_ASSERT(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();
CPPUNIT_ASSERT(iter->id() == edm::ProductID(1, 1) && iter->key() == 0 && *(iter->get()) == 1.0);
++iter;
CPPUNIT_ASSERT(iter->id() == edm::ProductID(1, 1) && iter->key() == 2 && *(iter->get()) == 0.5);
++iter;
CPPUNIT_ASSERT(iter->id() == edm::ProductID(1, 1) && iter->key() == 3 && *(iter->get()) == 2.0);
++iter;
CPPUNIT_ASSERT(iter == refvec.end());
}
|