Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-10-13 08:19:31

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/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 }  // namespace ActsTests