Analysis Software
Documentation for sPHENIX simulation software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
RangeXDTests.cpp
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file RangeXDTests.cpp
1 // This file is part of the Acts project.
2 //
3 // Copyright (C) 2021 CERN for the benefit of the Acts project
4 //
5 // This Source Code Form is subject to the terms of the Mozilla Public
6 // License, v. 2.0. If a copy of the MPL was not distributed with this
7 // file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 
9 #include <boost/test/unit_test.hpp>
10 
13 
14 #include <limits>
15 
16 namespace Acts {
17 namespace Test {
18 BOOST_AUTO_TEST_SUITE(Utilities)
19 
20 BOOST_AUTO_TEST_SUITE(RangeXD)
21 
22 BOOST_AUTO_TEST_CASE(default_constructor_double) {
24 
25  BOOST_CHECK(r[0].min() == std::numeric_limits<double>::lowest());
26  BOOST_CHECK(r[0].max() == std::numeric_limits<double>::max());
27  BOOST_CHECK(r[1].min() == std::numeric_limits<double>::lowest());
28  BOOST_CHECK(r[1].max() == std::numeric_limits<double>::max());
29  BOOST_CHECK(r[2].min() == std::numeric_limits<double>::lowest());
30  BOOST_CHECK(r[2].max() == std::numeric_limits<double>::max());
31 }
32 
33 BOOST_AUTO_TEST_CASE(mutate_ranges_double) {
35 
36  r[0].shrink(-10.0, 10.0);
37  r[1].shrink(0.0, 50.0);
38  r[2].shrinkMax(-20.0);
39 
40  BOOST_CHECK(r[0].min() == -10.0);
41  BOOST_CHECK(r[0].max() == 10.0);
42  BOOST_CHECK(r[1].min() == 0.0);
43  BOOST_CHECK(r[1].max() == 50.0);
44  BOOST_CHECK(r[2].min() == std::numeric_limits<double>::lowest());
45  BOOST_CHECK(r[2].max() == -20.0);
46 }
47 
48 BOOST_AUTO_TEST_CASE(degenerate_double) {
50 
51  r[0].shrink(-10.0, 10.0);
52  r[1].shrink(0.0, 50.0);
53  r[2].shrink(-20.0, -30.0);
54 
55  BOOST_CHECK(r.degenerate());
56 }
57 
58 BOOST_AUTO_TEST_CASE(degenerate_false_double) {
60 
61  r[0].shrink(-10.0, 10.0);
62  r[1].shrink(0.0, 50.0);
63  r[2].shrink(-20.0, 30.0);
64 
65  BOOST_CHECK(!r.degenerate());
66 }
67 
68 BOOST_AUTO_TEST_CASE(contains_double) {
70 
71  r[0].shrink(-10.0, 10.0);
72  r[1].shrink(0.0, 50.0);
73  r[2].shrink(-20.0, 30.0);
74 
75  BOOST_CHECK(r.contains({0.0, 1.0, 0.0}));
76  BOOST_CHECK(r.contains({9.0, 0.5, 29.0}));
77  BOOST_CHECK(r.contains({-8.0, 40.0, -20.0}));
78  BOOST_CHECK(r.contains({4.0, 4.0, 4.0}));
79  BOOST_CHECK(r.contains({0.0, 0.0, 0.0}));
80  BOOST_CHECK(!r.contains({-12.0, 1.0, 0.0}));
81  BOOST_CHECK(!r.contains({0.0, -1.0, 0.0}));
82  BOOST_CHECK(!r.contains({0.0, 1.0, 40.0}));
83  BOOST_CHECK(!r.contains({20.0, 10.0, 300.0}));
84  BOOST_CHECK(!r.contains({-100.0, -100.0, -100.0}));
85 }
86 
87 BOOST_AUTO_TEST_CASE(equality_int) {
89 
90  r[0].shrink(-10, 10);
91  r[1].shrink(0, 50);
92  r[2].shrink(-20, 30);
93 
94  q[0].shrink(-10, 10);
95  q[1].shrink(0, 50);
96  q[2].shrink(-20, 30);
97 
98  BOOST_CHECK((r == q));
99 }
100 
101 BOOST_AUTO_TEST_CASE(subset1_double) {
103 
104  r[0].shrink(-10.0, 10.0);
105  r[1].shrink(0.0, 50.0);
106  r[2].shrink(-20.0, 30.0);
107 
108  q[0].shrink(-5.0, 5.0);
109  q[1].shrink(10.0, 100.0);
110  q[2].shrink(-10.0, 20.0);
111 
112  BOOST_CHECK(!(r <= q));
113  BOOST_CHECK(!(q <= r));
114 }
115 
116 BOOST_AUTO_TEST_CASE(subset2_double) {
118 
119  r[0].shrink(-10.0, 10.0);
120  r[1].shrink(0.0, 50.0);
121  r[2].shrink(-20.0, 30.0);
122 
123  q[0].shrink(-5.0, 5.0);
124  q[1].shrink(10.0, 20.0);
125  q[2].shrink(-10.0, 20.0);
126 
127  BOOST_CHECK(!(r <= q));
128  BOOST_CHECK((q <= r));
129 }
130 
131 BOOST_AUTO_TEST_CASE(superset2_double) {
133 
134  r[0].shrink(-10.0, 10.0);
135  r[1].shrink(0.0, 50.0);
136  r[2].shrink(-20.0, 30.0);
137 
138  q[0].shrink(-5.0, 5.0);
139  q[1].shrink(10.0, 20.0);
140  q[2].shrink(-10.0, 20.0);
141 
142  BOOST_CHECK((r >= q));
143  BOOST_CHECK(!(q >= r));
144 }
145 
146 BOOST_AUTO_TEST_CASE(intersection_double) {
148 
149  r[0].shrink(-10.0, 10.0);
150  r[1].shrink(0.0, 50.0);
151  r[2].shrink(-20.0, 30.0);
152 
153  q[0].shrink(-5.0, 5.0);
154  q[1].shrink(10.0, 20.0);
155  q[2].shrink(-10.0, 20.0);
156 
157  BOOST_CHECK((r && q));
158  BOOST_CHECK((q && r));
159 }
160 
161 BOOST_AUTO_TEST_CASE(intersection_false_double) {
163 
164  r[0].shrink(-10.0, 10.0);
165  r[1].shrink(0.0, 50.0);
166  r[2].shrink(-20.0, 30.0);
167 
168  q[0].shrink(-5.0, 5.0);
169  q[1].shrink(10.0, 20.0);
170  q[2].shrink(-100.0, -50.0);
171 
172  BOOST_CHECK(!(r && q));
173  BOOST_CHECK(!(q && r));
174 }
175 
176 BOOST_AUTO_TEST_CASE(intersection_false2_double) {
178 
179  r[0].shrink(-10.0, 10.0);
180  r[1].shrink(0.0, 50.0);
181  r[2].shrink(-20.0, 30.0);
182 
183  q[0].shrink(-50.0, -20.0);
184  q[1].shrink(-10.0, -5.0);
185  q[2].shrink(-100.0, -50.0);
186 
187  BOOST_CHECK(!(r && q));
188  BOOST_CHECK(!(q && r));
189 }
190 
191 BOOST_AUTO_TEST_SUITE_END()
192 
193 BOOST_AUTO_TEST_SUITE_END()
194 } // namespace Test
195 } // namespace Acts