Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-07-12 07:53:04

0001 // This file is part of the ACTS project.
0002 //
0003 // Copyright (C) 2016 CERN for the benefit of the ACTS project
0004 //
0005 // This Source Code Form is subject to the terms of the Mozilla Public
0006 // License, v. 2.0. If a copy of the MPL was not distributed with this
0007 // file, You can obtain one at https://mozilla.org/MPL/2.0/.
0008 
0009 #include <boost/test/unit_test.hpp>
0010 
0011 #include "Acts/EventData/SourceLink.hpp"
0012 #include "Acts/EventData/SpacePointContainer2.hpp"
0013 
0014 using namespace Acts;
0015 using namespace Acts::Experimental;
0016 
0017 BOOST_AUTO_TEST_SUITE(EventDataSpacePointContainer2)
0018 
0019 BOOST_AUTO_TEST_CASE(Empty) {
0020   SpacePointContainer2 container;
0021 
0022   BOOST_CHECK(container.empty());
0023   BOOST_CHECK_EQUAL(container.size(), 0u);
0024 
0025   for ([[maybe_unused]] auto _ : container) {
0026     BOOST_FAIL("Container should be empty, no space points should be iterated");
0027   }
0028 }
0029 
0030 BOOST_AUTO_TEST_CASE(Create) {
0031   SpacePointContainer2 container;
0032   container.reserve(1);
0033 
0034   container.createSpacePoint(std::array<SourceLink, 1>{SourceLink(42)}, 1, 2,
0035                              3);
0036 
0037   BOOST_CHECK(!container.empty());
0038   BOOST_CHECK_EQUAL(container.size(), 1u);
0039 
0040   auto spacePoint = container.at(0);
0041   BOOST_CHECK_EQUAL(spacePoint.x(), 1);
0042   BOOST_CHECK_EQUAL(spacePoint.y(), 2);
0043   BOOST_CHECK_EQUAL(spacePoint.z(), 3);
0044   BOOST_CHECK_EQUAL(spacePoint.sourceLinks().size(), 1u);
0045   BOOST_CHECK_EQUAL(spacePoint.sourceLinks()[0].get<int>(), 42);
0046 }
0047 
0048 BOOST_AUTO_TEST_CASE(Iterate) {
0049   SpacePointContainer2 container;
0050   container.reserve(1);
0051 
0052   container.createSpacePoint(std::array<SourceLink, 1>{SourceLink(42)}, 1, 2,
0053                              3);
0054 
0055   auto it = container.begin();
0056   BOOST_CHECK(it != container.end());
0057   BOOST_CHECK_EQUAL((*it).x(), 1);
0058   ++it;
0059   BOOST_CHECK(it == container.end());
0060 }
0061 
0062 BOOST_AUTO_TEST_CASE(CopyAndMove) {
0063   SpacePointContainer2 container;
0064   container.reserve(1);
0065 
0066   container.createSpacePoint(std::array<SourceLink, 1>{SourceLink(42)}, 1, 2,
0067                              3);
0068 
0069   SpacePointContainer2 containerCopy = container;
0070   BOOST_CHECK(!containerCopy.empty());
0071   BOOST_CHECK_EQUAL(containerCopy.size(), 1u);
0072 
0073   SpacePointContainer2 containerMove = std::move(container);
0074   BOOST_CHECK(!containerMove.empty());
0075   BOOST_CHECK_EQUAL(containerMove.size(), 1u);
0076   // original should be empty after move
0077   BOOST_CHECK(container.empty());
0078   BOOST_CHECK_EQUAL(container.size(), 0u);
0079   // copy should be unchanged
0080   BOOST_CHECK(!containerCopy.empty());
0081   BOOST_CHECK_EQUAL(containerCopy.size(), 1u);
0082 }
0083 
0084 BOOST_AUTO_TEST_CASE(Clear) {
0085   SpacePointContainer2 container;
0086   container.reserve(1);
0087 
0088   container.createSpacePoint(std::array<SourceLink, 1>{SourceLink(42)}, 1, 2,
0089                              3);
0090 
0091   container.clear();
0092 
0093   BOOST_CHECK(container.empty());
0094   BOOST_CHECK_EQUAL(container.size(), 0u);
0095   for ([[maybe_unused]] auto _ : container) {
0096     BOOST_FAIL("Container should be empty, no space points should be iterated");
0097   }
0098 }
0099 
0100 BOOST_AUTO_TEST_CASE(KnownExtraColumns) {
0101   SpacePointContainer2 container;
0102 
0103   BOOST_CHECK(!container.hasExtraColumns(SpacePointKnownExtraColumn::R |
0104                                          SpacePointKnownExtraColumn::Phi));
0105 
0106   container.createExtraColumns(SpacePointKnownExtraColumn::R |
0107                                SpacePointKnownExtraColumn::Phi);
0108 
0109   BOOST_CHECK(container.hasExtraColumns(SpacePointKnownExtraColumn::R |
0110                                         SpacePointKnownExtraColumn::Phi));
0111 
0112   auto sp = container.createSpacePoint(
0113       std::array<SourceLink, 1>{SourceLink(42)}, 1, 2, 3);
0114   sp.r() = 100;
0115 
0116   BOOST_CHECK_EQUAL(sp.r(), 100);
0117   BOOST_CHECK_EQUAL(sp.phi(), 0);
0118 }
0119 
0120 BOOST_AUTO_TEST_CASE(NamedExtraColumns) {
0121   SpacePointContainer2 container;
0122 
0123   BOOST_CHECK(!container.hasExtraColumn("extra1"));
0124   BOOST_CHECK(!container.hasExtraColumn("extra2"));
0125 
0126   auto extra1 = container.createExtraColumn<int>("extra1");
0127 
0128   BOOST_CHECK(container.hasExtraColumn("extra1"));
0129   BOOST_CHECK(!container.hasExtraColumn("extra2"));
0130 
0131   auto sp = container.createSpacePoint(
0132       std::array<SourceLink, 1>{SourceLink(42)}, 1, 2, 3);
0133   sp.extra(extra1) = 100;
0134 
0135   auto extra2 = container.createExtraColumn<int>("extra2");
0136 
0137   BOOST_CHECK(container.hasExtraColumn("extra1"));
0138   BOOST_CHECK(container.hasExtraColumn("extra2"));
0139 
0140   BOOST_CHECK_EQUAL(sp.extra(extra1), 100);
0141   BOOST_CHECK_EQUAL(sp.extra(extra2), 0);
0142 }
0143 
0144 BOOST_AUTO_TEST_SUITE_END()