File indexing completed on 2025-11-01 07:55:23
0001
0002
0003
0004
0005
0006
0007
0008
0009 #include <boost/test/unit_test.hpp>
0010
0011 #include "ActsFatras/Selectors/KinematicCasts.hpp"
0012 #include "ActsFatras/Selectors/SelectorHelpers.hpp"
0013
0014 #include <string>
0015
0016 #include "Dataset.hpp"
0017
0018 namespace {
0019 const auto& backward = Dataset::backwardPion;
0020 const auto& central = Dataset::centralPion;
0021 const auto& forward = Dataset::forwardPion;
0022
0023
0024
0025 struct Object {
0026 int feature = 0;
0027 std::string name = "";
0028 };
0029
0030
0031 struct FeatureSelector {
0032 int select_on = 0;
0033
0034 bool operator()(const Object& object) const {
0035 return object.feature == select_on;
0036 }
0037 };
0038
0039
0040 struct NameSelector {
0041 std::string select_on = "";
0042
0043 bool operator()(const Object& object) const {
0044 return object.name == select_on;
0045 }
0046 };
0047
0048 struct CombineFixture {
0049 FeatureSelector selectObjectFeature = {1};
0050 NameSelector selectObjectName = {"same_name"};
0051 Object obj = {1, "same_name"};
0052 Object objWrongFeature = {2, "same_name"};
0053 Object objWrongName = {1, "another_name"};
0054 };
0055
0056 }
0057
0058 namespace ActsTests {
0059
0060 BOOST_AUTO_TEST_SUITE(SelectorsSuite)
0061
0062 BOOST_AUTO_TEST_CASE(Min) {
0063
0064 ActsFatras::Min<ActsFatras::Casts::Eta> minEta{0.5};
0065 BOOST_CHECK(!minEta(backward));
0066 BOOST_CHECK(!minEta(central));
0067 BOOST_CHECK(minEta(forward));
0068
0069
0070 ActsFatras::Min<ActsFatras::Casts::AbsEta> minAbsEta{0.5};
0071 BOOST_CHECK(minAbsEta(backward));
0072 BOOST_CHECK(!minAbsEta(central));
0073 BOOST_CHECK(minAbsEta(forward));
0074 }
0075
0076 BOOST_AUTO_TEST_CASE(Max) {
0077
0078 ActsFatras::Max<ActsFatras::Casts::Eta> maxEta{0.5};
0079 BOOST_CHECK(maxEta(backward));
0080 BOOST_CHECK(maxEta(central));
0081 BOOST_CHECK(!maxEta(forward));
0082
0083
0084 ActsFatras::Max<ActsFatras::Casts::AbsEta> maxAbsEta{0.5};
0085 BOOST_CHECK(!maxAbsEta(backward));
0086 BOOST_CHECK(maxAbsEta(central));
0087 BOOST_CHECK(!maxAbsEta(forward));
0088 }
0089
0090 BOOST_AUTO_TEST_CASE(Range) {
0091 ActsFatras::Range<ActsFatras::Casts::Eta> rangeEta{-6.0, -0.5};
0092 BOOST_CHECK(rangeEta(backward));
0093 BOOST_CHECK(!rangeEta(central));
0094 BOOST_CHECK(!rangeEta(forward));
0095
0096 ActsFatras::Range<ActsFatras::Casts::AbsEta> rangeAbsEta{0.5, 6.0};
0097 BOOST_CHECK(rangeAbsEta(backward));
0098 BOOST_CHECK(!rangeAbsEta(central));
0099 BOOST_CHECK(rangeAbsEta(forward));
0100 }
0101
0102 BOOST_AUTO_TEST_CASE(And1) {
0103 CombineFixture f;
0104 ActsFatras::CombineAnd<FeatureSelector> select;
0105 select.get<FeatureSelector>() = f.selectObjectFeature;
0106 BOOST_CHECK(select(f.obj));
0107 BOOST_CHECK(!select(f.objWrongFeature));
0108 BOOST_CHECK(select(f.objWrongName));
0109 }
0110
0111 BOOST_AUTO_TEST_CASE(And2) {
0112 CombineFixture f;
0113 ActsFatras::CombineAnd<FeatureSelector, NameSelector> select;
0114 select.get<FeatureSelector>() = f.selectObjectFeature;
0115 select.get<NameSelector>() = f.selectObjectName;
0116 BOOST_CHECK(select(f.obj));
0117 BOOST_CHECK(!select(f.objWrongFeature));
0118 BOOST_CHECK(!select(f.objWrongName));
0119 }
0120
0121 BOOST_AUTO_TEST_CASE(Or1) {
0122 CombineFixture f;
0123 ActsFatras::CombineOr<FeatureSelector> select;
0124 select.get<FeatureSelector>() = f.selectObjectFeature;
0125 BOOST_CHECK(select(f.obj));
0126 BOOST_CHECK(!select(f.objWrongFeature));
0127 BOOST_CHECK(select(f.objWrongName));
0128 }
0129
0130 BOOST_AUTO_TEST_CASE(Or2) {
0131 CombineFixture f;
0132 ActsFatras::CombineOr<FeatureSelector, NameSelector> select;
0133 select.get<FeatureSelector>() = f.selectObjectFeature;
0134 select.get<NameSelector>() = f.selectObjectName;
0135 BOOST_CHECK(select(f.obj));
0136 BOOST_CHECK(select(f.objWrongFeature));
0137 BOOST_CHECK(select(f.objWrongName));
0138 }
0139
0140 BOOST_AUTO_TEST_SUITE_END()
0141
0142 }