From 1d3ef7f6ba6dc1d8e29e5b21129519a1daf29c5e Mon Sep 17 00:00:00 2001 From: Maximilian Reininghaus <maximilian.reininghaus@kit.edu> Date: Tue, 14 May 2019 18:55:38 -0300 Subject: [PATCH] test deletion --- Framework/StackInterface/testSecondaryView.cc | 73 +++++++++++++++++++ 1 file changed, 73 insertions(+) diff --git a/Framework/StackInterface/testSecondaryView.cc b/Framework/StackInterface/testSecondaryView.cc index 2d2064b64..a306de379 100644 --- a/Framework/StackInterface/testSecondaryView.cc +++ b/Framework/StackInterface/testSecondaryView.cc @@ -134,4 +134,77 @@ TEST_CASE("SecondaryStack", "[stack]") { REQUIRE(view.GetSize() == 1); } + + SECTION("deletion") { + StackTest stack; + stack.AddParticle(std::tuple{0.}); + + { + auto particle = stack.GetNextParticle(); + StackTestView view(particle); + + auto proj = view.GetProjectile(); + proj.AddSecondary(std::tuple{-2.}); + proj.AddSecondary(std::tuple{-1.}); + proj.AddSecondary(std::tuple{1.}); + proj.AddSecondary(std::tuple{2.}); + + CHECK(stack.GetSize() == 5); + + // now delete all negative entries, i.e. -1 and -2 + auto p = view.begin(); + while (p != view.end()) { + auto data = p.GetData(); + if (data < 0) { + std::cout << "deleting " << data << ", "; + p.Delete(); + } else { + ++p; + } + } + + // stack should contain 0, 1, 2 now + + CHECK(stack.GetSize() == 3); + + std::cout << std::endl; + for (auto& p : stack) { std::cout << p.GetData() << " | "; } + std::cout << std::endl; + } + + // repeat + + { + auto particle = stack.GetNextParticle(); + StackTestView view(particle); + + // put -2,...,+2 on stack + auto proj = view.GetProjectile(); + proj.AddSecondary(std::tuple{-2.}); + proj.AddSecondary(std::tuple{-1.}); + proj.AddSecondary(std::tuple{1.}); + proj.AddSecondary(std::tuple{2.}); + // stack should contain 0, 1, 2, [ -2, -1, 1, 2] + + auto p = view.begin(); + while (p != view.end()) { + auto data = p.GetData(); + if (data < 0) { + std::cout << "deleting " << data << ", "; + p.Delete(); + } else { + ++p; + } + } + + // stack should contain 0, 1, 2, 0, [1, 2] + // view should contain 1, 2 + + CHECK(stack.GetSize() == 6); + + std::cout << std::endl; + for (auto& p : stack) { std::cout << p.GetData() << " | "; } + std::cout << std::endl; + } + } } -- GitLab