diff --git a/Stack/History/testHistoryView.cc b/Stack/History/testHistoryView.cc index 718daac6b8134388819d53971da7612aeb75f78b..8d99e496ce2e5cf471d1ddea25cbbd51aef93b5a 100644 --- a/Stack/History/testHistoryView.cc +++ b/Stack/History/testHistoryView.cc @@ -64,6 +64,17 @@ using TheTestStackView = using TestStackView = TheTestStackView; // history::HistorySecondaryProducer<TheTestStackView>; +template <typename Event> +int count_generations(Event const* event) { + int genCounter = 0; + while (event) { + event = event->parentEvent().get(); + genCounter++; + } + + return genCounter; +} + TEST_CASE("HistoryStackExtension", "[stack]") { logging::SetLevel(logging::level::debug); @@ -85,6 +96,7 @@ TEST_CASE("HistoryStackExtension", "[stack]") { CHECK(stack.getEntries() == 1); corsika::history::EventPtr evt = p0.GetEvent(); CHECK(evt == nullptr); + CHECK(count_generations(evt.get()) == 0); SECTION("interface test, view") { @@ -108,10 +120,12 @@ TEST_CASE("HistoryStackExtension", "[stack]") { CHECK(sec.GetParentEventIndex() == i); CHECK(sec.GetEvent() != nullptr); CHECK(sec.GetEvent()->parentEvent() == nullptr); + CHECK(count_generations(sec.GetEvent().get()) == 1); } // read 1st genertion particle particle auto p1 = stack.GetNextParticle(); + CHECK(count_generations(p1.GetEvent().get()) == 1); TestStackView hview1(p1); @@ -131,6 +145,8 @@ TEST_CASE("HistoryStackExtension", "[stack]") { CHECK(sec.GetEvent()->parentEvent() == ev1); CHECK(sec.GetEvent()->parentEvent()->parentEvent() == ev0); + CHECK(count_generations(sec.GetEvent().get()) == 2); + CHECK((stack.begin() + sec.GetEvent()->projectileIndex()).GetEvent() == sec.GetEvent()->parentEvent()); } @@ -159,6 +175,8 @@ TEST_CASE("HistoryStackExtension", "[stack]") { CHECK(sec.GetEvent()->parentEvent() == ev2); CHECK(sec.GetEvent()->parentEvent()->parentEvent() == ev1); CHECK(sec.GetEvent()->parentEvent()->parentEvent()->parentEvent() == ev0); + + CHECK(count_generations(sec.GetEvent().get()) == 3); } /*