|
17 | 17 | #include <TH1.h> |
18 | 18 | #include <boost/container/flat_map.hpp> |
19 | 19 | #include <catch_amalgamated.hpp> |
| 20 | +#include "Framework/include/QualityControl/DataAdapters.inl" |
20 | 21 | #include "Framework/include/QualityControl/MonitorObject.h" |
21 | 22 | #include "QualityControl/Data.h" |
22 | 23 | #include "QualityControl/DataAdapters.h" |
@@ -85,13 +86,6 @@ TEST_CASE("Data - iterateByTypeAndFilter", "[Data]") |
85 | 86 | REQUIRE(count == 1); |
86 | 87 | } |
87 | 88 |
|
88 | | -struct Base { |
89 | | - int v; |
90 | | -}; |
91 | | - |
92 | | -struct Derived : public Base { |
93 | | -}; |
94 | | - |
95 | 89 | TEST_CASE("Data - iterateByTypeFilterAndTransform", "[Data]") |
96 | 90 | { |
97 | 91 |
|
@@ -119,53 +113,6 @@ TEST_CASE("Data - iterateByTypeFilterAndTransform", "[Data]") |
119 | 113 | REQUIRE(count == 1); |
120 | 114 | } |
121 | 115 |
|
122 | | -TEST_CASE("Data - Monitor adaptors MOs", "[Data]") |
123 | | -{ |
124 | | - auto* h1 = new TH1F("th11", "th11", 100, 0, 99); |
125 | | - std::shared_ptr<MonitorObject> mo1 = std::make_shared<MonitorObject>(h1, "taskname", "class1", "TST"); |
126 | | - |
127 | | - auto* h2 = new TH1F("th12", "th12", 100, 0, 99); |
128 | | - std::shared_ptr<MonitorObject> mo2 = std::make_shared<MonitorObject>(h2, "taskname", "class2", "TST"); |
129 | | - |
130 | | - std::map<std::string, std::shared_ptr<MonitorObject>> map; |
131 | | - map.emplace(mo1->getFullName(), mo1); |
132 | | - map.emplace(mo2->getFullName(), mo2); |
133 | | - |
134 | | - auto data = createData(map); |
135 | | - |
136 | | - REQUIRE(data.size() == 2); |
137 | | - |
138 | | - auto filteredHistos = iterateMOsFilterByNameAndTransform<TH1F>(data, "th11"); |
139 | | - REQUIRE(!filteredHistos.empty()); |
140 | | - size_t count{}; |
141 | | - for (const auto& histo1d : filteredHistos) { |
142 | | - REQUIRE(std::string_view{ histo1d.GetName() } == "th11"); |
143 | | - ++count; |
144 | | - } |
145 | | - REQUIRE(count == 1); |
146 | | -} |
147 | | - |
148 | | -TEST_CASE("Data - Monitor adaptors QOs", "[Data]") |
149 | | -{ |
150 | | - QualityObjectsMapType qoMap; |
151 | | - qoMap["1"] = std::make_shared<QualityObject>(Quality::Good, "1"); |
152 | | - qoMap["2"] = std::make_shared<QualityObject>(Quality::Good, "2"); |
153 | | - |
154 | | - auto data = createData(qoMap); |
155 | | - |
156 | | - REQUIRE(data.size() == 2); |
157 | | - |
158 | | - auto filteredObjects = data.iterateByType<QualityObject>(); |
159 | | - REQUIRE(!filteredObjects.empty()); |
160 | | - size_t count{}; |
161 | | - for (const auto& qo : filteredObjects) { |
162 | | - const auto& name = qo.getName(); |
163 | | - REQUIRE((name == "1" || name == "2")); |
164 | | - ++count; |
165 | | - } |
166 | | - REQUIRE(count == 2); |
167 | | -} |
168 | | - |
169 | 116 | TEST_CASE("Data - raw pointers", "[Data]") |
170 | 117 | { |
171 | 118 | Data data; |
@@ -279,6 +226,79 @@ TEMPLATE_TEST_CASE("Data - inserting and iterating MOs", "[.Data-benchmark]", st |
279 | 226 | data.insert(mo->getFullName(), mo); |
280 | 227 | } |
281 | 228 |
|
282 | | - REQUIRE(iterateMOsFilterByNameAndTransform<TH1F>(data, "notimportantname").empty()); |
| 229 | + REQUIRE(iterateMonitorObjects<TH1F>(data, "notimportantname").empty()); |
283 | 230 | }; |
284 | 231 | } |
| 232 | + |
| 233 | +TEST_CASE("Data adapters - helper functions") |
| 234 | +{ |
| 235 | + |
| 236 | + Data data; |
| 237 | + { |
| 238 | + for (size_t i{}; i != 10; ++i) { |
| 239 | + const auto iStr = std::to_string(i); |
| 240 | + const auto thName = std::string("TH1F_") + iStr; |
| 241 | + const auto moName = "testMO_" + iStr; |
| 242 | + auto* h = new TH1F(thName.c_str(), thName.c_str(), 100, 0, 99); |
| 243 | + data.insert(moName, std::make_shared<MonitorObject>(h, "taskname_" + iStr, "class1", "TST")); |
| 244 | + } |
| 245 | + |
| 246 | + auto* h = new TH1F("TH1F_duplicate", "TH1F_duplicate", 100, 0, 99); |
| 247 | + data.insert("testMO_duplicate", std::make_shared<MonitorObject>(h, "taskname_8", "class1", "TST")); |
| 248 | + |
| 249 | + data.insert("testQO_1", std::make_shared<QualityObject>(Quality::Good, "QO_1")); |
| 250 | + data.insert("testQO_2", std::make_shared<QualityObject>(Quality::Good, "QO_2")); |
| 251 | + } |
| 252 | + |
| 253 | + REQUIRE(data.size() == 13); |
| 254 | + |
| 255 | + SECTION("getMonitorObject") |
| 256 | + { |
| 257 | + const auto moOpt = getMonitorObject(data, "TH1F_1"); |
| 258 | + REQUIRE(moOpt.has_value()); |
| 259 | + REQUIRE(std::string_view(moOpt.value().get().GetName()) == "TH1F_1"); |
| 260 | + const auto th1Opt = getMonitorObject<TH1F>(data, "TH1F_8"); |
| 261 | + REQUIRE(th1Opt.has_value()); |
| 262 | + REQUIRE(std::string_view(th1Opt.value().get().GetName()) == "TH1F_8"); |
| 263 | + |
| 264 | + const auto moSpecificOpt = getMonitorObject(data, "TH1F_duplicate", "taskname_8"); |
| 265 | + REQUIRE(moSpecificOpt.has_value()); |
| 266 | + REQUIRE(moSpecificOpt.value().get().GetName() == std::string_view{ "TH1F_duplicate" }); |
| 267 | + REQUIRE(moSpecificOpt.value().get().getTaskName() == std::string_view{ "taskname_8" }); |
| 268 | + const auto th1SpecificOpt = getMonitorObject<TH1F>(data, "TH1F_duplicate", "taskname_8"); |
| 269 | + REQUIRE(th1SpecificOpt.has_value()); |
| 270 | + REQUIRE(th1SpecificOpt.value().get().GetName() == std::string_view{ "TH1F_duplicate" }); |
| 271 | + REQUIRE(!getMonitorObject<nonexistent>(data, "TH1F_duplicate", "taskname_8").has_value()); |
| 272 | + } |
| 273 | + |
| 274 | + SECTION("iterateMonitorObjects") |
| 275 | + { |
| 276 | + size_t count{}; |
| 277 | + for (auto& mo : iterateMonitorObjects(data)) { |
| 278 | + ++count; |
| 279 | + } |
| 280 | + REQUIRE(count == 11); |
| 281 | + |
| 282 | + count = 0; |
| 283 | + for (auto& mo : iterateMonitorObjects(data, "taskname_8")) { |
| 284 | + ++count; |
| 285 | + } |
| 286 | + REQUIRE(count == 2); |
| 287 | + } |
| 288 | + |
| 289 | + SECTION("getQualityObject") |
| 290 | + { |
| 291 | + const auto qoOpt = getQualityObject(data, "QO_1"); |
| 292 | + REQUIRE(qoOpt.has_value()); |
| 293 | + REQUIRE(std::string_view{ qoOpt.value().get().GetName() } == "QO_1"); |
| 294 | + } |
| 295 | + |
| 296 | + SECTION("iterateQualityObjects") |
| 297 | + { |
| 298 | + size_t count{}; |
| 299 | + for (const auto& qo : iterateQualityObjects(data)) { |
| 300 | + ++count; |
| 301 | + } |
| 302 | + REQUIRE(count == 2); |
| 303 | + } |
| 304 | +} |
0 commit comments