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 }
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 }