File indexing completed on 2025-10-13 08:19:31
0001
0002
0003
0004
0005
0006
0007
0008
0009 #include <boost/test/unit_test.hpp>
0010
0011 #include "Acts/Utilities/RangeXD.hpp"
0012
0013 #include <limits>
0014
0015 using namespace Acts;
0016
0017 namespace ActsTests {
0018
0019 BOOST_AUTO_TEST_SUITE(UtilitiesSuite)
0020
0021 BOOST_AUTO_TEST_SUITE(RangeXDSuite)
0022
0023 BOOST_AUTO_TEST_CASE(default_constructor_double) {
0024 RangeXD<3, double> r;
0025
0026 BOOST_CHECK_EQUAL(r[0].min(), std::numeric_limits<double>::lowest());
0027 BOOST_CHECK_EQUAL(r[0].max(), std::numeric_limits<double>::max());
0028 BOOST_CHECK_EQUAL(r[1].min(), std::numeric_limits<double>::lowest());
0029 BOOST_CHECK_EQUAL(r[1].max(), std::numeric_limits<double>::max());
0030 BOOST_CHECK_EQUAL(r[2].min(), std::numeric_limits<double>::lowest());
0031 BOOST_CHECK_EQUAL(r[2].max(), std::numeric_limits<double>::max());
0032 }
0033
0034 BOOST_AUTO_TEST_CASE(mutate_ranges_double) {
0035 RangeXD<3, double> r;
0036
0037 r[0].shrink(-10.0, 10.0);
0038 r[1].shrink(0.0, 50.0);
0039 r[2].shrinkMax(-20.0);
0040
0041 BOOST_CHECK_EQUAL(r[0].min(), -10.0);
0042 BOOST_CHECK_EQUAL(r[0].max(), 10.0);
0043 BOOST_CHECK_EQUAL(r[1].min(), 0.0);
0044 BOOST_CHECK_EQUAL(r[1].max(), 50.0);
0045 BOOST_CHECK_EQUAL(r[2].min(), std::numeric_limits<double>::lowest());
0046 BOOST_CHECK_EQUAL(r[2].max(), -20.0);
0047 }
0048
0049 BOOST_AUTO_TEST_CASE(degenerate_double) {
0050 RangeXD<3, double> r;
0051
0052 r[0].shrink(-10.0, 10.0);
0053 r[1].shrink(0.0, 50.0);
0054 r[2].shrink(-20.0, -30.0);
0055
0056 BOOST_CHECK(r.degenerate());
0057 }
0058
0059 BOOST_AUTO_TEST_CASE(degenerate_false_double) {
0060 RangeXD<3, double> r;
0061
0062 r[0].shrink(-10.0, 10.0);
0063 r[1].shrink(0.0, 50.0);
0064 r[2].shrink(-20.0, 30.0);
0065
0066 BOOST_CHECK(!r.degenerate());
0067 }
0068
0069 BOOST_AUTO_TEST_CASE(contains_double) {
0070 RangeXD<3, double> r;
0071
0072 r[0].shrink(-10.0, 10.0);
0073 r[1].shrink(0.0, 50.0);
0074 r[2].shrink(-20.0, 30.0);
0075
0076 BOOST_CHECK(r.contains({0.0, 1.0, 0.0}));
0077 BOOST_CHECK(r.contains({9.0, 0.5, 29.0}));
0078 BOOST_CHECK(r.contains({-8.0, 40.0, -20.0}));
0079 BOOST_CHECK(r.contains({4.0, 4.0, 4.0}));
0080 BOOST_CHECK(r.contains({0.0, 0.0, 0.0}));
0081 BOOST_CHECK(!r.contains({-12.0, 1.0, 0.0}));
0082 BOOST_CHECK(!r.contains({0.0, -1.0, 0.0}));
0083 BOOST_CHECK(!r.contains({0.0, 1.0, 40.0}));
0084 BOOST_CHECK(!r.contains({20.0, 10.0, 300.0}));
0085 BOOST_CHECK(!r.contains({-100.0, -100.0, -100.0}));
0086 }
0087
0088 BOOST_AUTO_TEST_CASE(equality_int) {
0089 RangeXD<3, int> r, q;
0090
0091 r[0].shrink(-10, 10);
0092 r[1].shrink(0, 50);
0093 r[2].shrink(-20, 30);
0094
0095 q[0].shrink(-10, 10);
0096 q[1].shrink(0, 50);
0097 q[2].shrink(-20, 30);
0098
0099 BOOST_CHECK((r == q));
0100 }
0101
0102 BOOST_AUTO_TEST_CASE(subset1_double) {
0103 RangeXD<3, double> r, q;
0104
0105 r[0].shrink(-10.0, 10.0);
0106 r[1].shrink(0.0, 50.0);
0107 r[2].shrink(-20.0, 30.0);
0108
0109 q[0].shrink(-5.0, 5.0);
0110 q[1].shrink(10.0, 100.0);
0111 q[2].shrink(-10.0, 20.0);
0112
0113 BOOST_CHECK(!(r <= q));
0114 BOOST_CHECK(!(q <= r));
0115 }
0116
0117 BOOST_AUTO_TEST_CASE(subset2_double) {
0118 RangeXD<3, double> r, q;
0119
0120 r[0].shrink(-10.0, 10.0);
0121 r[1].shrink(0.0, 50.0);
0122 r[2].shrink(-20.0, 30.0);
0123
0124 q[0].shrink(-5.0, 5.0);
0125 q[1].shrink(10.0, 20.0);
0126 q[2].shrink(-10.0, 20.0);
0127
0128 BOOST_CHECK(!(r <= q));
0129 BOOST_CHECK((q <= r));
0130 }
0131
0132 BOOST_AUTO_TEST_CASE(superset2_double) {
0133 RangeXD<3, double> r, q;
0134
0135 r[0].shrink(-10.0, 10.0);
0136 r[1].shrink(0.0, 50.0);
0137 r[2].shrink(-20.0, 30.0);
0138
0139 q[0].shrink(-5.0, 5.0);
0140 q[1].shrink(10.0, 20.0);
0141 q[2].shrink(-10.0, 20.0);
0142
0143 BOOST_CHECK((r >= q));
0144 BOOST_CHECK(!(q >= r));
0145 }
0146
0147 BOOST_AUTO_TEST_CASE(intersection_double) {
0148 RangeXD<3, double> r, q;
0149
0150 r[0].shrink(-10.0, 10.0);
0151 r[1].shrink(0.0, 50.0);
0152 r[2].shrink(-20.0, 30.0);
0153
0154 q[0].shrink(-5.0, 5.0);
0155 q[1].shrink(10.0, 20.0);
0156 q[2].shrink(-10.0, 20.0);
0157
0158 BOOST_CHECK((r && q));
0159 BOOST_CHECK((q && r));
0160 }
0161
0162 BOOST_AUTO_TEST_CASE(intersection_false_double) {
0163 RangeXD<3, double> r, q;
0164
0165 r[0].shrink(-10.0, 10.0);
0166 r[1].shrink(0.0, 50.0);
0167 r[2].shrink(-20.0, 30.0);
0168
0169 q[0].shrink(-5.0, 5.0);
0170 q[1].shrink(10.0, 20.0);
0171 q[2].shrink(-100.0, -50.0);
0172
0173 BOOST_CHECK(!(r && q));
0174 BOOST_CHECK(!(q && r));
0175 }
0176
0177 BOOST_AUTO_TEST_CASE(intersection_false2_double) {
0178 RangeXD<3, double> r, q;
0179
0180 r[0].shrink(-10.0, 10.0);
0181 r[1].shrink(0.0, 50.0);
0182 r[2].shrink(-20.0, 30.0);
0183
0184 q[0].shrink(-50.0, -20.0);
0185 q[1].shrink(-10.0, -5.0);
0186 q[2].shrink(-100.0, -50.0);
0187
0188 BOOST_CHECK(!(r && q));
0189 BOOST_CHECK(!(q && r));
0190 }
0191
0192 BOOST_AUTO_TEST_SUITE_END()
0193
0194 BOOST_AUTO_TEST_SUITE_END()
0195
0196 }