File indexing completed on 2023-03-17 10:51:14
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 TestIndexIntoFile : public CppUnit::TestFixture {
0020 CPPUNIT_TEST_SUITE(TestIndexIntoFile);
0021 CPPUNIT_TEST(testIterEndWithLumi);
0022 CPPUNIT_TEST(testIterEndWithRun);
0023 CPPUNIT_TEST(testIterLastLumiRangeNoEvents);
0024 CPPUNIT_TEST(testEmptyIndex);
0025 CPPUNIT_TEST(testSkip);
0026 CPPUNIT_TEST(testSkip2);
0027 CPPUNIT_TEST(testSkip3);
0028 CPPUNIT_TEST(testEndWithRun);
0029 CPPUNIT_TEST(testRunsNoEvents);
0030 CPPUNIT_TEST(testLumisNoEvents);
0031 CPPUNIT_TEST_SUITE_END();
0032
0033 public:
0034 static const IndexIntoFile::EntryType kRun = IndexIntoFile::kRun;
0035 static const IndexIntoFile::EntryType kLumi = IndexIntoFile::kLumi;
0036 static const IndexIntoFile::EntryType kEvent = IndexIntoFile::kEvent;
0037 static const IndexIntoFile::EntryType kEnd = IndexIntoFile::kEnd;
0038
0039 class Skipped {
0040 public:
0041 Skipped() : phIndexOfSkippedEvent_(0), runOfSkippedEvent_(0), lumiOfSkippedEvent_(0), skippedEventEntry_(0) {}
0042 int phIndexOfSkippedEvent_;
0043 RunNumber_t runOfSkippedEvent_;
0044 LuminosityBlockNumber_t lumiOfSkippedEvent_;
0045 IndexIntoFile::EntryNumber_t skippedEventEntry_;
0046 };
0047
0048 Skipped skipped_;
0049
0050 void setUp() {
0051
0052 nullPHID = ProcessHistoryID();
0053
0054 ProcessConfiguration pc;
0055 auto processHistory1 = std::make_unique<ProcessHistory>();
0056 ProcessHistory& ph1 = *processHistory1;
0057 processHistory1->push_back(pc);
0058 fakePHID1 = ph1.id();
0059
0060 auto processHistory2 = std::make_unique<ProcessHistory>();
0061 ProcessHistory& ph2 = *processHistory2;
0062 processHistory2->push_back(pc);
0063 processHistory2->push_back(pc);
0064 fakePHID2 = ph2.id();
0065
0066 auto processHistory3 = std::make_unique<ProcessHistory>();
0067 ProcessHistory& ph3 = *processHistory3;
0068 processHistory3->push_back(pc);
0069 processHistory3->push_back(pc);
0070 processHistory3->push_back(pc);
0071 fakePHID3 = ph3.id();
0072 }
0073
0074 void tearDown() {}
0075
0076 void testIterEndWithLumi();
0077 void testIterEndWithRun();
0078 void testIterLastLumiRangeNoEvents();
0079 void testEmptyIndex();
0080 void testSkip();
0081 void testSkip2();
0082 void testSkip3();
0083 void testEndWithRun();
0084 void testReduce();
0085 void testRunsNoEvents();
0086 void testLumisNoEvents();
0087
0088 ProcessHistoryID nullPHID;
0089 ProcessHistoryID fakePHID1;
0090 ProcessHistoryID fakePHID2;
0091 ProcessHistoryID fakePHID3;
0092
0093 void check(edm::IndexIntoFile::IndexIntoFileItr const& iter,
0094 IndexIntoFile::EntryType type,
0095 int indexToRun,
0096 int indexToLumi,
0097 int indexToEventRange,
0098 long long indexToEvent,
0099 long long nEvents);
0100
0101 void skipEventForward(edm::IndexIntoFile::IndexIntoFileItr& iter);
0102 void skipEventBackward(edm::IndexIntoFile::IndexIntoFileItr& iter);
0103 void checkSkipped(int phIndexOfSkippedEvent,
0104 RunNumber_t runOfSkippedEvent,
0105 LuminosityBlockNumber_t lumiOfSkippedEvent,
0106 IndexIntoFile::EntryNumber_t skippedEventEntry);
0107 };
0108
0109
0110 CPPUNIT_TEST_SUITE_REGISTRATION(TestIndexIntoFile);
0111
0112 void TestIndexIntoFile::check(edm::IndexIntoFile::IndexIntoFileItr const& iter,
0113 IndexIntoFile::EntryType type,
0114 int indexToRun,
0115 int indexToLumi,
0116 int indexToEventRange,
0117 long long indexToEvent,
0118 long long nEvents) {
0119 bool theyMatch = iter.getEntryType() == type && iter.type() == type && iter.indexToRun() == indexToRun &&
0120 iter.indexToLumi() == indexToLumi && iter.indexToEventRange() == indexToEventRange &&
0121 iter.indexToEvent() == indexToEvent && iter.nEvents() == nEvents;
0122 if (!theyMatch) {
0123 std::cout << "\nExpected " << type << " " << indexToRun << " " << indexToLumi << " " << indexToEventRange
0124 << " " << indexToEvent << " " << nEvents << std::endl;
0125 std::cout << "Iterator values " << iter.type() << " " << iter.indexToRun() << " " << iter.indexToLumi() << " "
0126 << iter.indexToEventRange() << " " << iter.indexToEvent() << " " << iter.nEvents() << std::endl;
0127 }
0128 CPPUNIT_ASSERT(theyMatch);
0129 }
0130
0131 void TestIndexIntoFile::checkSkipped(int phIndexOfSkippedEvent,
0132 RunNumber_t runOfSkippedEvent,
0133 LuminosityBlockNumber_t lumiOfSkippedEvent,
0134 IndexIntoFile::EntryNumber_t skippedEventEntry) {
0135 bool theyMatch =
0136 skipped_.phIndexOfSkippedEvent_ == phIndexOfSkippedEvent && skipped_.runOfSkippedEvent_ == runOfSkippedEvent &&
0137 skipped_.lumiOfSkippedEvent_ == lumiOfSkippedEvent && skipped_.skippedEventEntry_ == skippedEventEntry;
0138
0139 if (!theyMatch) {
0140 std::cout << "\nExpected " << phIndexOfSkippedEvent << " " << runOfSkippedEvent << " "
0141 << lumiOfSkippedEvent << " " << skippedEventEntry << "\n";
0142 std::cout << "Actual " << skipped_.phIndexOfSkippedEvent_ << " " << skipped_.runOfSkippedEvent_ << " "
0143 << skipped_.lumiOfSkippedEvent_ << " " << skipped_.skippedEventEntry_ << "\n";
0144 }
0145 CPPUNIT_ASSERT(theyMatch);
0146 }
0147
0148 void TestIndexIntoFile::skipEventForward(edm::IndexIntoFile::IndexIntoFileItr& iter) {
0149 iter.skipEventForward(skipped_.phIndexOfSkippedEvent_,
0150 skipped_.runOfSkippedEvent_,
0151 skipped_.lumiOfSkippedEvent_,
0152 skipped_.skippedEventEntry_);
0153 }
0154
0155 void TestIndexIntoFile::skipEventBackward(edm::IndexIntoFile::IndexIntoFileItr& iter) {
0156 iter.skipEventBackward(skipped_.phIndexOfSkippedEvent_,
0157 skipped_.runOfSkippedEvent_,
0158 skipped_.lumiOfSkippedEvent_,
0159 skipped_.skippedEventEntry_);
0160 }
0161
0162 void TestIndexIntoFile::testEmptyIndex() {
0163 edm::IndexIntoFile indexIntoFile;
0164
0165 edm::IndexIntoFile::IndexIntoFileItr iterNumEnd = indexIntoFile.end(IndexIntoFile::numericalOrder);
0166 CPPUNIT_ASSERT(iterNumEnd.indexIntoFile() == &indexIntoFile);
0167 CPPUNIT_ASSERT(iterNumEnd.size() == 0);
0168 CPPUNIT_ASSERT(iterNumEnd.type() == kEnd);
0169 CPPUNIT_ASSERT(iterNumEnd.indexToRun() == IndexIntoFile::invalidIndex);
0170 CPPUNIT_ASSERT(iterNumEnd.indexToLumi() == IndexIntoFile::invalidIndex);
0171 CPPUNIT_ASSERT(iterNumEnd.indexToEventRange() == IndexIntoFile::invalidIndex);
0172 CPPUNIT_ASSERT(iterNumEnd.indexToEvent() == 0);
0173 CPPUNIT_ASSERT(iterNumEnd.nEvents() == 0);
0174
0175 edm::IndexIntoFile::IndexIntoFileItr iterFirstEnd = indexIntoFile.end(IndexIntoFile::firstAppearanceOrder);
0176 CPPUNIT_ASSERT(iterFirstEnd.indexIntoFile() == &indexIntoFile);
0177 CPPUNIT_ASSERT(iterFirstEnd.size() == 0);
0178 CPPUNIT_ASSERT(iterFirstEnd.type() == kEnd);
0179 CPPUNIT_ASSERT(iterFirstEnd.indexToRun() == IndexIntoFile::invalidIndex);
0180 CPPUNIT_ASSERT(iterFirstEnd.indexToLumi() == IndexIntoFile::invalidIndex);
0181 CPPUNIT_ASSERT(iterFirstEnd.indexToEventRange() == IndexIntoFile::invalidIndex);
0182 CPPUNIT_ASSERT(iterFirstEnd.indexToEvent() == 0);
0183 CPPUNIT_ASSERT(iterFirstEnd.nEvents() == 0);
0184
0185 edm::IndexIntoFile::IndexIntoFileItr iterEntryEnd = indexIntoFile.end(IndexIntoFile::entryOrder);
0186 CPPUNIT_ASSERT(iterEntryEnd.indexIntoFile() == &indexIntoFile);
0187 CPPUNIT_ASSERT(iterEntryEnd.size() == 0);
0188 CPPUNIT_ASSERT(iterEntryEnd.type() == kEnd);
0189 CPPUNIT_ASSERT(iterEntryEnd.indexToRun() == IndexIntoFile::invalidIndex);
0190 CPPUNIT_ASSERT(iterEntryEnd.indexToLumi() == IndexIntoFile::invalidIndex);
0191 CPPUNIT_ASSERT(iterEntryEnd.indexToEventRange() == IndexIntoFile::invalidIndex);
0192 CPPUNIT_ASSERT(iterEntryEnd.indexToEvent() == 0);
0193 CPPUNIT_ASSERT(iterEntryEnd.nEvents() == 0);
0194
0195 edm::IndexIntoFile::IndexIntoFileItr iterNum = indexIntoFile.begin(IndexIntoFile::numericalOrder);
0196 CPPUNIT_ASSERT(iterNum == iterNumEnd);
0197
0198 skipEventBackward(iterNum);
0199 checkSkipped(-1, 0, 0, -1);
0200 check(iterNum, kEnd, -1, -1, -1, 0, 0);
0201
0202 edm::IndexIntoFile::IndexIntoFileItr iterFirst = indexIntoFile.begin(IndexIntoFile::firstAppearanceOrder);
0203 CPPUNIT_ASSERT(iterFirst == iterFirstEnd);
0204
0205 skipEventBackward(iterFirst);
0206 checkSkipped(-1, 0, 0, -1);
0207 check(iterFirst, kEnd, -1, -1, -1, 0, 0);
0208
0209 {
0210 auto iterEntry = indexIntoFile.begin(IndexIntoFile::entryOrder);
0211 CPPUNIT_ASSERT(iterEntry == iterEntryEnd);
0212
0213 skipEventBackward(iterEntry);
0214 checkSkipped(-1, 0, 0, -1);
0215 check(iterEntry, kEnd, -1, -1, -1, 0, 0);
0216 }
0217 }
0218
0219 void TestIndexIntoFile::testIterEndWithLumi() {
0220 edm::IndexIntoFile indexIntoFile;
0221 indexIntoFile.addEntry(fakePHID1, 11, 101, 0, 0);
0222 indexIntoFile.addEntry(fakePHID1, 11, 0, 0, 0);
0223 indexIntoFile.addEntry(fakePHID1, 12, 101, 0, 1);
0224 indexIntoFile.addEntry(fakePHID1, 12, 101, 0, 2);
0225 indexIntoFile.addEntry(fakePHID1, 12, 0, 0, 1);
0226 indexIntoFile.sortVector_Run_Or_Lumi_Entries();
0227
0228 edm::IndexIntoFile::IndexIntoFileItr iterFirst = indexIntoFile.begin(IndexIntoFile::firstAppearanceOrder);
0229 edm::IndexIntoFile::IndexIntoFileItr iterFirstEnd = indexIntoFile.end(IndexIntoFile::firstAppearanceOrder);
0230 int i = 0;
0231 for (i = 0; iterFirst != iterFirstEnd; ++iterFirst, ++i) {
0232 if (i == 0)
0233 check(iterFirst, kRun, 0, 1, -1, 0, 0);
0234 else if (i == 1)
0235 check(iterFirst, kLumi, 0, 1, -1, 0, 0);
0236 else if (i == 2)
0237 check(iterFirst, kRun, 2, 3, -1, 0, 0);
0238 else if (i == 3)
0239 check(iterFirst, kLumi, 2, 3, -1, 0, 0);
0240 else if (i == 4)
0241 check(iterFirst, kLumi, 2, 4, -1, 0, 0);
0242 else
0243 CPPUNIT_ASSERT(false);
0244
0245 CPPUNIT_ASSERT(iterFirst.firstEventEntryThisRun() == IndexIntoFile::invalidEntry);
0246 CPPUNIT_ASSERT(iterFirst.firstEventEntryThisLumi() == IndexIntoFile::invalidEntry);
0247 }
0248 CPPUNIT_ASSERT(i == 5);
0249
0250
0251
0252 edm::IndexIntoFile::IndexIntoFileItr iterNum = indexIntoFile.begin(IndexIntoFile::numericalOrder);
0253 edm::IndexIntoFile::IndexIntoFileItr iterNumEnd = indexIntoFile.end(IndexIntoFile::numericalOrder);
0254 for (i = 0; iterNum != iterNumEnd; ++iterNum, ++i) {
0255 if (i == 0)
0256 check(iterNum, kRun, 0, 1, -1, 0, 0);
0257 else if (i == 1)
0258 check(iterNum, kLumi, 0, 1, -1, 0, 0);
0259 else if (i == 2)
0260 check(iterNum, kRun, 2, 3, -1, 0, 0);
0261 else if (i == 3)
0262 check(iterNum, kLumi, 2, 3, -1, 0, 0);
0263 else if (i == 4)
0264 check(iterNum, kLumi, 2, 4, -1, 0, 0);
0265 else
0266 CPPUNIT_ASSERT(false);
0267
0268 CPPUNIT_ASSERT(iterNum.firstEventEntryThisRun() == IndexIntoFile::invalidEntry);
0269 CPPUNIT_ASSERT(iterNum.firstEventEntryThisLumi() == IndexIntoFile::invalidEntry);
0270 }
0271 CPPUNIT_ASSERT(i == 5);
0272
0273
0274
0275 edm::IndexIntoFile::IndexIntoFileItr iterEntry = indexIntoFile.begin(IndexIntoFile::entryOrder);
0276 edm::IndexIntoFile::IndexIntoFileItr iterEntryEnd = indexIntoFile.end(IndexIntoFile::entryOrder);
0277 for (i = 0; iterEntry != iterEntryEnd; ++iterEntry, ++i) {
0278 if (i == 0)
0279 check(iterEntry, kRun, 0, 1, -1, 0, 0);
0280 else if (i == 1)
0281 check(iterEntry, kLumi, 0, 1, -1, 0, 0);
0282 else if (i == 2)
0283 check(iterEntry, kRun, 2, 3, -1, 0, 0);
0284 else if (i == 3)
0285 check(iterEntry, kLumi, 2, 3, -1, 0, 0);
0286 else if (i == 4)
0287 check(iterEntry, kLumi, 2, 4, -1, 0, 0);
0288 else
0289 CPPUNIT_ASSERT(false);
0290
0291 CPPUNIT_ASSERT(iterEntry.firstEventEntryThisRun() == IndexIntoFile::invalidEntry);
0292 CPPUNIT_ASSERT(iterEntry.firstEventEntryThisLumi() == IndexIntoFile::invalidEntry);
0293 }
0294 CPPUNIT_ASSERT(i == 5);
0295
0296 iterFirst = indexIntoFile.begin(IndexIntoFile::firstAppearanceOrder);
0297
0298 skipEventForward(iterFirst);
0299 checkSkipped(-1, 0, 0, -1);
0300 check(iterFirst, kEnd, -1, -1, -1, 0, 0);
0301
0302 iterNum = indexIntoFile.begin(IndexIntoFile::numericalOrder);
0303
0304 skipEventForward(iterNum);
0305 checkSkipped(-1, 0, 0, -1);
0306 check(iterNum, kEnd, -1, -1, -1, 0, 0);
0307
0308 iterEntry = indexIntoFile.begin(IndexIntoFile::entryOrder);
0309
0310 skipEventForward(iterEntry);
0311 checkSkipped(-1, 0, 0, -1);
0312 check(iterEntry, kEnd, -1, -1, -1, 0, 0);
0313 }
0314
0315 void TestIndexIntoFile::testIterEndWithRun() {
0316 edm::IndexIntoFile indexIntoFile;
0317 indexIntoFile.addEntry(fakePHID1, 1, 0, 0, 0);
0318 indexIntoFile.addEntry(fakePHID1, 1, 0, 0, 1);
0319 indexIntoFile.addEntry(fakePHID1, 2, 0, 0, 2);
0320 indexIntoFile.addEntry(fakePHID1, 3, 0, 0, 3);
0321 indexIntoFile.sortVector_Run_Or_Lumi_Entries();
0322
0323 edm::IndexIntoFile::IndexIntoFileItr iterFirst = indexIntoFile.begin(IndexIntoFile::firstAppearanceOrder);
0324 edm::IndexIntoFile::IndexIntoFileItr iterFirstEnd = indexIntoFile.end(IndexIntoFile::firstAppearanceOrder);
0325 int i = 0;
0326 for (; iterFirst != iterFirstEnd; ++iterFirst, ++i) {
0327 if (i == 0)
0328 check(iterFirst, kRun, 0, -1, -1, 0, 0);
0329 else if (i == 1)
0330 check(iterFirst, kRun, 1, -1, -1, 0, 0);
0331 else if (i == 2)
0332 check(iterFirst, kRun, 2, -1, -1, 0, 0);
0333 else if (i == 3)
0334 check(iterFirst, kRun, 3, -1, -1, 0, 0);
0335 else
0336 CPPUNIT_ASSERT(false);
0337
0338 CPPUNIT_ASSERT(iterFirst.firstEventEntryThisRun() == IndexIntoFile::invalidEntry);
0339 CPPUNIT_ASSERT(iterFirst.firstEventEntryThisLumi() == IndexIntoFile::invalidEntry);
0340 }
0341 CPPUNIT_ASSERT(i == 4);
0342
0343
0344
0345 edm::IndexIntoFile::IndexIntoFileItr iterNum = indexIntoFile.begin(IndexIntoFile::numericalOrder);
0346 edm::IndexIntoFile::IndexIntoFileItr iterNumEnd = indexIntoFile.end(IndexIntoFile::numericalOrder);
0347 i = 0;
0348 for (; iterNum != iterNumEnd; ++iterNum, ++i) {
0349 if (i == 0)
0350 check(iterNum, kRun, 0, -1, -1, 0, 0);
0351 else if (i == 1)
0352 check(iterNum, kRun, 1, -1, -1, 0, 0);
0353 else if (i == 2)
0354 check(iterNum, kRun, 2, -1, -1, 0, 0);
0355 else if (i == 3)
0356 check(iterNum, kRun, 3, -1, -1, 0, 0);
0357 else
0358 CPPUNIT_ASSERT(false);
0359
0360 CPPUNIT_ASSERT(iterNum.firstEventEntryThisRun() == IndexIntoFile::invalidEntry);
0361 CPPUNIT_ASSERT(iterNum.firstEventEntryThisLumi() == IndexIntoFile::invalidEntry);
0362 }
0363 CPPUNIT_ASSERT(i == 4);
0364
0365
0366
0367 edm::IndexIntoFile::IndexIntoFileItr iterEntry = indexIntoFile.begin(IndexIntoFile::entryOrder);
0368 edm::IndexIntoFile::IndexIntoFileItr iterEntryEnd = indexIntoFile.end(IndexIntoFile::entryOrder);
0369 i = 0;
0370 for (; iterEntry != iterEntryEnd; ++iterEntry, ++i) {
0371 if (i == 0)
0372 check(iterEntry, kRun, 0, -1, -1, 0, 0);
0373 else if (i == 1)
0374 check(iterEntry, kRun, 1, -1, -1, 0, 0);
0375 else if (i == 2)
0376 check(iterEntry, kRun, 2, -1, -1, 0, 0);
0377 else if (i == 3)
0378 check(iterEntry, kRun, 3, -1, -1, 0, 0);
0379 else
0380 CPPUNIT_ASSERT(false);
0381
0382 CPPUNIT_ASSERT(iterEntry.firstEventEntryThisRun() == IndexIntoFile::invalidEntry);
0383 CPPUNIT_ASSERT(iterEntry.firstEventEntryThisLumi() == IndexIntoFile::invalidEntry);
0384 }
0385 CPPUNIT_ASSERT(i == 4);
0386
0387 iterFirst = indexIntoFile.begin(IndexIntoFile::firstAppearanceOrder);
0388
0389 skipEventForward(iterFirst);
0390 checkSkipped(-1, 0, 0, -1);
0391 check(iterFirst, kEnd, -1, -1, -1, 0, 0);
0392
0393 iterFirst = indexIntoFile.begin(IndexIntoFile::firstAppearanceOrder);
0394 iterFirst.advanceToNextLumiOrRun();
0395 check(iterFirst, kRun, 2, -1, -1, 0, 0);
0396 ++iterFirst;
0397 check(iterFirst, kRun, 3, -1, -1, 0, 0);
0398 iterFirst.advanceToNextLumiOrRun();
0399 check(iterFirst, kEnd, -1, -1, -1, 0, 0);
0400
0401 iterNum = indexIntoFile.begin(IndexIntoFile::numericalOrder);
0402
0403 skipEventForward(iterNum);
0404 checkSkipped(-1, 0, 0, -1);
0405 check(iterNum, kEnd, -1, -1, -1, 0, 0);
0406
0407 iterNum = indexIntoFile.begin(IndexIntoFile::numericalOrder);
0408 iterNum.advanceToNextLumiOrRun();
0409 check(iterNum, kRun, 2, -1, -1, 0, 0);
0410 ++iterNum;
0411 check(iterNum, kRun, 3, -1, -1, 0, 0);
0412 iterNum.advanceToNextLumiOrRun();
0413 check(iterNum, kEnd, -1, -1, -1, 0, 0);
0414
0415 iterEntry = indexIntoFile.begin(IndexIntoFile::entryOrder);
0416
0417 skipEventForward(iterEntry);
0418 checkSkipped(-1, 0, 0, -1);
0419 check(iterEntry, kEnd, -1, -1, -1, 0, 0);
0420
0421 iterEntry = indexIntoFile.begin(IndexIntoFile::entryOrder);
0422 iterEntry.advanceToNextLumiOrRun();
0423 check(iterEntry, kRun, 2, -1, -1, 0, 0);
0424 ++iterEntry;
0425 check(iterEntry, kRun, 3, -1, -1, 0, 0);
0426 iterEntry.advanceToNextLumiOrRun();
0427 check(iterEntry, kEnd, -1, -1, -1, 0, 0);
0428 }
0429
0430 void TestIndexIntoFile::testIterLastLumiRangeNoEvents() {
0431 edm::IndexIntoFile indexIntoFile;
0432 indexIntoFile.addEntry(fakePHID1, 1, 101, 5, 0);
0433 indexIntoFile.addEntry(fakePHID1, 1, 101, 0, 0);
0434 indexIntoFile.addEntry(fakePHID1, 1, 101, 0, 1);
0435 indexIntoFile.addEntry(fakePHID1, 1, 102, 6, 1);
0436 indexIntoFile.addEntry(fakePHID1, 1, 102, 0, 2);
0437 indexIntoFile.addEntry(fakePHID1, 1, 102, 0, 3);
0438 indexIntoFile.addEntry(fakePHID1, 1, 0, 0, 0);
0439 indexIntoFile.addEntry(fakePHID1, 2, 101, 7, 2);
0440 indexIntoFile.addEntry(fakePHID1, 2, 101, 0, 4);
0441 indexIntoFile.addEntry(fakePHID1, 2, 101, 0, 5);
0442 indexIntoFile.addEntry(fakePHID1, 2, 0, 0, 1);
0443 indexIntoFile.sortVector_Run_Or_Lumi_Entries();
0444
0445 edm::IndexIntoFile::IndexIntoFileItr iterFirst = indexIntoFile.begin(IndexIntoFile::firstAppearanceOrder);
0446 edm::IndexIntoFile::IndexIntoFileItr iterFirstEnd = indexIntoFile.end(IndexIntoFile::firstAppearanceOrder);
0447 int i = 0;
0448 for (i = 0; iterFirst != iterFirstEnd; ++iterFirst, ++i) {
0449 if (i == 0)
0450 check(iterFirst, kRun, 0, 1, 1, 0, 1);
0451 else if (i == 1)
0452 check(iterFirst, kLumi, 0, 1, 1, 0, 1);
0453 else if (i == 2)
0454 check(iterFirst, kLumi, 0, 2, 1, 0, 1);
0455 else if (i == 3)
0456 check(iterFirst, kEvent, 0, 2, 1, 0, 1);
0457 else if (i == 4)
0458 check(iterFirst, kLumi, 0, 3, 3, 0, 1);
0459 else if (i == 5)
0460 check(iterFirst, kLumi, 0, 4, 3, 0, 1);
0461 else if (i == 6)
0462 check(iterFirst, kEvent, 0, 4, 3, 0, 1);
0463 else if (i == 7)
0464 check(iterFirst, kRun, 5, 6, 6, 0, 1);
0465 else if (i == 8)
0466 check(iterFirst, kLumi, 5, 6, 6, 0, 1);
0467 else if (i == 9)
0468 check(iterFirst, kLumi, 5, 7, 6, 0, 1);
0469 else if (i == 10)
0470 check(iterFirst, kEvent, 5, 7, 6, 0, 1);
0471 else
0472 CPPUNIT_ASSERT(false);
0473 }
0474 CPPUNIT_ASSERT(i == 11);
0475
0476 std::vector<IndexIntoFile::EventEntry>& eventEntries = indexIntoFile.eventEntries();
0477 eventEntries.emplace_back(5, 0);
0478 eventEntries.emplace_back(6, 1);
0479 eventEntries.emplace_back(7, 2);
0480 indexIntoFile.sortEventEntries();
0481
0482 edm::IndexIntoFile::IndexIntoFileItr iterNum = indexIntoFile.begin(IndexIntoFile::numericalOrder);
0483 edm::IndexIntoFile::IndexIntoFileItr iterNumEnd = indexIntoFile.end(IndexIntoFile::numericalOrder);
0484 i = 0;
0485 for (; iterNum != iterNumEnd; ++iterNum, ++i) {
0486 if (i == 0)
0487 check(iterNum, kRun, 0, 1, 1, 0, 1);
0488 else if (i == 1)
0489 check(iterNum, kLumi, 0, 1, 1, 0, 1);
0490 else if (i == 2)
0491 check(iterNum, kLumi, 0, 2, 1, 0, 1);
0492 else if (i == 3)
0493 check(iterNum, kEvent, 0, 2, 1, 0, 1);
0494 else if (i == 4)
0495 check(iterNum, kLumi, 0, 3, 3, 0, 1);
0496 else if (i == 5)
0497 check(iterNum, kLumi, 0, 4, 3, 0, 1);
0498 else if (i == 6)
0499 check(iterNum, kEvent, 0, 4, 3, 0, 1);
0500 else if (i == 7)
0501 check(iterNum, kRun, 5, 6, 6, 0, 1);
0502 else if (i == 8)
0503 check(iterNum, kLumi, 5, 6, 6, 0, 1);
0504 else if (i == 9)
0505 check(iterNum, kLumi, 5, 7, 6, 0, 1);
0506 else if (i == 10)
0507 check(iterNum, kEvent, 5, 7, 6, 0, 1);
0508 else
0509 CPPUNIT_ASSERT(false);
0510 }
0511 CPPUNIT_ASSERT(i == 11);
0512
0513 edm::IndexIntoFile::IndexIntoFileItr iterEntry = indexIntoFile.begin(IndexIntoFile::entryOrder);
0514 edm::IndexIntoFile::IndexIntoFileItr iterEntryEnd = indexIntoFile.end(IndexIntoFile::entryOrder);
0515 i = 0;
0516 for (; iterEntry != iterEntryEnd; ++iterEntry, ++i) {
0517 if (i == 0)
0518 check(iterEntry, kRun, 0, 1, 1, 0, 1);
0519 else if (i == 1)
0520 check(iterEntry, kLumi, 0, 1, 1, 0, 1);
0521 else if (i == 2)
0522 check(iterEntry, kLumi, 0, 2, 1, 0, 1);
0523 else if (i == 3)
0524 check(iterEntry, kEvent, 0, 2, 1, 0, 1);
0525 else if (i == 4)
0526 check(iterEntry, kLumi, 0, 3, 3, 0, 1);
0527 else if (i == 5)
0528 check(iterEntry, kLumi, 0, 4, 3, 0, 1);
0529 else if (i == 6)
0530 check(iterEntry, kEvent, 0, 4, 3, 0, 1);
0531 else if (i == 7)
0532 check(iterEntry, kRun, 5, 6, 6, 0, 1);
0533 else if (i == 8)
0534 check(iterEntry, kLumi, 5, 6, 6, 0, 1);
0535 else if (i == 9)
0536 check(iterEntry, kLumi, 5, 7, 6, 0, 1);
0537 else if (i == 10)
0538 check(iterEntry, kEvent, 5, 7, 6, 0, 1);
0539 else
0540 CPPUNIT_ASSERT(false);
0541 }
0542 CPPUNIT_ASSERT(i == 11);
0543
0544 skipEventBackward(iterEntry);
0545 checkSkipped(0, 2, 101, 2);
0546 }
0547
0548 void TestIndexIntoFile::testSkip() {
0549 edm::IndexIntoFile indexIntoFile;
0550 indexIntoFile.addEntry(fakePHID1, 1, 101, 1001, 0);
0551 indexIntoFile.addEntry(fakePHID1, 1, 101, 0, 0);
0552 indexIntoFile.addEntry(fakePHID1, 1, 101, 0, 1);
0553 indexIntoFile.addEntry(fakePHID1, 1, 102, 0, 2);
0554 indexIntoFile.addEntry(fakePHID1, 1, 0, 0, 0);
0555 indexIntoFile.sortVector_Run_Or_Lumi_Entries();
0556
0557 edm::IndexIntoFile::IndexIntoFileItr iterFirst = indexIntoFile.begin(IndexIntoFile::firstAppearanceOrder);
0558
0559 skipEventForward(iterFirst);
0560 checkSkipped(0, 1, 101, 0);
0561 check(iterFirst, kRun, 0, 3, -1, 0, 0);
0562
0563 skipEventForward(iterFirst);
0564 checkSkipped(-1, 0, 0, -1);
0565 check(iterFirst, kEnd, -1, -1, -1, 0, 0);
0566
0567 skipEventBackward(iterFirst);
0568 checkSkipped(0, 1, 101, 0);
0569 check(iterFirst, kRun, 0, 1, 1, 0, 1);
0570
0571 skipEventBackward(iterFirst);
0572 checkSkipped(-1, 0, 0, -1);
0573 check(iterFirst, kRun, 0, 1, 1, 0, 1);
0574
0575 iterFirst = indexIntoFile.begin(IndexIntoFile::firstAppearanceOrder);
0576 ++iterFirst;
0577 skipEventForward(iterFirst);
0578 checkSkipped(0, 1, 101, 0);
0579 check(iterFirst, kLumi, 0, 3, -1, 0, 0);
0580
0581 skipEventForward(iterFirst);
0582 checkSkipped(-1, 0, 0, -1);
0583 check(iterFirst, kEnd, -1, -1, -1, 0, 0);
0584
0585 std::vector<IndexIntoFile::EventEntry>& eventEntries = indexIntoFile.eventEntries();
0586 eventEntries.emplace_back(1001, 0);
0587 indexIntoFile.sortEventEntries();
0588
0589 edm::IndexIntoFile::IndexIntoFileItr iterNum = indexIntoFile.begin(IndexIntoFile::numericalOrder);
0590
0591 skipEventForward(iterNum);
0592 checkSkipped(0, 1, 101, 0);
0593 check(iterNum, kRun, 0, 3, -1, 0, 0);
0594
0595 skipEventForward(iterNum);
0596 checkSkipped(-1, 0, 0, -1);
0597 check(iterNum, kEnd, -1, -1, -1, 0, 0);
0598
0599 skipEventBackward(iterNum);
0600 checkSkipped(0, 1, 101, 0);
0601 check(iterNum, kRun, 0, 1, 1, 0, 1);
0602
0603 skipEventBackward(iterNum);
0604 checkSkipped(-1, 0, 0, -1);
0605 check(iterNum, kRun, 0, 1, 1, 0, 1);
0606
0607 iterNum = indexIntoFile.begin(IndexIntoFile::numericalOrder);
0608 ++iterNum;
0609 skipEventForward(iterNum);
0610 checkSkipped(0, 1, 101, 0);
0611 check(iterNum, kLumi, 0, 3, -1, 0, 0);
0612
0613 skipEventForward(iterNum);
0614 checkSkipped(-1, 0, 0, -1);
0615 check(iterNum, kEnd, -1, -1, -1, 0, 0);
0616 {
0617 edm::IndexIntoFile::IndexIntoFileItr iterEntry = indexIntoFile.begin(IndexIntoFile::entryOrder);
0618
0619 skipEventForward(iterEntry);
0620 checkSkipped(0, 1, 101, 0);
0621 check(iterEntry, kRun, 0, 3, -1, 0, 0);
0622
0623 skipEventForward(iterEntry);
0624 checkSkipped(-1, 0, 0, -1);
0625 check(iterEntry, kEnd, -1, -1, -1, 0, 0);
0626
0627 skipEventBackward(iterEntry);
0628 checkSkipped(0, 1, 101, 0);
0629 check(iterEntry, kRun, 0, 1, 1, 0, 1);
0630
0631 skipEventBackward(iterEntry);
0632 checkSkipped(-1, 0, 0, -1);
0633 check(iterEntry, kRun, 0, 1, 1, 0, 1);
0634
0635 iterEntry = indexIntoFile.begin(IndexIntoFile::entryOrder);
0636 ++iterEntry;
0637 skipEventForward(iterEntry);
0638 checkSkipped(0, 1, 101, 0);
0639 check(iterEntry, kLumi, 0, 3, -1, 0, 0);
0640
0641 skipEventForward(iterEntry);
0642 checkSkipped(-1, 0, 0, -1);
0643 check(iterEntry, kEnd, -1, -1, -1, 0, 0);
0644 }
0645 }
0646
0647 void TestIndexIntoFile::testSkip2() {
0648 edm::IndexIntoFile indexIntoFile;
0649 indexIntoFile.addEntry(fakePHID1, 1, 101, 1001, 0);
0650 indexIntoFile.addEntry(fakePHID1, 1, 101, 0, 0);
0651 indexIntoFile.addEntry(fakePHID1, 1, 101, 0, 1);
0652 indexIntoFile.addEntry(fakePHID1, 1, 102, 0, 2);
0653 indexIntoFile.addEntry(fakePHID1, 1, 0, 0, 0);
0654 indexIntoFile.addEntry(fakePHID1, 2, 101, 1001, 1);
0655 indexIntoFile.addEntry(fakePHID1, 2, 101, 0, 3);
0656 indexIntoFile.addEntry(fakePHID1, 2, 101, 0, 4);
0657 indexIntoFile.addEntry(fakePHID1, 2, 102, 0, 5);
0658 indexIntoFile.addEntry(fakePHID1, 2, 0, 0, 1);
0659 indexIntoFile.sortVector_Run_Or_Lumi_Entries();
0660
0661 edm::IndexIntoFile::IndexIntoFileItr iterFirst = indexIntoFile.begin(IndexIntoFile::firstAppearanceOrder);
0662
0663 skipEventForward(iterFirst);
0664 checkSkipped(0, 1, 101, 0);
0665 check(iterFirst, kRun, 0, 3, -1, 0, 0);
0666
0667 skipEventForward(iterFirst);
0668 checkSkipped(0, 2, 101, 1);
0669 check(iterFirst, kRun, 4, 7, -1, 0, 0);
0670
0671 skipEventForward(iterFirst);
0672 checkSkipped(-1, 0, 0, -1);
0673 check(iterFirst, kEnd, -1, -1, -1, 0, 0);
0674
0675 skipEventBackward(iterFirst);
0676 checkSkipped(0, 2, 101, 1);
0677 check(iterFirst, kRun, 4, 5, 5, 0, 1);
0678
0679 skipEventBackward(iterFirst);
0680 checkSkipped(0, 1, 101, 0);
0681 check(iterFirst, kRun, 0, 1, 1, 0, 1);
0682
0683 iterFirst = indexIntoFile.begin(IndexIntoFile::firstAppearanceOrder);
0684 ++iterFirst;
0685 skipEventForward(iterFirst);
0686 checkSkipped(0, 1, 101, 0);
0687 check(iterFirst, kLumi, 0, 3, -1, 0, 0);
0688
0689 skipEventForward(iterFirst);
0690 checkSkipped(0, 2, 101, 1);
0691 check(iterFirst, kRun, 4, 7, -1, 0, 0);
0692
0693 std::vector<IndexIntoFile::EventEntry>& eventEntries = indexIntoFile.eventEntries();
0694 eventEntries.emplace_back(1001, 0);
0695 eventEntries.emplace_back(1001, 1);
0696 indexIntoFile.sortEventEntries();
0697
0698 edm::IndexIntoFile::IndexIntoFileItr iterNum = indexIntoFile.begin(IndexIntoFile::numericalOrder);
0699
0700 skipEventForward(iterNum);
0701 checkSkipped(0, 1, 101, 0);
0702 check(iterNum, kRun, 0, 3, -1, 0, 0);
0703
0704 skipEventForward(iterNum);
0705 checkSkipped(0, 2, 101, 1);
0706 check(iterNum, kRun, 4, 7, -1, 0, 0);
0707
0708 skipEventForward(iterNum);
0709 checkSkipped(-1, 0, 0, -1);
0710 check(iterNum, kEnd, -1, -1, -1, 0, 0);
0711
0712 skipEventBackward(iterNum);
0713 checkSkipped(0, 2, 101, 1);
0714 check(iterNum, kRun, 4, 5, 5, 0, 1);
0715
0716 skipEventBackward(iterNum);
0717 checkSkipped(0, 1, 101, 0);
0718 check(iterNum, kRun, 0, 1, 1, 0, 1);
0719
0720 iterNum = indexIntoFile.begin(IndexIntoFile::numericalOrder);
0721 ++iterNum;
0722 skipEventForward(iterNum);
0723 checkSkipped(0, 1, 101, 0);
0724 check(iterNum, kLumi, 0, 3, -1, 0, 0);
0725
0726 skipEventForward(iterNum);
0727 checkSkipped(0, 2, 101, 1);
0728 check(iterNum, kRun, 4, 7, -1, 0, 0);
0729
0730 {
0731 edm::IndexIntoFile::IndexIntoFileItr iterEntry = indexIntoFile.begin(IndexIntoFile::entryOrder);
0732
0733 skipEventForward(iterEntry);
0734 checkSkipped(0, 1, 101, 0);
0735 check(iterEntry, kRun, 0, 3, -1, 0, 0);
0736
0737 skipEventForward(iterEntry);
0738 checkSkipped(0, 2, 101, 1);
0739 check(iterEntry, kRun, 4, 7, -1, 0, 0);
0740
0741 skipEventForward(iterEntry);
0742 checkSkipped(-1, 0, 0, -1);
0743 check(iterEntry, kEnd, -1, -1, -1, 0, 0);
0744
0745 skipEventBackward(iterEntry);
0746 checkSkipped(0, 2, 101, 1);
0747 check(iterEntry, kRun, 4, 5, 5, 0, 1);
0748
0749 skipEventBackward(iterEntry);
0750 checkSkipped(0, 1, 101, 0);
0751 check(iterEntry, kRun, 0, 1, 1, 0, 1);
0752
0753 iterEntry = indexIntoFile.begin(IndexIntoFile::entryOrder);
0754 ++iterEntry;
0755 skipEventForward(iterEntry);
0756 checkSkipped(0, 1, 101, 0);
0757 check(iterEntry, kLumi, 0, 3, -1, 0, 0);
0758
0759 skipEventForward(iterEntry);
0760 checkSkipped(0, 2, 101, 1);
0761 check(iterEntry, kRun, 4, 7, -1, 0, 0);
0762 }
0763 }
0764
0765 void TestIndexIntoFile::testSkip3() {
0766 edm::IndexIntoFile indexIntoFile;
0767 indexIntoFile.addEntry(fakePHID1, 1, 1, 0, 0);
0768 indexIntoFile.addEntry(fakePHID1, 1, 0, 0, 0);
0769 indexIntoFile.addEntry(fakePHID1, 2, 101, 0, 1);
0770 indexIntoFile.addEntry(fakePHID1, 2, 101, 0, 2);
0771 indexIntoFile.addEntry(fakePHID1, 2, 102, 1001, 0);
0772 indexIntoFile.addEntry(fakePHID1, 2, 102, 0, 3);
0773 indexIntoFile.addEntry(fakePHID1, 2, 103, 0, 4);
0774 indexIntoFile.addEntry(fakePHID1, 2, 0, 0, 1);
0775 indexIntoFile.sortVector_Run_Or_Lumi_Entries();
0776
0777 edm::IndexIntoFile::IndexIntoFileItr iterFirst = indexIntoFile.begin(IndexIntoFile::firstAppearanceOrder);
0778
0779 skipEventForward(iterFirst);
0780 checkSkipped(0, 2, 102, 0);
0781 check(iterFirst, kRun, 2, 6, -1, 0, 0);
0782
0783 std::vector<IndexIntoFile::EventEntry>& eventEntries = indexIntoFile.eventEntries();
0784 eventEntries.emplace_back(1001, 0);
0785 indexIntoFile.sortEventEntries();
0786
0787 edm::IndexIntoFile::IndexIntoFileItr iterNum = indexIntoFile.begin(IndexIntoFile::numericalOrder);
0788
0789 skipEventForward(iterNum);
0790 checkSkipped(0, 2, 102, 0);
0791 check(iterNum, kRun, 2, 6, -1, 0, 0);
0792
0793 {
0794 edm::IndexIntoFile::IndexIntoFileItr iterEntry = indexIntoFile.begin(IndexIntoFile::entryOrder);
0795
0796 skipEventForward(iterEntry);
0797 checkSkipped(0, 2, 102, 0);
0798 check(iterEntry, kRun, 2, 6, -1, 0, 0);
0799 }
0800 }
0801
0802 void TestIndexIntoFile::testEndWithRun() {
0803 edm::IndexIntoFile indexIntoFile;
0804 indexIntoFile.addEntry(fakePHID1, 1, 0, 0, 0);
0805
0806 indexIntoFile.sortVector_Run_Or_Lumi_Entries();
0807
0808 edm::IndexIntoFile::IndexIntoFileItr iterFirst = indexIntoFile.begin(IndexIntoFile::firstAppearanceOrder);
0809 check(iterFirst, kRun, 0, -1, -1, 0, 0);
0810 ++iterFirst;
0811 check(iterFirst, kEnd, -1, -1, -1, 0, 0);
0812
0813 edm::IndexIntoFile::IndexIntoFileItr iterNum = indexIntoFile.begin(IndexIntoFile::numericalOrder);
0814 check(iterNum, kRun, 0, -1, -1, 0, 0);
0815 ++iterNum;
0816 check(iterNum, kEnd, -1, -1, -1, 0, 0);
0817
0818 {
0819 edm::IndexIntoFile::IndexIntoFileItr iterEntry = indexIntoFile.begin(IndexIntoFile::entryOrder);
0820 check(iterEntry, kRun, 0, -1, -1, 0, 0);
0821 ++iterEntry;
0822 check(iterEntry, kEnd, -1, -1, -1, 0, 0);
0823 }
0824 }
0825
0826 void TestIndexIntoFile::testReduce() {
0827
0828
0829 }
0830
0831 void TestIndexIntoFile::testRunsNoEvents() {
0832 edm::IndexIntoFile indexIntoFile;
0833 indexIntoFile.addEntry(fakePHID1, 8, 1, 0, 0);
0834 indexIntoFile.addEntry(fakePHID1, 5, 1, 0, 1);
0835 indexIntoFile.addEntry(fakePHID1, 1, 1, 0, 2);
0836 indexIntoFile.addEntry(fakePHID1, 3, 1, 1, 0);
0837 indexIntoFile.addEntry(fakePHID1, 3, 1, 0, 3);
0838
0839 indexIntoFile.addEntry(fakePHID1, 4, 1, 1, 1);
0840 indexIntoFile.addEntry(fakePHID1, 4, 1, 0, 4);
0841 indexIntoFile.addEntry(fakePHID1, 7, 1, 0, 5);
0842 indexIntoFile.addEntry(fakePHID1, 7, 2, 0, 6);
0843 indexIntoFile.addEntry(fakePHID1, 7, 3, 1, 2);
0844 indexIntoFile.addEntry(fakePHID1, 7, 3, 0, 7);
0845 indexIntoFile.addEntry(fakePHID1, 7, 4, 0, 8);
0846 indexIntoFile.addEntry(fakePHID1, 7, 5, 0, 9);
0847 indexIntoFile.addEntry(fakePHID1, 7, 6, 1, 3);
0848 indexIntoFile.addEntry(fakePHID1, 7, 6, 0, 10);
0849 indexIntoFile.addEntry(fakePHID1, 7, 7, 1, 4);
0850 indexIntoFile.addEntry(fakePHID1, 7, 7, 0, 11);
0851 indexIntoFile.addEntry(fakePHID1, 7, 8, 0, 12);
0852 indexIntoFile.addEntry(fakePHID1, 7, 9, 0, 13);
0853
0854 indexIntoFile.addEntry(fakePHID1, 1, 0, 0, 0);
0855 indexIntoFile.addEntry(fakePHID1, 2, 0, 0, 1);
0856 indexIntoFile.addEntry(fakePHID1, 3, 0, 0, 2);
0857 indexIntoFile.addEntry(fakePHID1, 4, 0, 0, 3);
0858 indexIntoFile.addEntry(fakePHID1, 5, 0, 0, 4);
0859 indexIntoFile.addEntry(fakePHID1, 6, 0, 0, 5);
0860 indexIntoFile.addEntry(fakePHID1, 7, 0, 0, 6);
0861 indexIntoFile.addEntry(fakePHID1, 8, 0, 0, 7);
0862 indexIntoFile.addEntry(fakePHID1, 9, 0, 0, 8);
0863
0864 indexIntoFile.addEntry(fakePHID1, 8, 0, 0, 9);
0865 indexIntoFile.addEntry(fakePHID1, 5, 0, 0, 10);
0866 indexIntoFile.addEntry(fakePHID1, 4, 0, 0, 11);
0867 indexIntoFile.addEntry(fakePHID1, 4, 0, 0, 12);
0868 indexIntoFile.addEntry(fakePHID1, 4, 0, 0, 13);
0869 indexIntoFile.addEntry(fakePHID1, 2, 0, 0, 14);
0870 indexIntoFile.addEntry(fakePHID1, 2, 0, 0, 15);
0871
0872 indexIntoFile.sortVector_Run_Or_Lumi_Entries();
0873
0874 edm::IndexIntoFile::IndexIntoFileItr iterEntry = indexIntoFile.begin(IndexIntoFile::entryOrder);
0875 edm::IndexIntoFile::IndexIntoFileItr iterEntryEnd = indexIntoFile.end(IndexIntoFile::entryOrder);
0876 int i = 0;
0877 for (; iterEntry != iterEntryEnd; ++iterEntry, ++i) {
0878 if (i == 0) {
0879 check(iterEntry, kRun, 0, 1, -1, 0, 0);
0880 CPPUNIT_ASSERT(iterEntry.run() == 1 && iterEntry.lumi() == IndexIntoFile::invalidLumi);
0881 CPPUNIT_ASSERT(iterEntry.shouldProcessRun());
0882 } else if (i == 1) {
0883 check(iterEntry, kLumi, 0, 1, -1, 0, 0);
0884 CPPUNIT_ASSERT(iterEntry.run() == 1 && iterEntry.lumi() == 1);
0885 } else if (i == 2) {
0886 check(iterEntry, kRun, 2, -1, -1, 0, 0);
0887 CPPUNIT_ASSERT(iterEntry.run() == 2 && iterEntry.lumi() == IndexIntoFile::invalidLumi);
0888 } else if (i == 3) {
0889 check(iterEntry, kRun, 3, -1, -1, 0, 0);
0890 CPPUNIT_ASSERT(iterEntry.run() == 2 && iterEntry.lumi() == IndexIntoFile::invalidLumi);
0891 } else if (i == 4) {
0892 check(iterEntry, kRun, 4, -1, -1, 0, 0);
0893 CPPUNIT_ASSERT(iterEntry.run() == 2 && iterEntry.lumi() == IndexIntoFile::invalidLumi);
0894 } else if (i == 5) {
0895 check(iterEntry, kRun, 5, 6, 6, 0, 1);
0896 CPPUNIT_ASSERT(iterEntry.run() == 3 && iterEntry.lumi() == IndexIntoFile::invalidLumi);
0897 } else if (i == 6) {
0898 check(iterEntry, kLumi, 5, 6, 6, 0, 1);
0899 CPPUNIT_ASSERT(iterEntry.run() == 3 && iterEntry.lumi() == 1);
0900 } else if (i == 7) {
0901 check(iterEntry, kEvent, 5, 6, 6, 0, 1);
0902 CPPUNIT_ASSERT(iterEntry.run() == 3 && iterEntry.lumi() == 1);
0903 } else if (i == 8) {
0904 check(iterEntry, kRun, 7, 11, 11, 0, 1);
0905 CPPUNIT_ASSERT(iterEntry.run() == 4 && iterEntry.lumi() == IndexIntoFile::invalidLumi);
0906 } else if (i == 9) {
0907 check(iterEntry, kRun, 8, 11, 11, 0, 1);
0908 CPPUNIT_ASSERT(iterEntry.run() == 4 && iterEntry.lumi() == IndexIntoFile::invalidLumi);
0909 } else if (i == 10) {
0910 check(iterEntry, kRun, 9, 11, 11, 0, 1);
0911 CPPUNIT_ASSERT(iterEntry.run() == 4 && iterEntry.lumi() == IndexIntoFile::invalidLumi);
0912 } else if (i == 11) {
0913 check(iterEntry, kRun, 10, 11, 11, 0, 1);
0914 CPPUNIT_ASSERT(iterEntry.run() == 4 && iterEntry.lumi() == IndexIntoFile::invalidLumi);
0915 } else if (i == 12) {
0916 check(iterEntry, kLumi, 10, 11, 11, 0, 1);
0917 CPPUNIT_ASSERT(iterEntry.run() == 4 && iterEntry.lumi() == 1);
0918 } else if (i == 13) {
0919 check(iterEntry, kEvent, 10, 11, 11, 0, 1);
0920 CPPUNIT_ASSERT(iterEntry.run() == 4 && iterEntry.lumi() == 1);
0921 } else if (i == 14) {
0922 check(iterEntry, kRun, 12, 14, -1, 0, 0);
0923 CPPUNIT_ASSERT(iterEntry.run() == 5 && iterEntry.lumi() == IndexIntoFile::invalidLumi);
0924 } else if (i == 15) {
0925 check(iterEntry, kRun, 13, 14, -1, 0, 0);
0926 CPPUNIT_ASSERT(iterEntry.run() == 5 && iterEntry.lumi() == IndexIntoFile::invalidLumi);
0927 } else if (i == 16) {
0928 check(iterEntry, kLumi, 13, 14, -1, 0, 0);
0929 CPPUNIT_ASSERT(iterEntry.run() == 5 && iterEntry.lumi() == 1);
0930 } else if (i == 17) {
0931 check(iterEntry, kRun, 15, -1, -1, 0, 0);
0932 CPPUNIT_ASSERT(iterEntry.run() == 6 && iterEntry.lumi() == IndexIntoFile::invalidLumi);
0933 } else if (i == 18) {
0934 check(iterEntry, kRun, 16, 17, -1, 0, 0);
0935 CPPUNIT_ASSERT(iterEntry.run() == 7 && iterEntry.lumi() == IndexIntoFile::invalidLumi);
0936 } else if (i == 19) {
0937 check(iterEntry, kLumi, 16, 17, -1, 0, 0);
0938 CPPUNIT_ASSERT(iterEntry.run() == 7 && iterEntry.lumi() == 1);
0939 } else if (i == 20) {
0940 check(iterEntry, kLumi, 16, 18, -1, 0, 0);
0941 CPPUNIT_ASSERT(iterEntry.run() == 7 && iterEntry.lumi() == 2);
0942 } else if (i == 21) {
0943 check(iterEntry, kLumi, 16, 19, 19, 0, 1);
0944 CPPUNIT_ASSERT(iterEntry.run() == 7 && iterEntry.lumi() == 3);
0945 } else if (i == 22) {
0946 check(iterEntry, kEvent, 16, 19, 19, 0, 1);
0947 CPPUNIT_ASSERT(iterEntry.run() == 7 && iterEntry.lumi() == 3);
0948 } else if (i == 23) {
0949 check(iterEntry, kLumi, 16, 20, -1, 0, 0);
0950 CPPUNIT_ASSERT(iterEntry.run() == 7 && iterEntry.lumi() == 4);
0951 } else if (i == 24) {
0952 check(iterEntry, kLumi, 16, 21, -1, 0, 0);
0953 CPPUNIT_ASSERT(iterEntry.run() == 7 && iterEntry.lumi() == 5);
0954 } else if (i == 25) {
0955 check(iterEntry, kLumi, 16, 22, 22, 0, 1);
0956 CPPUNIT_ASSERT(iterEntry.run() == 7 && iterEntry.lumi() == 6);
0957 } else if (i == 26) {
0958 check(iterEntry, kEvent, 16, 22, 22, 0, 1);
0959 CPPUNIT_ASSERT(iterEntry.run() == 7 && iterEntry.lumi() == 6);
0960 } else if (i == 27) {
0961 check(iterEntry, kLumi, 16, 23, 23, 0, 1);
0962 CPPUNIT_ASSERT(iterEntry.run() == 7 && iterEntry.lumi() == 7);
0963 } else if (i == 28) {
0964 check(iterEntry, kEvent, 16, 23, 23, 0, 1);
0965 CPPUNIT_ASSERT(iterEntry.run() == 7 && iterEntry.lumi() == 7);
0966 } else if (i == 29) {
0967 check(iterEntry, kLumi, 16, 24, -1, 0, 0);
0968 CPPUNIT_ASSERT(iterEntry.run() == 7 && iterEntry.lumi() == 8);
0969 } else if (i == 30) {
0970 check(iterEntry, kLumi, 16, 25, -1, 0, 0);
0971 CPPUNIT_ASSERT(iterEntry.run() == 7 && iterEntry.lumi() == 9);
0972 } else if (i == 31) {
0973 check(iterEntry, kRun, 26, 28, -1, 0, 0);
0974 CPPUNIT_ASSERT(iterEntry.run() == 8 && iterEntry.lumi() == IndexIntoFile::invalidLumi);
0975 } else if (i == 32) {
0976 check(iterEntry, kRun, 27, 28, -1, 0, 0);
0977 CPPUNIT_ASSERT(iterEntry.run() == 8 && iterEntry.lumi() == IndexIntoFile::invalidLumi);
0978 } else if (i == 33) {
0979 check(iterEntry, kLumi, 27, 28, -1, 0, 0);
0980 CPPUNIT_ASSERT(iterEntry.run() == 8 && iterEntry.lumi() == 1);
0981 } else if (i == 34) {
0982 check(iterEntry, kRun, 29, -1, -1, 0, 0);
0983 CPPUNIT_ASSERT(iterEntry.run() == 9 && iterEntry.lumi() == IndexIntoFile::invalidLumi);
0984 } else
0985 CPPUNIT_ASSERT(false);
0986 }
0987 CPPUNIT_ASSERT(i == 35);
0988 }
0989
0990 void TestIndexIntoFile::testLumisNoEvents() {
0991 edm::IndexIntoFile indexIntoFile;
0992 indexIntoFile.addEntry(fakePHID1, 2, 7, 1, 0);
0993 indexIntoFile.addEntry(fakePHID1, 2, 8, 1, 1);
0994
0995 indexIntoFile.addEntry(fakePHID1, 1, 1, 1, 2);
0996 indexIntoFile.addEntry(fakePHID1, 1, 1, 0, 0);
0997 indexIntoFile.addEntry(fakePHID1, 1, 0, 0, 0);
0998
0999 indexIntoFile.addEntry(fakePHID1, 2, 7, 2, 3);
1000
1001 indexIntoFile.addEntry(fakePHID1, 2, 1, 1, 4);
1002 indexIntoFile.addEntry(fakePHID1, 2, 1, 0, 1);
1003 indexIntoFile.addEntry(fakePHID1, 2, 2, 0, 2);
1004 indexIntoFile.addEntry(fakePHID1, 2, 3, 0, 3);
1005 indexIntoFile.addEntry(fakePHID1, 2, 4, 0, 4);
1006 indexIntoFile.addEntry(fakePHID1, 2, 5, 1, 5);
1007 indexIntoFile.addEntry(fakePHID1, 2, 5, 0, 5);
1008 indexIntoFile.addEntry(fakePHID1, 2, 6, 0, 6);
1009 indexIntoFile.addEntry(fakePHID1, 2, 7, 3, 6);
1010 indexIntoFile.addEntry(fakePHID1, 2, 7, 0, 7);
1011 indexIntoFile.addEntry(fakePHID1, 2, 8, 1, 7);
1012 indexIntoFile.addEntry(fakePHID1, 2, 8, 0, 8);
1013 indexIntoFile.addEntry(fakePHID1, 2, 9, 0, 9);
1014 indexIntoFile.addEntry(fakePHID1, 2, 0, 0, 1);
1015
1016 indexIntoFile.addEntry(fakePHID1, 3, 1, 1, 8);
1017 indexIntoFile.addEntry(fakePHID1, 3, 1, 0, 10);
1018 indexIntoFile.addEntry(fakePHID1, 3, 0, 0, 2);
1019
1020 indexIntoFile.addEntry(fakePHID1, 2, 4, 1, 9);
1021 indexIntoFile.addEntry(fakePHID1, 2, 7, 4, 10);
1022 indexIntoFile.addEntry(fakePHID1, 2, 7, 5, 11);
1023 indexIntoFile.addEntry(fakePHID1, 2, 7, 0, 11);
1024 indexIntoFile.addEntry(fakePHID1, 2, 3, 1, 12);
1025 indexIntoFile.addEntry(fakePHID1, 2, 3, 0, 12);
1026 indexIntoFile.addEntry(fakePHID1, 2, 4, 2, 13);
1027 indexIntoFile.addEntry(fakePHID1, 2, 4, 0, 13);
1028 indexIntoFile.addEntry(fakePHID1, 2, 7, 6, 14);
1029 indexIntoFile.addEntry(fakePHID1, 2, 7, 0, 14);
1030 indexIntoFile.addEntry(fakePHID1, 2, 7, 7, 15);
1031 indexIntoFile.addEntry(fakePHID1, 2, 7, 8, 16);
1032 indexIntoFile.addEntry(fakePHID1, 2, 3, 0, 15);
1033 indexIntoFile.addEntry(fakePHID1, 2, 7, 9, 17);
1034 indexIntoFile.addEntry(fakePHID1, 2, 7, 10, 18);
1035 indexIntoFile.addEntry(fakePHID1, 2, 7, 0, 16);
1036 indexIntoFile.addEntry(fakePHID1, 2, 7, 0, 17);
1037 indexIntoFile.addEntry(fakePHID1, 2, 7, 0, 18);
1038 indexIntoFile.addEntry(fakePHID1, 2, 0, 0, 3);
1039 indexIntoFile.addEntry(fakePHID1, 2, 0, 0, 4);
1040 indexIntoFile.sortVector_Run_Or_Lumi_Entries();
1041
1042 edm::IndexIntoFile::IndexIntoFileItr iterEntry = indexIntoFile.begin(IndexIntoFile::entryOrder);
1043 edm::IndexIntoFile::IndexIntoFileItr iterEntryEnd = indexIntoFile.end(IndexIntoFile::entryOrder);
1044 int i = 0;
1045 for (; iterEntry != iterEntryEnd; ++iterEntry, ++i) {
1046 if (i == 0) {
1047 check(iterEntry, kRun, 0, 1, 1, 0, 1);
1048 CPPUNIT_ASSERT(iterEntry.run() == 2 && iterEntry.lumi() == IndexIntoFile::invalidLumi);
1049 CPPUNIT_ASSERT(!iterEntry.shouldProcessRun());
1050 CPPUNIT_ASSERT(iterEntry.entry() == 1);
1051 } else if (i == 1) {
1052 check(iterEntry, kLumi, 0, 1, 1, 0, 1);
1053 CPPUNIT_ASSERT(iterEntry.run() == 2 && iterEntry.lumi() == 7);
1054 CPPUNIT_ASSERT(!iterEntry.shouldProcessLumi());
1055 CPPUNIT_ASSERT(iterEntry.entry() == 7);
1056 } else if (i == 2) {
1057 check(iterEntry, kEvent, 0, 1, 1, 0, 1);
1058 CPPUNIT_ASSERT(iterEntry.run() == 2 && iterEntry.lumi() == 7);
1059 CPPUNIT_ASSERT(iterEntry.entry() == 0);
1060 } else if (i == 3) {
1061 check(iterEntry, kLumi, 0, 2, 2, 0, 1);
1062 CPPUNIT_ASSERT(iterEntry.run() == 2 && iterEntry.lumi() == 8);
1063 CPPUNIT_ASSERT(!iterEntry.shouldProcessLumi());
1064 CPPUNIT_ASSERT(iterEntry.entry() == 8);
1065 } else if (i == 4) {
1066 check(iterEntry, kEvent, 0, 2, 2, 0, 1);
1067 CPPUNIT_ASSERT(iterEntry.run() == 2 && iterEntry.lumi() == 8);
1068 CPPUNIT_ASSERT(iterEntry.entry() == 1);
1069 } else if (i == 5) {
1070 check(iterEntry, kRun, 3, 4, 4, 0, 1);
1071 CPPUNIT_ASSERT(iterEntry.run() == 1 && iterEntry.lumi() == IndexIntoFile::invalidLumi);
1072 CPPUNIT_ASSERT(iterEntry.shouldProcessRun());
1073 CPPUNIT_ASSERT(iterEntry.entry() == 0);
1074 } else if (i == 6) {
1075 check(iterEntry, kLumi, 3, 4, 4, 0, 1);
1076 CPPUNIT_ASSERT(iterEntry.run() == 1 && iterEntry.lumi() == 1);
1077 CPPUNIT_ASSERT(iterEntry.shouldProcessLumi());
1078 CPPUNIT_ASSERT(iterEntry.entry() == 0);
1079 } else if (i == 7) {
1080 check(iterEntry, kEvent, 3, 4, 4, 0, 1);
1081 CPPUNIT_ASSERT(iterEntry.run() == 1 && iterEntry.lumi() == 1);
1082 CPPUNIT_ASSERT(iterEntry.entry() == 2);
1083 } else if (i == 8) {
1084 check(iterEntry, kRun, 5, 6, 6, 0, 1);
1085 CPPUNIT_ASSERT(iterEntry.run() == 2 && iterEntry.lumi() == IndexIntoFile::invalidLumi);
1086 CPPUNIT_ASSERT(!iterEntry.shouldProcessRun());
1087 CPPUNIT_ASSERT(iterEntry.entry() == 1);
1088 } else if (i == 9) {
1089 check(iterEntry, kLumi, 5, 6, 6, 0, 1);
1090 CPPUNIT_ASSERT(iterEntry.run() == 2 && iterEntry.lumi() == 7);
1091 CPPUNIT_ASSERT(!iterEntry.shouldProcessLumi());
1092 CPPUNIT_ASSERT(iterEntry.entry() == 7);
1093 } else if (i == 10) {
1094 check(iterEntry, kEvent, 5, 6, 6, 0, 1);
1095 CPPUNIT_ASSERT(iterEntry.run() == 2 && iterEntry.lumi() == 7);
1096 CPPUNIT_ASSERT(iterEntry.entry() == 3);
1097 } else if (i == 11) {
1098 check(iterEntry, kLumi, 5, 7, 7, 0, 1);
1099 CPPUNIT_ASSERT(iterEntry.run() == 2 && iterEntry.lumi() == 1);
1100 CPPUNIT_ASSERT(!iterEntry.shouldProcessLumi());
1101 CPPUNIT_ASSERT(iterEntry.entry() == 1);
1102 } else if (i == 12) {
1103 check(iterEntry, kEvent, 5, 7, 7, 0, 1);
1104 CPPUNIT_ASSERT(iterEntry.run() == 2 && iterEntry.lumi() == 1);
1105 CPPUNIT_ASSERT(iterEntry.entry() == 4);
1106 } else if (i == 13) {
1107 check(iterEntry, kLumi, 5, 8, 8, 0, 1);
1108 CPPUNIT_ASSERT(iterEntry.run() == 2 && iterEntry.lumi() == 5);
1109 CPPUNIT_ASSERT(!iterEntry.shouldProcessLumi());
1110 CPPUNIT_ASSERT(iterEntry.entry() == 5);
1111 } else if (i == 14) {
1112 check(iterEntry, kEvent, 5, 8, 8, 0, 1);
1113 CPPUNIT_ASSERT(iterEntry.run() == 2 && iterEntry.lumi() == 5);
1114 CPPUNIT_ASSERT(iterEntry.entry() == 5);
1115 } else if (i == 15) {
1116 check(iterEntry, kLumi, 5, 9, 9, 0, 1);
1117 CPPUNIT_ASSERT(iterEntry.run() == 2 && iterEntry.lumi() == 7);
1118 CPPUNIT_ASSERT(!iterEntry.shouldProcessLumi());
1119 CPPUNIT_ASSERT(iterEntry.entry() == 7);
1120 } else if (i == 16) {
1121 check(iterEntry, kEvent, 5, 9, 9, 0, 1);
1122 CPPUNIT_ASSERT(iterEntry.run() == 2 && iterEntry.lumi() == 7);
1123 CPPUNIT_ASSERT(iterEntry.entry() == 6);
1124 } else if (i == 17) {
1125 check(iterEntry, kLumi, 5, 10, 10, 0, 1);
1126 CPPUNIT_ASSERT(iterEntry.run() == 2 && iterEntry.lumi() == 8);
1127 CPPUNIT_ASSERT(!iterEntry.shouldProcessLumi());
1128 CPPUNIT_ASSERT(iterEntry.entry() == 8);
1129 } else if (i == 18) {
1130 check(iterEntry, kEvent, 5, 10, 10, 0, 1);
1131 CPPUNIT_ASSERT(iterEntry.run() == 2 && iterEntry.lumi() == 8);
1132 CPPUNIT_ASSERT(iterEntry.entry() == 7);
1133 } else if (i == 19) {
1134 check(iterEntry, kRun, 11, 12, 12, 0, 1);
1135 CPPUNIT_ASSERT(iterEntry.run() == 3 && iterEntry.lumi() == IndexIntoFile::invalidLumi);
1136 CPPUNIT_ASSERT(iterEntry.shouldProcessRun());
1137 CPPUNIT_ASSERT(iterEntry.entry() == 2);
1138 } else if (i == 20) {
1139 check(iterEntry, kLumi, 11, 12, 12, 0, 1);
1140 CPPUNIT_ASSERT(iterEntry.run() == 3 && iterEntry.lumi() == 1);
1141 CPPUNIT_ASSERT(iterEntry.shouldProcessLumi());
1142 CPPUNIT_ASSERT(iterEntry.entry() == 10);
1143 } else if (i == 21) {
1144 check(iterEntry, kEvent, 11, 12, 12, 0, 1);
1145 CPPUNIT_ASSERT(iterEntry.run() == 3 && iterEntry.lumi() == 1);
1146 CPPUNIT_ASSERT(iterEntry.entry() == 8);
1147 } else if (i == 22) {
1148 check(iterEntry, kRun, 13, 16, 16, 0, 1);
1149 CPPUNIT_ASSERT(iterEntry.run() == 2 && iterEntry.lumi() == IndexIntoFile::invalidLumi);
1150 CPPUNIT_ASSERT(iterEntry.shouldProcessRun());
1151 CPPUNIT_ASSERT(iterEntry.entry() == 1);
1152 } else if (i == 23) {
1153 check(iterEntry, kRun, 14, 16, 16, 0, 1);
1154 CPPUNIT_ASSERT(iterEntry.run() == 2 && iterEntry.lumi() == IndexIntoFile::invalidLumi);
1155 CPPUNIT_ASSERT(iterEntry.shouldProcessRun());
1156 CPPUNIT_ASSERT(iterEntry.entry() == 3);
1157 } else if (i == 24) {
1158 check(iterEntry, kRun, 15, 16, 16, 0, 1);
1159 CPPUNIT_ASSERT(iterEntry.run() == 2 && iterEntry.lumi() == IndexIntoFile::invalidLumi);
1160 CPPUNIT_ASSERT(iterEntry.shouldProcessRun());
1161 CPPUNIT_ASSERT(iterEntry.entry() == 4);
1162 } else if (i == 25) {
1163 check(iterEntry, kLumi, 15, 16, 16, 0, 1);
1164 CPPUNIT_ASSERT(iterEntry.run() == 2 && iterEntry.lumi() == 4);
1165 CPPUNIT_ASSERT(!iterEntry.shouldProcessLumi());
1166 CPPUNIT_ASSERT(iterEntry.entry() == 4);
1167 } else if (i == 26) {
1168 check(iterEntry, kEvent, 15, 16, 16, 0, 1);
1169 CPPUNIT_ASSERT(iterEntry.run() == 2 && iterEntry.lumi() == 4);
1170 CPPUNIT_ASSERT(iterEntry.entry() == 9);
1171 } else if (i == 27) {
1172 check(iterEntry, kLumi, 15, 17, 17, 0, 2);
1173 CPPUNIT_ASSERT(iterEntry.run() == 2 && iterEntry.lumi() == 7);
1174 CPPUNIT_ASSERT(!iterEntry.shouldProcessLumi());
1175 CPPUNIT_ASSERT(iterEntry.entry() == 11);
1176 } else if (i == 28) {
1177 check(iterEntry, kEvent, 15, 17, 17, 0, 2);
1178 CPPUNIT_ASSERT(iterEntry.run() == 2 && iterEntry.lumi() == 7);
1179 CPPUNIT_ASSERT(iterEntry.entry() == 10);
1180 } else if (i == 29) {
1181 check(iterEntry, kEvent, 15, 17, 17, 1, 2);
1182 CPPUNIT_ASSERT(iterEntry.run() == 2 && iterEntry.lumi() == 7);
1183 CPPUNIT_ASSERT(iterEntry.entry() == 11);
1184 } else if (i == 30) {
1185 check(iterEntry, kLumi, 15, 18, -1, 0, 0);
1186 CPPUNIT_ASSERT(iterEntry.run() == 2 && iterEntry.lumi() == 1);
1187 CPPUNIT_ASSERT(iterEntry.shouldProcessLumi());
1188 CPPUNIT_ASSERT(iterEntry.entry() == 1);
1189 } else if (i == 31) {
1190 check(iterEntry, kLumi, 15, 19, -1, 0, 0);
1191 CPPUNIT_ASSERT(iterEntry.run() == 2 && iterEntry.lumi() == 2);
1192 CPPUNIT_ASSERT(iterEntry.shouldProcessLumi());
1193 CPPUNIT_ASSERT(iterEntry.entry() == 2);
1194 } else if (i == 32) {
1195 check(iterEntry, kLumi, 15, 20, 21, 0, 1);
1196 CPPUNIT_ASSERT(iterEntry.run() == 2 && iterEntry.lumi() == 3);
1197 CPPUNIT_ASSERT(iterEntry.shouldProcessLumi());
1198 CPPUNIT_ASSERT(iterEntry.entry() == 3);
1199 } else if (i == 33) {
1200 check(iterEntry, kLumi, 15, 21, 21, 0, 1);
1201 CPPUNIT_ASSERT(iterEntry.run() == 2 && iterEntry.lumi() == 3);
1202 CPPUNIT_ASSERT(iterEntry.shouldProcessLumi());
1203 CPPUNIT_ASSERT(iterEntry.entry() == 12);
1204 } else if (i == 34) {
1205 check(iterEntry, kLumi, 15, 22, 21, 0, 1);
1206 CPPUNIT_ASSERT(iterEntry.run() == 2 && iterEntry.lumi() == 3);
1207 CPPUNIT_ASSERT(iterEntry.shouldProcessLumi());
1208 CPPUNIT_ASSERT(iterEntry.entry() == 15);
1209 } else if (i == 35) {
1210 check(iterEntry, kEvent, 15, 22, 21, 0, 1);
1211 CPPUNIT_ASSERT(iterEntry.run() == 2 && iterEntry.lumi() == 3);
1212 CPPUNIT_ASSERT(iterEntry.entry() == 12);
1213 } else if (i == 36) {
1214 check(iterEntry, kLumi, 15, 23, 24, 0, 1);
1215 CPPUNIT_ASSERT(iterEntry.run() == 2 && iterEntry.lumi() == 4);
1216 CPPUNIT_ASSERT(iterEntry.shouldProcessLumi());
1217 CPPUNIT_ASSERT(iterEntry.entry() == 4);
1218 } else if (i == 37) {
1219 check(iterEntry, kLumi, 15, 24, 24, 0, 1);
1220 CPPUNIT_ASSERT(iterEntry.run() == 2 && iterEntry.lumi() == 4);
1221 CPPUNIT_ASSERT(iterEntry.shouldProcessLumi());
1222 CPPUNIT_ASSERT(iterEntry.entry() == 13);
1223 } else if (i == 38) {
1224 check(iterEntry, kEvent, 15, 24, 24, 0, 1);
1225 CPPUNIT_ASSERT(iterEntry.run() == 2 && iterEntry.lumi() == 4);
1226 CPPUNIT_ASSERT(iterEntry.entry() == 13);
1227 } else if (i == 39) {
1228 check(iterEntry, kLumi, 15, 25, -1, 0, 0);
1229 CPPUNIT_ASSERT(iterEntry.run() == 2 && iterEntry.lumi() == 5);
1230 CPPUNIT_ASSERT(iterEntry.shouldProcessLumi());
1231 CPPUNIT_ASSERT(iterEntry.entry() == 5);
1232 } else if (i == 40) {
1233 check(iterEntry, kLumi, 15, 26, -1, 0, 0);
1234 CPPUNIT_ASSERT(iterEntry.run() == 2 && iterEntry.lumi() == 6);
1235 CPPUNIT_ASSERT(iterEntry.shouldProcessLumi());
1236 CPPUNIT_ASSERT(iterEntry.entry() == 6);
1237 } else if (i == 41) {
1238 check(iterEntry, kLumi, 15, 27, 29, 0, 1);
1239 CPPUNIT_ASSERT(iterEntry.run() == 2 && iterEntry.lumi() == 7);
1240 CPPUNIT_ASSERT(iterEntry.shouldProcessLumi());
1241 CPPUNIT_ASSERT(iterEntry.entry() == 7);
1242 } else if (i == 42) {
1243 check(iterEntry, kLumi, 15, 28, 29, 0, 1);
1244 CPPUNIT_ASSERT(iterEntry.run() == 2 && iterEntry.lumi() == 7);
1245 CPPUNIT_ASSERT(iterEntry.shouldProcessLumi());
1246 CPPUNIT_ASSERT(iterEntry.entry() == 11);
1247 } else if (i == 43) {
1248 check(iterEntry, kLumi, 15, 29, 29, 0, 1);
1249 CPPUNIT_ASSERT(iterEntry.run() == 2 && iterEntry.lumi() == 7);
1250 CPPUNIT_ASSERT(iterEntry.shouldProcessLumi());
1251 CPPUNIT_ASSERT(iterEntry.entry() == 14);
1252 } else if (i == 44) {
1253 check(iterEntry, kLumi, 15, 30, 29, 0, 1);
1254 CPPUNIT_ASSERT(iterEntry.run() == 2 && iterEntry.lumi() == 7);
1255 CPPUNIT_ASSERT(!iterEntry.shouldProcessLumi());
1256 CPPUNIT_ASSERT(iterEntry.entry() == 16);
1257 } else if (i == 45) {
1258 check(iterEntry, kLumi, 15, 31, 29, 0, 1);
1259 CPPUNIT_ASSERT(iterEntry.run() == 2 && iterEntry.lumi() == 7);
1260 CPPUNIT_ASSERT(iterEntry.shouldProcessLumi());
1261 CPPUNIT_ASSERT(iterEntry.entry() == 16);
1262 } else if (i == 46) {
1263 check(iterEntry, kLumi, 15, 32, 29, 0, 1);
1264 CPPUNIT_ASSERT(iterEntry.run() == 2 && iterEntry.lumi() == 7);
1265 CPPUNIT_ASSERT(iterEntry.shouldProcessLumi());
1266 CPPUNIT_ASSERT(iterEntry.entry() == 17);
1267 } else if (i == 47) {
1268 check(iterEntry, kLumi, 15, 33, 29, 0, 1);
1269 CPPUNIT_ASSERT(iterEntry.run() == 2 && iterEntry.lumi() == 7);
1270 CPPUNIT_ASSERT(iterEntry.shouldProcessLumi());
1271 CPPUNIT_ASSERT(iterEntry.entry() == 18);
1272 } else if (i == 48) {
1273 check(iterEntry, kEvent, 15, 33, 29, 0, 1);
1274 CPPUNIT_ASSERT(iterEntry.run() == 2 && iterEntry.lumi() == 7);
1275 CPPUNIT_ASSERT(iterEntry.entry() == 14);
1276 } else if (i == 49) {
1277 check(iterEntry, kEvent, 15, 33, 30, 0, 2);
1278 CPPUNIT_ASSERT(iterEntry.run() == 2 && iterEntry.lumi() == 7);
1279 CPPUNIT_ASSERT(iterEntry.entry() == 15);
1280 } else if (i == 50) {
1281 check(iterEntry, kEvent, 15, 33, 30, 1, 2);
1282 CPPUNIT_ASSERT(iterEntry.run() == 2 && iterEntry.lumi() == 7);
1283 CPPUNIT_ASSERT(iterEntry.entry() == 16);
1284 } else if (i == 51) {
1285 check(iterEntry, kEvent, 15, 33, 31, 0, 2);
1286 CPPUNIT_ASSERT(iterEntry.run() == 2 && iterEntry.lumi() == 7);
1287 CPPUNIT_ASSERT(iterEntry.entry() == 17);
1288 } else if (i == 52) {
1289 check(iterEntry, kEvent, 15, 33, 31, 1, 2);
1290 CPPUNIT_ASSERT(iterEntry.run() == 2 && iterEntry.lumi() == 7);
1291 CPPUNIT_ASSERT(iterEntry.entry() == 18);
1292 } else if (i == 53) {
1293 check(iterEntry, kLumi, 15, 34, -1, 0, 0);
1294 CPPUNIT_ASSERT(iterEntry.run() == 2 && iterEntry.lumi() == 8);
1295 CPPUNIT_ASSERT(iterEntry.shouldProcessLumi());
1296 CPPUNIT_ASSERT(iterEntry.entry() == 8);
1297 } else if (i == 54) {
1298 check(iterEntry, kLumi, 15, 35, -1, 0, 0);
1299 CPPUNIT_ASSERT(iterEntry.run() == 2 && iterEntry.lumi() == 9);
1300 CPPUNIT_ASSERT(iterEntry.shouldProcessLumi());
1301 CPPUNIT_ASSERT(iterEntry.entry() == 9);
1302 } else
1303 CPPUNIT_ASSERT(false);
1304 }
1305 CPPUNIT_ASSERT(iterEntry.entry() == IndexIntoFile::invalidEntry);
1306 CPPUNIT_ASSERT(i == 55);
1307
1308 skipEventBackward(iterEntry);
1309 checkSkipped(0, 2, 7, 18);
1310 check(iterEntry, kRun, 13, 27, 31, 1, 2);
1311 }