File indexing completed on 2025-08-06 08:11:31
0001
0002
0003
0004
0005
0006
0007
0008
0009 #include <boost/test/unit_test.hpp>
0010
0011 #include "Acts/Definitions/Algebra.hpp"
0012 #include "Acts/Utilities/detail/Axis.hpp"
0013 #include "Acts/Utilities/detail/AxisFwd.hpp"
0014
0015 #include <cstddef>
0016 #include <vector>
0017
0018 namespace Acts {
0019
0020 using namespace detail;
0021
0022 namespace Test {
0023
0024 BOOST_AUTO_TEST_CASE(equidistant_axis) {
0025 EquidistantAxis a(0.0, 10.0, 10u);
0026
0027
0028 BOOST_CHECK_EQUAL(a.getNBins(), 10u);
0029 BOOST_CHECK_EQUAL(a.getMax(), 10.);
0030 BOOST_CHECK_EQUAL(a.getMin(), 0.);
0031 BOOST_CHECK_EQUAL(a.getBinWidth(), 1.);
0032
0033
0034 BOOST_CHECK_EQUAL(a.getBin(-0.3), 0u);
0035 BOOST_CHECK_EQUAL(a.getBin(-0.), 1u);
0036 BOOST_CHECK_EQUAL(a.getBin(0.), 1u);
0037 BOOST_CHECK_EQUAL(a.getBin(0.7), 1u);
0038 BOOST_CHECK_EQUAL(a.getBin(1), 2u);
0039 BOOST_CHECK_EQUAL(a.getBin(1.2), 2u);
0040 BOOST_CHECK_EQUAL(a.getBin(2.), 3u);
0041 BOOST_CHECK_EQUAL(a.getBin(2.7), 3u);
0042 BOOST_CHECK_EQUAL(a.getBin(3.), 4u);
0043 BOOST_CHECK_EQUAL(a.getBin(3.6), 4u);
0044 BOOST_CHECK_EQUAL(a.getBin(4.), 5u);
0045 BOOST_CHECK_EQUAL(a.getBin(4.98), 5u);
0046 BOOST_CHECK_EQUAL(a.getBin(5.), 6u);
0047 BOOST_CHECK_EQUAL(a.getBin(5.12), 6u);
0048 BOOST_CHECK_EQUAL(a.getBin(6.), 7u);
0049 BOOST_CHECK_EQUAL(a.getBin(6.00001), 7u);
0050 BOOST_CHECK_EQUAL(a.getBin(7.), 8u);
0051 BOOST_CHECK_EQUAL(a.getBin(7.5), 8u);
0052 BOOST_CHECK_EQUAL(a.getBin(8.), 9u);
0053 BOOST_CHECK_EQUAL(a.getBin(8.1), 9u);
0054 BOOST_CHECK_EQUAL(a.getBin(9.), 10u);
0055 BOOST_CHECK_EQUAL(a.getBin(9.999), 10u);
0056 BOOST_CHECK_EQUAL(a.getBin(10.), 11u);
0057 BOOST_CHECK_EQUAL(a.getBin(100.3), 11u);
0058
0059
0060 BOOST_CHECK_EQUAL(a.getBinLowerBound(1), 0.);
0061 BOOST_CHECK_EQUAL(a.getBinLowerBound(2), 1.);
0062 BOOST_CHECK_EQUAL(a.getBinLowerBound(3), 2.);
0063 BOOST_CHECK_EQUAL(a.getBinLowerBound(4), 3.);
0064 BOOST_CHECK_EQUAL(a.getBinLowerBound(5), 4.);
0065 BOOST_CHECK_EQUAL(a.getBinLowerBound(6), 5.);
0066 BOOST_CHECK_EQUAL(a.getBinLowerBound(7), 6.);
0067 BOOST_CHECK_EQUAL(a.getBinLowerBound(8), 7.);
0068 BOOST_CHECK_EQUAL(a.getBinLowerBound(9), 8.);
0069 BOOST_CHECK_EQUAL(a.getBinLowerBound(10), 9.);
0070
0071
0072 BOOST_CHECK_EQUAL(a.getBinUpperBound(1), 1.);
0073 BOOST_CHECK_EQUAL(a.getBinUpperBound(2), 2.);
0074 BOOST_CHECK_EQUAL(a.getBinUpperBound(3), 3.);
0075 BOOST_CHECK_EQUAL(a.getBinUpperBound(4), 4.);
0076 BOOST_CHECK_EQUAL(a.getBinUpperBound(5), 5.);
0077 BOOST_CHECK_EQUAL(a.getBinUpperBound(6), 6.);
0078 BOOST_CHECK_EQUAL(a.getBinUpperBound(7), 7.);
0079 BOOST_CHECK_EQUAL(a.getBinUpperBound(8), 8.);
0080 BOOST_CHECK_EQUAL(a.getBinUpperBound(9), 9.);
0081 BOOST_CHECK_EQUAL(a.getBinUpperBound(10), 10.);
0082
0083
0084 BOOST_CHECK_EQUAL(a.getBinCenter(1), 0.5);
0085 BOOST_CHECK_EQUAL(a.getBinCenter(2), 1.5);
0086 BOOST_CHECK_EQUAL(a.getBinCenter(3), 2.5);
0087 BOOST_CHECK_EQUAL(a.getBinCenter(4), 3.5);
0088 BOOST_CHECK_EQUAL(a.getBinCenter(5), 4.5);
0089 BOOST_CHECK_EQUAL(a.getBinCenter(6), 5.5);
0090 BOOST_CHECK_EQUAL(a.getBinCenter(7), 6.5);
0091 BOOST_CHECK_EQUAL(a.getBinCenter(8), 7.5);
0092 BOOST_CHECK_EQUAL(a.getBinCenter(9), 8.5);
0093 BOOST_CHECK_EQUAL(a.getBinCenter(10), 9.5);
0094
0095
0096 BOOST_CHECK(!a.isInside(-0.2));
0097 BOOST_CHECK(a.isInside(0.));
0098 BOOST_CHECK(a.isInside(3.));
0099 BOOST_CHECK(!a.isInside(10.));
0100 BOOST_CHECK(!a.isInside(12.));
0101 }
0102
0103 BOOST_AUTO_TEST_CASE(variable_axis) {
0104 VariableAxis a({0, 0.5, 3, 4.5, 6});
0105
0106
0107 BOOST_CHECK_EQUAL(a.getNBins(), 4u);
0108 BOOST_CHECK_EQUAL(a.getMax(), 6.);
0109 BOOST_CHECK_EQUAL(a.getMin(), 0.);
0110
0111
0112 BOOST_CHECK_EQUAL(a.getBin(-0.3), 0u);
0113 BOOST_CHECK_EQUAL(a.getBin(-0.), 1u);
0114 BOOST_CHECK_EQUAL(a.getBin(0.), 1u);
0115 BOOST_CHECK_EQUAL(a.getBin(0.3), 1u);
0116 BOOST_CHECK_EQUAL(a.getBin(0.5), 2u);
0117 BOOST_CHECK_EQUAL(a.getBin(1.2), 2u);
0118 BOOST_CHECK_EQUAL(a.getBin(2.7), 2u);
0119 BOOST_CHECK_EQUAL(a.getBin(3.), 3u);
0120 BOOST_CHECK_EQUAL(a.getBin(4.49999), 3u);
0121 BOOST_CHECK_EQUAL(a.getBin(4.5), 4u);
0122 BOOST_CHECK_EQUAL(a.getBin(5.12), 4u);
0123 BOOST_CHECK_EQUAL(a.getBin(6.), 5u);
0124 BOOST_CHECK_EQUAL(a.getBin(6.00001), 5u);
0125 BOOST_CHECK_EQUAL(a.getBin(7.5), 5u);
0126
0127
0128 BOOST_CHECK_EQUAL(a.getBinLowerBound(1), 0.);
0129 BOOST_CHECK_EQUAL(a.getBinLowerBound(2), 0.5);
0130 BOOST_CHECK_EQUAL(a.getBinLowerBound(3), 3.);
0131 BOOST_CHECK_EQUAL(a.getBinLowerBound(4), 4.5);
0132
0133
0134 BOOST_CHECK_EQUAL(a.getBinUpperBound(1), 0.5);
0135 BOOST_CHECK_EQUAL(a.getBinUpperBound(2), 3.);
0136 BOOST_CHECK_EQUAL(a.getBinUpperBound(3), 4.5);
0137 BOOST_CHECK_EQUAL(a.getBinUpperBound(4), 6.);
0138
0139
0140 BOOST_CHECK_EQUAL(a.getBinCenter(1), 0.25);
0141 BOOST_CHECK_EQUAL(a.getBinCenter(2), 1.75);
0142 BOOST_CHECK_EQUAL(a.getBinCenter(3), 3.75);
0143 BOOST_CHECK_EQUAL(a.getBinCenter(4), 5.25);
0144
0145
0146 BOOST_CHECK(!a.isInside(-0.2));
0147 BOOST_CHECK(a.isInside(0.));
0148 BOOST_CHECK(a.isInside(3.));
0149 BOOST_CHECK(!a.isInside(6.));
0150 BOOST_CHECK(!a.isInside(12.));
0151 }
0152
0153 BOOST_AUTO_TEST_CASE(open_axis) {
0154 Axis<AxisType::Equidistant, AxisBoundaryType::Bound> a(0, 10, 10);
0155
0156
0157 BOOST_CHECK_EQUAL(a.getBin(0.5), 1u);
0158 BOOST_CHECK_EQUAL(a.getBin(9.5), 10u);
0159
0160
0161
0162 BOOST_CHECK_EQUAL(a.getBin(-0.5), 1u);
0163 BOOST_CHECK_EQUAL(a.getBin(10.5), 10u);
0164
0165 Axis<AxisType::Variable, AxisBoundaryType::Bound> b(
0166 {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10});
0167
0168
0169 BOOST_CHECK_EQUAL(b.getBin(0.5), 1u);
0170 BOOST_CHECK_EQUAL(b.getBin(9.5), 10u);
0171
0172
0173
0174 BOOST_CHECK_EQUAL(b.getBin(-0.5), 1u);
0175 BOOST_CHECK_EQUAL(b.getBin(10.5), 10u);
0176 }
0177
0178 BOOST_AUTO_TEST_CASE(closed_axis) {
0179 Axis<AxisType::Equidistant, AxisBoundaryType::Closed> a(0, 10, 10);
0180
0181
0182 BOOST_CHECK_EQUAL(a.getBin(0.5), 1u);
0183 BOOST_CHECK_EQUAL(a.getBin(9.5), 10u);
0184
0185
0186
0187 BOOST_CHECK_EQUAL(a.getBin(-0.5), 10u);
0188 BOOST_CHECK_EQUAL(a.getBin(10.5), 1u);
0189
0190 Axis<AxisType::Variable, AxisBoundaryType::Closed> b(
0191 {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10});
0192
0193
0194 BOOST_CHECK_EQUAL(b.getBin(0.5), 1u);
0195 BOOST_CHECK_EQUAL(b.getBin(9.5), 10u);
0196
0197
0198
0199 BOOST_CHECK_EQUAL(b.getBin(-0.5), 10u);
0200 BOOST_CHECK_EQUAL(b.getBin(10.5), 1u);
0201 }
0202
0203 BOOST_AUTO_TEST_CASE(neighborhood) {
0204 using bins_t = std::vector<std::size_t>;
0205 Axis<AxisType::Equidistant, AxisBoundaryType::Open> a1(0.0, 1.0, 10u);
0206
0207 BOOST_CHECK(a1.neighborHoodIndices(0, 1).collect() == bins_t({0, 1}));
0208 BOOST_CHECK(a1.neighborHoodIndices(1, 1).collect() == bins_t({0, 1, 2}));
0209 BOOST_CHECK(a1.neighborHoodIndices(11, 1).collect() == bins_t({10, 11}));
0210 BOOST_CHECK(a1.neighborHoodIndices(10, 1).collect() == bins_t({9, 10, 11}));
0211 BOOST_CHECK(a1.neighborHoodIndices(5, 1).collect() == bins_t({4, 5, 6}));
0212 BOOST_CHECK(a1.neighborHoodIndices(5, {-1, 0}).collect() == bins_t({4, 5}));
0213 BOOST_CHECK(a1.neighborHoodIndices(5, {0, 1}).collect() == bins_t({5, 6}));
0214
0215 BOOST_CHECK(a1.neighborHoodIndices(0, 2).collect() == bins_t({0, 1, 2}));
0216 BOOST_CHECK(a1.neighborHoodIndices(1, 2).collect() == bins_t({0, 1, 2, 3}));
0217 BOOST_CHECK(a1.neighborHoodIndices(11, 2).collect() == bins_t({9, 10, 11}));
0218 BOOST_CHECK(a1.neighborHoodIndices(10, 2).collect() ==
0219 bins_t({8, 9, 10, 11}));
0220 BOOST_CHECK(a1.neighborHoodIndices(5, 2).collect() ==
0221 bins_t({3, 4, 5, 6, 7}));
0222
0223 Axis<AxisType::Variable, AxisBoundaryType::Open> a2(
0224 {0.0, 2.0, 4.0, 9.0, 10.0});
0225 BOOST_CHECK(a2.neighborHoodIndices(0, 1).collect() == bins_t({0, 1}));
0226 BOOST_CHECK(a2.neighborHoodIndices(1, 1).collect() == bins_t({0, 1, 2}));
0227 BOOST_CHECK(a2.neighborHoodIndices(5, 1).collect() == bins_t({4, 5}));
0228 BOOST_CHECK(a2.neighborHoodIndices(4, 1).collect() == bins_t({3, 4, 5}));
0229 BOOST_CHECK(a2.neighborHoodIndices(4, {-1, 0}).collect() == bins_t({3, 4}));
0230 BOOST_CHECK(a2.neighborHoodIndices(2, 1).collect() == bins_t({1, 2, 3}));
0231 BOOST_CHECK(a2.neighborHoodIndices(2, {0, 1}).collect() == bins_t({2, 3}));
0232
0233 BOOST_CHECK(a2.neighborHoodIndices(0, 2).collect() == bins_t({0, 1, 2}));
0234 BOOST_CHECK(a2.neighborHoodIndices(1, 2).collect() == bins_t({0, 1, 2, 3}));
0235 BOOST_CHECK(a2.neighborHoodIndices(5, 2).collect() == bins_t({3, 4, 5}));
0236 BOOST_CHECK(a2.neighborHoodIndices(4, 2).collect() == bins_t({2, 3, 4, 5}));
0237 BOOST_CHECK(a2.neighborHoodIndices(3, 2).collect() ==
0238 bins_t({1, 2, 3, 4, 5}));
0239
0240 Axis<AxisType::Equidistant, AxisBoundaryType::Bound> a3(0.0, 1.0, 10u);
0241
0242 BOOST_CHECK(a3.neighborHoodIndices(0, 1).collect() == bins_t({}));
0243 BOOST_CHECK(a3.neighborHoodIndices(1, 1).collect() == bins_t({1, 2}));
0244 BOOST_CHECK(a3.neighborHoodIndices(11, 1).collect() == bins_t({}));
0245 BOOST_CHECK(a3.neighborHoodIndices(10, 1).collect() == bins_t({9, 10}));
0246 BOOST_CHECK(a3.neighborHoodIndices(10, {0, 1}).collect() == bins_t({10}));
0247 BOOST_CHECK(a3.neighborHoodIndices(5, 1).collect() == bins_t({4, 5, 6}));
0248 BOOST_CHECK(a3.neighborHoodIndices(5, {-1, 0}).collect() == bins_t({4, 5}));
0249 BOOST_CHECK(a3.neighborHoodIndices(5, {0, 1}).collect() == bins_t({5, 6}));
0250
0251 BOOST_CHECK(a3.neighborHoodIndices(0, 2).collect() == bins_t({}));
0252 BOOST_CHECK(a3.neighborHoodIndices(1, 2).collect() == bins_t({1, 2, 3}));
0253 BOOST_CHECK(a3.neighborHoodIndices(11, 2).collect() == bins_t({}));
0254 BOOST_CHECK(a3.neighborHoodIndices(10, 2).collect() == bins_t({8, 9, 10}));
0255 BOOST_CHECK(a3.neighborHoodIndices(5, 2).collect() ==
0256 bins_t({3, 4, 5, 6, 7}));
0257
0258 Axis<AxisType::Equidistant, AxisBoundaryType::Closed> a4(0.0, 1.0, 10u);
0259
0260 BOOST_CHECK(a4.neighborHoodIndices(0, 1).collect() == bins_t({}));
0261 BOOST_CHECK(a4.neighborHoodIndices(1, 1).collect() == bins_t({10, 1, 2}));
0262 BOOST_CHECK(a4.neighborHoodIndices(11, 1).collect() == bins_t({}));
0263 BOOST_CHECK(a4.neighborHoodIndices(10, 1).collect() == bins_t({9, 10, 1}));
0264 BOOST_CHECK(a4.neighborHoodIndices(10, {0, 1}).collect() == bins_t({10, 1}));
0265 BOOST_CHECK(a4.neighborHoodIndices(5, 1).collect() == bins_t({4, 5, 6}));
0266 BOOST_CHECK(a4.neighborHoodIndices(5, {-1, 0}).collect() == bins_t({4, 5}));
0267 BOOST_CHECK(a4.neighborHoodIndices(5, {0, 1}).collect() == bins_t({5, 6}));
0268
0269 BOOST_CHECK(a4.neighborHoodIndices(0, 2).collect() == bins_t({}));
0270 BOOST_CHECK(a4.neighborHoodIndices(1, 2).collect() ==
0271 bins_t({9, 10, 1, 2, 3}));
0272 BOOST_CHECK(a4.neighborHoodIndices(11, 2).collect() == bins_t({}));
0273 BOOST_CHECK(a4.neighborHoodIndices(10, 2).collect() ==
0274 bins_t({8, 9, 10, 1, 2}));
0275 BOOST_CHECK(a4.neighborHoodIndices(5, 2).collect() ==
0276 bins_t({3, 4, 5, 6, 7}));
0277
0278 Axis<AxisType::Variable, AxisBoundaryType::Bound> a5(
0279 {0.0, 2.0, 4.0, 9.0, 9.5, 10.0});
0280 BOOST_CHECK(a5.neighborHoodIndices(0, 1).collect() == bins_t({}));
0281 BOOST_CHECK(a5.neighborHoodIndices(1, 1).collect() == bins_t({1, 2}));
0282 BOOST_CHECK(a5.neighborHoodIndices(6, 1).collect() == bins_t({}));
0283 BOOST_CHECK(a5.neighborHoodIndices(5, 1).collect() == bins_t({4, 5}));
0284 BOOST_CHECK(a5.neighborHoodIndices(5, {0, 1}).collect() == bins_t({5}));
0285 BOOST_CHECK(a5.neighborHoodIndices(2, 1).collect() == bins_t({1, 2, 3}));
0286 BOOST_CHECK(a5.neighborHoodIndices(2, {-1, 0}).collect() == bins_t({1, 2}));
0287 BOOST_CHECK(a5.neighborHoodIndices(2, {0, 1}).collect() == bins_t({2, 3}));
0288
0289 BOOST_CHECK(a5.neighborHoodIndices(0, 2).collect() == bins_t({}));
0290 BOOST_CHECK(a5.neighborHoodIndices(1, 2).collect() == bins_t({1, 2, 3}));
0291 BOOST_CHECK(a5.neighborHoodIndices(6, 2).collect() == bins_t({}));
0292 BOOST_CHECK(a5.neighborHoodIndices(5, 2).collect() == bins_t({3, 4, 5}));
0293 BOOST_CHECK(a5.neighborHoodIndices(3, 2).collect() ==
0294 bins_t({1, 2, 3, 4, 5}));
0295
0296 Axis<AxisType::Variable, AxisBoundaryType::Closed> a6(
0297 {0.0, 2.0, 4.0, 9.0, 9.5, 10.0});
0298 BOOST_CHECK(a6.neighborHoodIndices(0, 1).collect() == bins_t({}));
0299 BOOST_CHECK(a6.neighborHoodIndices(1, 1).collect() == bins_t({5, 1, 2}));
0300 BOOST_CHECK(a6.neighborHoodIndices(6, 1).collect() == bins_t({}));
0301 BOOST_CHECK(a6.neighborHoodIndices(5, 1).collect() == bins_t({4, 5, 1}));
0302 BOOST_CHECK(a6.neighborHoodIndices(5, {0, 1}).collect() == bins_t({5, 1}));
0303 BOOST_CHECK(a6.neighborHoodIndices(2, 1).collect() == bins_t({1, 2, 3}));
0304 BOOST_CHECK(a6.neighborHoodIndices(2, {-1, 0}).collect() == bins_t({1, 2}));
0305 BOOST_CHECK(a6.neighborHoodIndices(2, {0, 1}).collect() == bins_t({2, 3}));
0306
0307 BOOST_CHECK(a6.neighborHoodIndices(0, 2).collect() == bins_t({}));
0308 BOOST_CHECK(a6.neighborHoodIndices(1, 2).collect() ==
0309 bins_t({4, 5, 1, 2, 3}));
0310 BOOST_CHECK(a6.neighborHoodIndices(6, 2).collect() == bins_t({}));
0311 BOOST_CHECK(a6.neighborHoodIndices(5, 2).collect() ==
0312 bins_t({3, 4, 5, 1, 2}));
0313 BOOST_CHECK(a6.neighborHoodIndices(3, 2).collect() ==
0314 bins_t({1, 2, 3, 4, 5}));
0315 BOOST_CHECK(a6.neighborHoodIndices(3, {0, 2}).collect() == bins_t({3, 4, 5}));
0316
0317 BOOST_CHECK(a6.neighborHoodIndices(1, 3).collect() ==
0318 bins_t({1, 2, 3, 4, 5}));
0319 BOOST_CHECK(a6.neighborHoodIndices(5, 3).collect() ==
0320 bins_t({1, 2, 3, 4, 5}));
0321 }
0322
0323 BOOST_AUTO_TEST_CASE(wrapBin) {
0324 Axis<AxisType::Equidistant, AxisBoundaryType::Open> a1(0.0, 1.0, 10u);
0325 BOOST_CHECK_EQUAL(a1.wrapBin(0), 0u);
0326 BOOST_CHECK_EQUAL(a1.wrapBin(1), 1u);
0327 BOOST_CHECK_EQUAL(a1.wrapBin(-1), 0u);
0328 BOOST_CHECK_EQUAL(a1.wrapBin(10), 10u);
0329 BOOST_CHECK_EQUAL(a1.wrapBin(11), 11u);
0330 BOOST_CHECK_EQUAL(a1.wrapBin(12), 11u);
0331
0332 Axis<AxisType::Equidistant, AxisBoundaryType::Bound> a2(0.0, 1.0, 10u);
0333 BOOST_CHECK_EQUAL(a2.wrapBin(0), 1u);
0334 BOOST_CHECK_EQUAL(a2.wrapBin(1), 1u);
0335 BOOST_CHECK_EQUAL(a2.wrapBin(-1), 1u);
0336 BOOST_CHECK_EQUAL(a2.wrapBin(10), 10u);
0337 BOOST_CHECK_EQUAL(a2.wrapBin(11), 10u);
0338 BOOST_CHECK_EQUAL(a2.wrapBin(12), 10u);
0339
0340 Axis<AxisType::Equidistant, AxisBoundaryType::Closed> a3(0.0, 1.0, 10u);
0341 BOOST_CHECK_EQUAL(a3.wrapBin(0), 10u);
0342 BOOST_CHECK_EQUAL(a3.wrapBin(1), 1u);
0343 BOOST_CHECK_EQUAL(a3.wrapBin(-1), 9u);
0344 BOOST_CHECK_EQUAL(a3.wrapBin(10), 10u);
0345 BOOST_CHECK_EQUAL(a3.wrapBin(11), 1u);
0346 BOOST_CHECK_EQUAL(a3.wrapBin(12), 2u);
0347
0348 Axis<AxisType::Variable, AxisBoundaryType::Open> a4(
0349 {0.0, 2.0, 4.0, 9.0, 10.0});
0350 BOOST_CHECK_EQUAL(a4.wrapBin(0), 0u);
0351 BOOST_CHECK_EQUAL(a4.wrapBin(1), 1u);
0352 BOOST_CHECK_EQUAL(a4.wrapBin(-1), 0u);
0353 BOOST_CHECK_EQUAL(a4.wrapBin(4), 4u);
0354 BOOST_CHECK_EQUAL(a4.wrapBin(5), 5u);
0355 BOOST_CHECK_EQUAL(a4.wrapBin(6), 5u);
0356
0357 Axis<AxisType::Variable, AxisBoundaryType::Bound> a5(
0358 {0.0, 2.0, 4.0, 9.0, 9.5, 10.0});
0359 BOOST_CHECK_EQUAL(a5.wrapBin(0), 1u);
0360 BOOST_CHECK_EQUAL(a5.wrapBin(1), 1u);
0361 BOOST_CHECK_EQUAL(a5.wrapBin(-1), 1u);
0362 BOOST_CHECK_EQUAL(a5.wrapBin(4), 4u);
0363 BOOST_CHECK_EQUAL(a5.wrapBin(5), 5u);
0364 BOOST_CHECK_EQUAL(a5.wrapBin(6), 5u);
0365
0366 Axis<AxisType::Variable, AxisBoundaryType::Closed> a6(
0367 {0.0, 2.0, 4.0, 9.0, 9.5, 10.0});
0368 BOOST_CHECK_EQUAL(a6.wrapBin(0), 5u);
0369 BOOST_CHECK_EQUAL(a6.wrapBin(1), 1u);
0370 BOOST_CHECK_EQUAL(a6.wrapBin(-1), 4u);
0371 BOOST_CHECK_EQUAL(a6.wrapBin(4), 4u);
0372 BOOST_CHECK_EQUAL(a6.wrapBin(5), 5u);
0373 BOOST_CHECK_EQUAL(a6.wrapBin(6), 1u);
0374 BOOST_CHECK_EQUAL(a6.wrapBin(7), 2u);
0375 }
0376
0377 }
0378
0379 }