File indexing completed on 2023-03-17 10:51:13
0001
0002
0003
0004
0005 #include "cppunit/extensions/HelperMacros.h"
0006
0007 #include "DataFormats/Provenance/interface/ProcessHistoryID.h"
0008 #include "DataFormats/Provenance/interface/ProcessConfiguration.h"
0009 #include "DataFormats/Provenance/interface/ProcessHistory.h"
0010
0011 #include "DataFormats/Provenance/interface/IndexIntoFile.h"
0012
0013 #include <string>
0014 #include <iostream>
0015 #include <memory>
0016
0017 using namespace edm;
0018
0019 class TestIndexIntoFile4 : public CppUnit::TestFixture {
0020 CPPUNIT_TEST_SUITE(TestIndexIntoFile4);
0021 CPPUNIT_TEST(testFind);
0022 CPPUNIT_TEST_SUITE_END();
0023
0024 public:
0025 static const IndexIntoFile::EntryType kRun = IndexIntoFile::kRun;
0026 static const IndexIntoFile::EntryType kLumi = IndexIntoFile::kLumi;
0027 static const IndexIntoFile::EntryType kEvent = IndexIntoFile::kEvent;
0028 static const IndexIntoFile::EntryType kEnd = IndexIntoFile::kEnd;
0029
0030 class Skipped {
0031 public:
0032 Skipped() : phIndexOfSkippedEvent_(0), runOfSkippedEvent_(0), lumiOfSkippedEvent_(0), skippedEventEntry_(0) {}
0033 int phIndexOfSkippedEvent_;
0034 RunNumber_t runOfSkippedEvent_;
0035 LuminosityBlockNumber_t lumiOfSkippedEvent_;
0036 IndexIntoFile::EntryNumber_t skippedEventEntry_;
0037 };
0038
0039 Skipped skipped_;
0040
0041 void setUp() {
0042
0043 nullPHID = ProcessHistoryID();
0044
0045 ProcessConfiguration pc;
0046 auto processHistory1 = std::make_unique<ProcessHistory>();
0047 ProcessHistory& ph1 = *processHistory1;
0048 processHistory1->push_back(pc);
0049 fakePHID1 = ph1.id();
0050
0051 auto processHistory2 = std::make_unique<ProcessHistory>();
0052 ProcessHistory& ph2 = *processHistory2;
0053 processHistory2->push_back(pc);
0054 processHistory2->push_back(pc);
0055 fakePHID2 = ph2.id();
0056
0057 auto processHistory3 = std::make_unique<ProcessHistory>();
0058 ProcessHistory& ph3 = *processHistory3;
0059 processHistory3->push_back(pc);
0060 processHistory3->push_back(pc);
0061 processHistory3->push_back(pc);
0062 fakePHID3 = ph3.id();
0063 }
0064
0065 void tearDown() {}
0066
0067 void testFind();
0068 void testReduce();
0069
0070 ProcessHistoryID nullPHID;
0071 ProcessHistoryID fakePHID1;
0072 ProcessHistoryID fakePHID2;
0073 ProcessHistoryID fakePHID3;
0074
0075 void check(edm::IndexIntoFile::IndexIntoFileItr const& iter,
0076 IndexIntoFile::EntryType type,
0077 int indexToRun,
0078 int indexToLumi,
0079 int indexToEventRange,
0080 long long indexToEvent,
0081 long long nEvents);
0082
0083 void checkSkipped(int phIndexOfSkippedEvent,
0084 RunNumber_t runOfSkippedEvent,
0085 LuminosityBlockNumber_t lumiOfSkippedEvent,
0086 IndexIntoFile::EntryNumber_t skippedEventEntry);
0087
0088 void skipEventBackward(edm::IndexIntoFile::IndexIntoFileItr& iter);
0089
0090
0091 class TestEventFinder : public IndexIntoFile::EventFinder {
0092 public:
0093 explicit TestEventFinder() {}
0094 virtual ~TestEventFinder() {}
0095 virtual EventNumber_t getEventNumberOfEntry(IndexIntoFile::EntryNumber_t entry) const {
0096 return testData_.at(entry);
0097 }
0098 void push_back(EventNumber_t e) { testData_.push_back(e); }
0099
0100 private:
0101 std::vector<EventNumber_t> testData_;
0102 };
0103 };
0104
0105
0106 CPPUNIT_TEST_SUITE_REGISTRATION(TestIndexIntoFile4);
0107
0108 void TestIndexIntoFile4::check(edm::IndexIntoFile::IndexIntoFileItr const& iter,
0109 IndexIntoFile::EntryType type,
0110 int indexToRun,
0111 int indexToLumi,
0112 int indexToEventRange,
0113 long long indexToEvent,
0114 long long nEvents) {
0115 bool theyMatch = iter.getEntryType() == type && iter.type() == type && iter.indexToRun() == indexToRun &&
0116 iter.indexToLumi() == indexToLumi && iter.indexToEventRange() == indexToEventRange &&
0117 iter.indexToEvent() == indexToEvent && iter.nEvents() == nEvents;
0118 if (!theyMatch) {
0119 std::cout << "\nExpected " << type << " " << indexToRun << " " << indexToLumi << " " << indexToEventRange
0120 << " " << indexToEvent << " " << nEvents << "\n";
0121 std::cout << "Iterator values " << iter.type() << " " << iter.indexToRun() << " " << iter.indexToLumi() << " "
0122 << iter.indexToEventRange() << " " << iter.indexToEvent() << " " << iter.nEvents() << "\n";
0123 }
0124 CPPUNIT_ASSERT(theyMatch);
0125 }
0126
0127 void TestIndexIntoFile4::checkSkipped(int phIndexOfSkippedEvent,
0128 RunNumber_t runOfSkippedEvent,
0129 LuminosityBlockNumber_t lumiOfSkippedEvent,
0130 IndexIntoFile::EntryNumber_t skippedEventEntry) {
0131 bool theyMatch =
0132 skipped_.phIndexOfSkippedEvent_ == phIndexOfSkippedEvent && skipped_.runOfSkippedEvent_ == runOfSkippedEvent &&
0133 skipped_.lumiOfSkippedEvent_ == lumiOfSkippedEvent && skipped_.skippedEventEntry_ == skippedEventEntry;
0134
0135 if (!theyMatch) {
0136 std::cout << "\nExpected " << phIndexOfSkippedEvent << " " << runOfSkippedEvent << " "
0137 << lumiOfSkippedEvent << " " << skippedEventEntry << "\n";
0138 std::cout << "Actual " << skipped_.phIndexOfSkippedEvent_ << " " << skipped_.runOfSkippedEvent_ << " "
0139 << skipped_.lumiOfSkippedEvent_ << " " << skipped_.skippedEventEntry_ << "\n";
0140 }
0141 CPPUNIT_ASSERT(theyMatch);
0142 }
0143
0144 void TestIndexIntoFile4::skipEventBackward(edm::IndexIntoFile::IndexIntoFileItr& iter) {
0145 iter.skipEventBackward(skipped_.phIndexOfSkippedEvent_,
0146 skipped_.runOfSkippedEvent_,
0147 skipped_.lumiOfSkippedEvent_,
0148 skipped_.skippedEventEntry_);
0149 }
0150
0151 void TestIndexIntoFile4::testFind() {
0152 for (int j = 0; j < 2; ++j) {
0153 edm::IndexIntoFile indexIntoFile;
0154 indexIntoFile.addEntry(fakePHID1, 1, 0, 0, 0);
0155 indexIntoFile.addEntry(fakePHID1, 2, 12, 7, 0);
0156 indexIntoFile.addEntry(fakePHID1, 2, 12, 6, 1);
0157 indexIntoFile.addEntry(fakePHID1, 2, 12, 0, 0);
0158 indexIntoFile.addEntry(fakePHID1, 2, 12, 5, 2);
0159 indexIntoFile.addEntry(fakePHID1, 2, 12, 4, 3);
0160 indexIntoFile.addEntry(fakePHID1, 2, 12, 0, 1);
0161 indexIntoFile.addEntry(fakePHID1, 2, 0, 0, 1);
0162 indexIntoFile.addEntry(fakePHID2, 3, 0, 0, 2);
0163 indexIntoFile.addEntry(fakePHID2, 4, 12, 7, 4);
0164 indexIntoFile.addEntry(fakePHID2, 4, 12, 6, 5);
0165 indexIntoFile.addEntry(fakePHID2, 4, 12, 0, 2);
0166 indexIntoFile.addEntry(fakePHID2, 4, 12, 5, 6);
0167 indexIntoFile.addEntry(fakePHID2, 4, 12, 4, 7);
0168 indexIntoFile.addEntry(fakePHID2, 4, 12, 0, 3);
0169 indexIntoFile.addEntry(fakePHID2, 4, 0, 0, 3);
0170 indexIntoFile.addEntry(fakePHID3, 5, 0, 0, 4);
0171 indexIntoFile.addEntry(fakePHID3, 6, 12, 7, 8);
0172 indexIntoFile.addEntry(fakePHID3, 6, 12, 6, 9);
0173 indexIntoFile.addEntry(fakePHID3, 6, 12, 0, 4);
0174 indexIntoFile.addEntry(fakePHID3, 6, 100, 0, 5);
0175 indexIntoFile.addEntry(fakePHID3, 6, 0, 0, 5);
0176 indexIntoFile.sortVector_Run_Or_Lumi_Entries();
0177
0178 if (j == 0) {
0179 std::vector<IndexIntoFile::EventEntry>& eventEntries = indexIntoFile.eventEntries();
0180 eventEntries.emplace_back(7, 0);
0181 eventEntries.emplace_back(6, 1);
0182 eventEntries.emplace_back(5, 2);
0183 eventEntries.emplace_back(4, 3);
0184 eventEntries.emplace_back(7, 4);
0185 eventEntries.emplace_back(6, 5);
0186 eventEntries.emplace_back(5, 6);
0187 eventEntries.emplace_back(4, 7);
0188 eventEntries.emplace_back(7, 8);
0189 eventEntries.emplace_back(6, 9);
0190 indexIntoFile.sortEventEntries();
0191 } else if (j == 1) {
0192 std::vector<EventNumber_t>& eventNumbers = indexIntoFile.eventNumbers();
0193 eventNumbers.push_back(7);
0194 eventNumbers.push_back(6);
0195 eventNumbers.push_back(5);
0196 eventNumbers.push_back(4);
0197 eventNumbers.push_back(7);
0198 eventNumbers.push_back(6);
0199 eventNumbers.push_back(5);
0200 eventNumbers.push_back(4);
0201 eventNumbers.push_back(7);
0202 eventNumbers.push_back(6);
0203 indexIntoFile.sortEvents();
0204 }
0205
0206 TestEventFinder* ptr(new TestEventFinder);
0207 ptr->push_back(7);
0208 ptr->push_back(6);
0209 ptr->push_back(5);
0210 ptr->push_back(4);
0211 ptr->push_back(7);
0212 ptr->push_back(6);
0213 ptr->push_back(5);
0214 ptr->push_back(4);
0215 ptr->push_back(7);
0216 ptr->push_back(6);
0217 std::shared_ptr<IndexIntoFile::EventFinder> shptr(ptr);
0218 indexIntoFile.setEventFinder(shptr);
0219
0220 edm::IndexIntoFile::IndexIntoFileItr iter = indexIntoFile.findPosition(1000, 0, 0);
0221 CPPUNIT_ASSERT(iter == indexIntoFile.end(IndexIntoFile::numericalOrder));
0222
0223 iter = indexIntoFile.findPosition(2, 1, 0);
0224 CPPUNIT_ASSERT(iter == indexIntoFile.end(IndexIntoFile::numericalOrder));
0225
0226 iter = indexIntoFile.findPosition(2, 100, 0);
0227 CPPUNIT_ASSERT(iter == indexIntoFile.end(IndexIntoFile::numericalOrder));
0228
0229 iter = indexIntoFile.findPosition(6, 100, 1);
0230 CPPUNIT_ASSERT(iter == indexIntoFile.end(IndexIntoFile::numericalOrder));
0231
0232 iter = indexIntoFile.findPosition(2, 12, 3);
0233 CPPUNIT_ASSERT(iter == indexIntoFile.end(IndexIntoFile::numericalOrder));
0234
0235 iter = indexIntoFile.findPosition(2, 12, 8);
0236 CPPUNIT_ASSERT(iter == indexIntoFile.end(IndexIntoFile::numericalOrder));
0237
0238 iter = indexIntoFile.findPosition(1, 0, 1);
0239 CPPUNIT_ASSERT(iter == indexIntoFile.end(IndexIntoFile::numericalOrder));
0240
0241 iter = indexIntoFile.findPosition(6, 0, 100);
0242 CPPUNIT_ASSERT(iter == indexIntoFile.end(IndexIntoFile::numericalOrder));
0243
0244 iter = indexIntoFile.findPosition(6, 100, 0);
0245 CPPUNIT_ASSERT(iter.type() == kRun);
0246 CPPUNIT_ASSERT(iter.indexToRun() == 9);
0247 CPPUNIT_ASSERT(iter.indexToLumi() == 11);
0248 CPPUNIT_ASSERT(iter.indexToEventRange() == IndexIntoFile::invalidIndex);
0249 CPPUNIT_ASSERT(iter.indexToEvent() == 0);
0250 CPPUNIT_ASSERT(iter.nEvents() == 0);
0251
0252 iter = indexIntoFile.findPosition(1, 0, 0);
0253 edm::IndexIntoFile::IndexIntoFileItr iter1 = indexIntoFile.findPosition(1, 1, 0);
0254 edm::IndexIntoFile::IndexIntoFileItr iter2 = indexIntoFile.findPosition(1, 1, 1);
0255 CPPUNIT_ASSERT(iter1 == indexIntoFile.end(IndexIntoFile::numericalOrder));
0256 CPPUNIT_ASSERT(iter2 == indexIntoFile.end(IndexIntoFile::numericalOrder));
0257 CPPUNIT_ASSERT(iter.indexIntoFile() == &indexIntoFile);
0258 CPPUNIT_ASSERT(iter.size() == 12);
0259 CPPUNIT_ASSERT(iter.type() == kRun);
0260 CPPUNIT_ASSERT(iter.indexToRun() == 0);
0261 CPPUNIT_ASSERT(iter.indexToLumi() == IndexIntoFile::invalidIndex);
0262 CPPUNIT_ASSERT(iter.indexToEventRange() == IndexIntoFile::invalidIndex);
0263 CPPUNIT_ASSERT(iter.indexToEvent() == 0);
0264 CPPUNIT_ASSERT(iter.nEvents() == 0);
0265
0266 iter = indexIntoFile.findPosition(2, 0, 0);
0267 iter1 = indexIntoFile.findPosition(2, 12, 0);
0268 iter2 = indexIntoFile.findPosition(2, 12, 4);
0269 edm::IndexIntoFile::IndexIntoFileItr iter3 = indexIntoFile.findPosition(2, 0, 4);
0270 edm::IndexIntoFile::IndexIntoFileItr iter4 = indexIntoFile.findRunPosition(2);
0271 CPPUNIT_ASSERT(indexIntoFile.containsItem(2, 0, 0));
0272 CPPUNIT_ASSERT(!indexIntoFile.containsItem(2000, 0, 0));
0273 CPPUNIT_ASSERT(iter == iter1);
0274 CPPUNIT_ASSERT(iter == iter2);
0275 CPPUNIT_ASSERT(iter == iter3);
0276 CPPUNIT_ASSERT(iter == iter4);
0277 CPPUNIT_ASSERT(iter.type() == kRun);
0278 CPPUNIT_ASSERT(iter.indexToRun() == 1);
0279 CPPUNIT_ASSERT(iter.indexToLumi() == 2);
0280 CPPUNIT_ASSERT(iter.indexToEventRange() == 2);
0281 CPPUNIT_ASSERT(iter.indexToEvent() == 0);
0282 CPPUNIT_ASSERT(iter.nEvents() == 4);
0283
0284 iter = indexIntoFile.findPosition(3, 0, 0);
0285 iter1 = indexIntoFile.findPosition(3, 1, 0);
0286 iter2 = indexIntoFile.findPosition(3, 1, 1);
0287 CPPUNIT_ASSERT(iter1 == indexIntoFile.end(IndexIntoFile::numericalOrder));
0288 CPPUNIT_ASSERT(iter2 == indexIntoFile.end(IndexIntoFile::numericalOrder));
0289 CPPUNIT_ASSERT(iter.type() == kRun);
0290 CPPUNIT_ASSERT(iter.indexToRun() == 4);
0291 CPPUNIT_ASSERT(iter.indexToLumi() == IndexIntoFile::invalidIndex);
0292 CPPUNIT_ASSERT(iter.indexToEventRange() == IndexIntoFile::invalidIndex);
0293 CPPUNIT_ASSERT(iter.indexToEvent() == 0);
0294 CPPUNIT_ASSERT(iter.nEvents() == 0);
0295
0296 iter = indexIntoFile.findPosition(4, 0, 0);
0297 iter1 = indexIntoFile.findPosition(4, 12, 0);
0298 iter2 = indexIntoFile.findPosition(4, 12, 4);
0299 CPPUNIT_ASSERT(iter == iter1);
0300 CPPUNIT_ASSERT(iter == iter2);
0301 CPPUNIT_ASSERT(iter.type() == kRun);
0302 CPPUNIT_ASSERT(iter.indexToRun() == 5);
0303 CPPUNIT_ASSERT(iter.indexToLumi() == 6);
0304 CPPUNIT_ASSERT(iter.indexToEventRange() == 6);
0305 CPPUNIT_ASSERT(iter.indexToEvent() == 0);
0306 CPPUNIT_ASSERT(iter.nEvents() == 4);
0307
0308 iter = indexIntoFile.findPosition(5, 0, 0);
0309 iter1 = indexIntoFile.findPosition(5, 1, 0);
0310 iter2 = indexIntoFile.findPosition(5, 1, 1);
0311 CPPUNIT_ASSERT(iter1 == indexIntoFile.end(IndexIntoFile::numericalOrder));
0312 CPPUNIT_ASSERT(iter2 == indexIntoFile.end(IndexIntoFile::numericalOrder));
0313 CPPUNIT_ASSERT(iter.type() == kRun);
0314 CPPUNIT_ASSERT(iter.indexToRun() == 8);
0315 CPPUNIT_ASSERT(iter.indexToLumi() == IndexIntoFile::invalidIndex);
0316 CPPUNIT_ASSERT(iter.indexToEventRange() == IndexIntoFile::invalidIndex);
0317 CPPUNIT_ASSERT(iter.indexToEvent() == 0);
0318 CPPUNIT_ASSERT(iter.nEvents() == 0);
0319
0320 iter = indexIntoFile.findPosition(6, 0, 0);
0321 iter1 = indexIntoFile.findPosition(6, 12, 0);
0322 iter2 = indexIntoFile.findPosition(6, 12, 6);
0323 CPPUNIT_ASSERT(iter == iter1);
0324 CPPUNIT_ASSERT(iter == iter2);
0325 CPPUNIT_ASSERT(iter.type() == kRun);
0326 CPPUNIT_ASSERT(iter.indexToRun() == 9);
0327 CPPUNIT_ASSERT(iter.indexToLumi() == 10);
0328 CPPUNIT_ASSERT(iter.indexToEventRange() == 10);
0329 CPPUNIT_ASSERT(iter.indexToEvent() == 0);
0330 CPPUNIT_ASSERT(iter.nEvents() == 2);
0331
0332 iter = indexIntoFile.findPosition(2, 12, 5);
0333 iter1 = indexIntoFile.findPosition(2, 0, 5);
0334 iter2 = indexIntoFile.findPosition(IndexIntoFile::numericalOrder, 2, 0, 5);
0335 iter3 = indexIntoFile.findPosition(IndexIntoFile::firstAppearanceOrder, 2, 0, 5);
0336 CPPUNIT_ASSERT(iter == iter1);
0337 CPPUNIT_ASSERT(iter == iter2);
0338 CPPUNIT_ASSERT(iter != iter3);
0339 CPPUNIT_ASSERT(iter.type() == kRun);
0340 CPPUNIT_ASSERT(iter.indexToRun() == 1);
0341 CPPUNIT_ASSERT(iter.indexToLumi() == 2);
0342 CPPUNIT_ASSERT(iter.indexToEventRange() == 2);
0343 CPPUNIT_ASSERT(iter.indexToEvent() == 1);
0344 CPPUNIT_ASSERT(iter.nEvents() == 4);
0345 CPPUNIT_ASSERT(iter3.type() == kRun);
0346 CPPUNIT_ASSERT(iter3.indexToRun() == 1);
0347 CPPUNIT_ASSERT(iter3.indexToLumi() == 2);
0348 CPPUNIT_ASSERT(iter3.indexToEventRange() == 3);
0349 CPPUNIT_ASSERT(iter3.indexToEvent() == 0);
0350 CPPUNIT_ASSERT(iter3.nEvents() == 2);
0351
0352 iter3 = indexIntoFile.findPosition(IndexIntoFile::firstAppearanceOrder, 2, 0, 0);
0353 CPPUNIT_ASSERT(iter3.type() == kRun);
0354 CPPUNIT_ASSERT(iter3.indexToRun() == 1);
0355 CPPUNIT_ASSERT(iter3.indexToLumi() == 2);
0356 CPPUNIT_ASSERT(iter3.indexToEventRange() == 2);
0357 CPPUNIT_ASSERT(iter3.indexToEvent() == 0);
0358 CPPUNIT_ASSERT(iter3.nEvents() == 2);
0359
0360 iter3 = indexIntoFile.findPosition(IndexIntoFile::firstAppearanceOrder, 2, 12, 0);
0361 CPPUNIT_ASSERT(iter3.type() == kRun);
0362 CPPUNIT_ASSERT(iter3.indexToRun() == 1);
0363 CPPUNIT_ASSERT(iter3.indexToLumi() == 2);
0364 CPPUNIT_ASSERT(iter3.indexToEventRange() == 2);
0365 CPPUNIT_ASSERT(iter3.indexToEvent() == 0);
0366 CPPUNIT_ASSERT(iter3.nEvents() == 2);
0367
0368 iter3 = indexIntoFile.findPosition(IndexIntoFile::firstAppearanceOrder, 2, 12, 4);
0369 CPPUNIT_ASSERT(iter3.type() == kRun);
0370 CPPUNIT_ASSERT(iter3.indexToRun() == 1);
0371 CPPUNIT_ASSERT(iter3.indexToLumi() == 2);
0372 CPPUNIT_ASSERT(iter3.indexToEventRange() == 3);
0373 CPPUNIT_ASSERT(iter3.indexToEvent() == 1);
0374 CPPUNIT_ASSERT(iter3.nEvents() == 2);
0375
0376 iter = indexIntoFile.end(IndexIntoFile::firstAppearanceOrder);
0377 CPPUNIT_ASSERT(iter != iter3);
0378 iter.copyPosition(iter3);
0379 CPPUNIT_ASSERT(iter == iter3);
0380
0381 iter3 = indexIntoFile.findPosition(IndexIntoFile::firstAppearanceOrder, 6, 100, 0);
0382 CPPUNIT_ASSERT(iter3.type() == kRun);
0383 CPPUNIT_ASSERT(iter3.indexToRun() == 9);
0384 CPPUNIT_ASSERT(iter3.indexToLumi() == 11);
0385 CPPUNIT_ASSERT(iter3.indexToEventRange() == -1);
0386 CPPUNIT_ASSERT(iter3.indexToEvent() == 0);
0387 CPPUNIT_ASSERT(iter3.nEvents() == 0);
0388
0389 iter = indexIntoFile.findPosition(2, 12, 6);
0390 iter1 = indexIntoFile.findPosition(2, 0, 6);
0391 CPPUNIT_ASSERT(iter == iter1);
0392 CPPUNIT_ASSERT(iter.type() == kRun);
0393 CPPUNIT_ASSERT(iter.indexToRun() == 1);
0394 CPPUNIT_ASSERT(iter.indexToLumi() == 2);
0395 CPPUNIT_ASSERT(iter.indexToEventRange() == 2);
0396 CPPUNIT_ASSERT(iter.indexToEvent() == 2);
0397 CPPUNIT_ASSERT(iter.nEvents() == 4);
0398
0399 iter = indexIntoFile.findPosition(2, 12, 7);
0400 iter1 = indexIntoFile.findPosition(2, 0, 7);
0401 CPPUNIT_ASSERT(iter == iter1);
0402 CPPUNIT_ASSERT(iter.type() == kRun);
0403 CPPUNIT_ASSERT(iter.indexToRun() == 1);
0404 CPPUNIT_ASSERT(iter.indexToLumi() == 2);
0405 CPPUNIT_ASSERT(iter.indexToEventRange() == 2);
0406 CPPUNIT_ASSERT(iter.indexToEvent() == 3);
0407 CPPUNIT_ASSERT(iter.nEvents() == 4);
0408
0409 iter = indexIntoFile.findPosition(4, 12, 5);
0410 iter1 = indexIntoFile.findPosition(4, 0, 5);
0411 CPPUNIT_ASSERT(iter == iter1);
0412 CPPUNIT_ASSERT(iter.type() == kRun);
0413 CPPUNIT_ASSERT(iter.indexToRun() == 5);
0414 CPPUNIT_ASSERT(iter.indexToLumi() == 6);
0415 CPPUNIT_ASSERT(iter.indexToEventRange() == 6);
0416 CPPUNIT_ASSERT(iter.indexToEvent() == 1);
0417 CPPUNIT_ASSERT(iter.nEvents() == 4);
0418
0419 iter = indexIntoFile.findPosition(4, 12, 6);
0420 iter1 = indexIntoFile.findPosition(4, 0, 6);
0421 CPPUNIT_ASSERT(iter == iter1);
0422 CPPUNIT_ASSERT(iter.type() == kRun);
0423 CPPUNIT_ASSERT(iter.indexToRun() == 5);
0424 CPPUNIT_ASSERT(iter.indexToLumi() == 6);
0425 CPPUNIT_ASSERT(iter.indexToEventRange() == 6);
0426 CPPUNIT_ASSERT(iter.indexToEvent() == 2);
0427 CPPUNIT_ASSERT(iter.nEvents() == 4);
0428
0429 iter = indexIntoFile.findPosition(4, 12, 7);
0430 iter1 = indexIntoFile.findPosition(4, 0, 7);
0431 CPPUNIT_ASSERT(iter == iter1);
0432 CPPUNIT_ASSERT(iter.type() == kRun);
0433 CPPUNIT_ASSERT(iter.indexToRun() == 5);
0434 CPPUNIT_ASSERT(iter.indexToLumi() == 6);
0435 CPPUNIT_ASSERT(iter.indexToEventRange() == 6);
0436 CPPUNIT_ASSERT(iter.indexToEvent() == 3);
0437 CPPUNIT_ASSERT(iter.nEvents() == 4);
0438
0439 iter = indexIntoFile.findPosition(6, 12, 7);
0440 iter1 = indexIntoFile.findPosition(6, 0, 7);
0441 CPPUNIT_ASSERT(iter == iter1);
0442 CPPUNIT_ASSERT(iter.type() == kRun);
0443 CPPUNIT_ASSERT(iter.indexToRun() == 9);
0444 CPPUNIT_ASSERT(iter.indexToLumi() == 10);
0445 CPPUNIT_ASSERT(iter.indexToEventRange() == 10);
0446 CPPUNIT_ASSERT(iter.indexToEvent() == 1);
0447 CPPUNIT_ASSERT(iter.nEvents() == 2);
0448
0449 iter = indexIntoFile.findEventPosition(2, 12, 4);
0450 iter1 = indexIntoFile.findEventPosition(2, 0, 4);
0451 CPPUNIT_ASSERT(iter == iter1);
0452 CPPUNIT_ASSERT(iter.type() == kEvent);
0453 CPPUNIT_ASSERT(iter.indexToRun() == 1);
0454 CPPUNIT_ASSERT(iter.indexToLumi() == 3);
0455 CPPUNIT_ASSERT(iter.indexToEventRange() == 2);
0456 CPPUNIT_ASSERT(iter.indexToEvent() == 0);
0457 CPPUNIT_ASSERT(iter.nEvents() == 4);
0458
0459 iter = indexIntoFile.findEventPosition(2, 12, 7);
0460 iter1 = indexIntoFile.findEventPosition(2, 0, 7);
0461 CPPUNIT_ASSERT(indexIntoFile.containsItem(2, 12, 7));
0462 CPPUNIT_ASSERT(!indexIntoFile.containsItem(2, 12, 100));
0463 CPPUNIT_ASSERT(iter == iter1);
0464 CPPUNIT_ASSERT(iter.type() == kEvent);
0465 CPPUNIT_ASSERT(iter.indexToRun() == 1);
0466 CPPUNIT_ASSERT(iter.indexToLumi() == 3);
0467 CPPUNIT_ASSERT(iter.indexToEventRange() == 2);
0468 CPPUNIT_ASSERT(iter.indexToEvent() == 3);
0469 CPPUNIT_ASSERT(iter.nEvents() == 4);
0470
0471 iter = indexIntoFile.findEventPosition(2, 12, 100);
0472 iter1 = indexIntoFile.findEventPosition(2, 0, 100);
0473 CPPUNIT_ASSERT(iter == iter1);
0474 CPPUNIT_ASSERT(iter == indexIntoFile.end(IndexIntoFile::numericalOrder));
0475
0476 iter = indexIntoFile.findLumiPosition(2, 12);
0477 CPPUNIT_ASSERT(iter.type() == kLumi);
0478 CPPUNIT_ASSERT(iter.indexToRun() == 1);
0479 CPPUNIT_ASSERT(iter.indexToLumi() == 2);
0480 CPPUNIT_ASSERT(iter.indexToEventRange() == 2);
0481 CPPUNIT_ASSERT(iter.indexToEvent() == 0);
0482 CPPUNIT_ASSERT(iter.nEvents() == 4);
0483
0484 iter = indexIntoFile.findLumiPosition(2, 100);
0485 CPPUNIT_ASSERT(indexIntoFile.containsItem(2, 12, 0));
0486 CPPUNIT_ASSERT(!indexIntoFile.containsItem(2, 100, 0));
0487 CPPUNIT_ASSERT(iter == indexIntoFile.end(IndexIntoFile::numericalOrder));
0488
0489 if (j == 0) {
0490 edm::IndexIntoFile::IndexIntoFileItr iterFirst = indexIntoFile.begin(IndexIntoFile::firstAppearanceOrder);
0491 iterFirst.advanceToNextRun();
0492 iterFirst.advanceToNextRun();
0493
0494 skipEventBackward(iterFirst);
0495 checkSkipped(0, 2, 12, 3);
0496 check(iterFirst, kRun, 1, 2, 3, 1, 2);
0497
0498 edm::IndexIntoFile::IndexIntoFileItr iterNum = indexIntoFile.begin(IndexIntoFile::numericalOrder);
0499 iterNum.advanceToNextRun();
0500 iterNum.advanceToNextRun();
0501
0502 skipEventBackward(iterNum);
0503 checkSkipped(0, 2, 12, 0);
0504 check(iterNum, kRun, 1, 2, 2, 3, 4);
0505 }
0506 }
0507 }
0508
0509 void TestIndexIntoFile4::testReduce() {
0510
0511
0512 }