All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
FixedBins_test.cc
Go to the documentation of this file.
1 /**
2  * @file FixedBins_test.cc
3  * @brief Unit test for `FixedBins` class.
4  * @author Gianluca Petrillo (petrillo@slac.stanford.edu)
5  * @date March 28, 2021
6  * @see icarusalg/Utilities/FixedBins.h
7  */
8 
9 
10 // Boost libraries
11 #define BOOST_TEST_MODULE FixedBins
12 #include <boost/test/unit_test.hpp>
13 
14 // ICARUS libraries
16 
17 
18 // -----------------------------------------------------------------------------
19 void BasicTest() {
20 
21  icarus::ns::util::FixedBins bins { 2.0, -1.0 }; // initializes doubles
22  std::vector<unsigned int> expectedContent;
23 
24  BOOST_TEST((bins.binWidth() == 2.0));
25  BOOST_TEST((bins.offset() == -1.0));
26 
27  BOOST_CHECK((bins.empty()));
28  BOOST_CHECK((empty(bins)));
29  BOOST_TEST((bins.size() == 0U));
30  BOOST_TEST((size(bins) == 0U));
31  BOOST_TEST((bins.cbegin() == bins.cend()));
32  BOOST_TEST((bins.begin() == bins.end()));
33  BOOST_TEST((bins.nBins() == 0U));
34  BOOST_TEST((bins.range() == 0.0));
35  BOOST_TEST((bins.count(-2) == 0U));
36  BOOST_TEST((bins.count(-1) == 0U));
37  BOOST_TEST((bins.count( 0) == 0U));
38  BOOST_TEST((bins.count( 1) == 0U));
39  BOOST_TEST((bins.count( 2) == 0U));
40  BOOST_TEST((bins.countFor(-5.0) == 0U));
41  BOOST_TEST((bins.countFor(-4.0) == 0U));
42  BOOST_TEST((bins.countFor(-3.0) == 0U));
43  BOOST_TEST((bins.countFor(-2.0) == 0U));
44  BOOST_TEST((bins.countFor(-1.0) == 0U));
45  BOOST_TEST((bins.countFor(-0.0) == 0U));
46  BOOST_TEST((bins.countFor(+0.0) == 0U));
47  BOOST_TEST((bins.countFor(+1.0) == 0U));
48  BOOST_TEST((bins.countFor(+2.0) == 0U));
49  BOOST_TEST((bins.countFor(+3.0) == 0U));
50  BOOST_TEST((bins.countFor(+4.0) == 0U));
51  BOOST_TEST((bins.countFor(+5.0) == 0U));
52  BOOST_TEST((bins[-2] == 0U));
53  BOOST_TEST((bins[-1] == 0U));
54  BOOST_TEST((bins[ 0] == 0U));
55  BOOST_TEST((bins[ 1] == 0U));
56  BOOST_TEST((bins[ 2] == 0U));
57 
58 
59  // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
60  bins.add(3.5);
61  expectedContent = { 1 };
62  BOOST_CHECK((!bins.empty()));
63  BOOST_CHECK((!empty(bins)));
64  BOOST_TEST((bins.size() == 1U));
65  BOOST_TEST((size(bins) == 1U));
66  BOOST_CHECK_EQUAL_COLLECTIONS
67  (bins.begin(), bins.end(), expectedContent.begin(), expectedContent.end());
68  BOOST_CHECK_EQUAL_COLLECTIONS
69  (bins.cbegin(), bins.cend(), expectedContent.cbegin(), expectedContent.cend());
70  BOOST_CHECK_EQUAL_COLLECTIONS
71  (begin(bins), end(bins), expectedContent.begin(), expectedContent.end());
72  BOOST_CHECK_EQUAL_COLLECTIONS
73  (cbegin(bins), cend(bins), expectedContent.cbegin(), expectedContent.cend());
74  BOOST_TEST((bins.nBins() == 1U));
75  BOOST_TEST((bins.range() == 2.0));
76  BOOST_TEST((bins.minBin() == 0));
77  BOOST_TEST((bins.maxBin() == 0));
78  BOOST_TEST((bins.min() == +3.0));
79  BOOST_TEST((bins.max() == +5.0));
80  BOOST_TEST((bins.count(-2) == 0U));
81  BOOST_TEST((bins.count(-1) == 0U));
82  BOOST_TEST((bins.count( 0) == 1U));
83  BOOST_TEST((bins.count( 1) == 0U));
84  BOOST_TEST((bins.count( 2) == 0U));
85  BOOST_TEST((bins.countFor(-5.0) == 0U));
86  BOOST_TEST((bins.countFor(-4.0) == 0U));
87  BOOST_TEST((bins.countFor(-3.0) == 0U));
88  BOOST_TEST((bins.countFor(-2.0) == 0U));
89  BOOST_TEST((bins.countFor(-1.0) == 0U));
90  BOOST_TEST((bins.countFor(-0.0) == 0U));
91  BOOST_TEST((bins.countFor(+0.0) == 0U));
92  BOOST_TEST((bins.countFor(+1.0) == 0U));
93  BOOST_TEST((bins.countFor(+2.0) == 0U));
94  BOOST_TEST((bins.countFor(+3.0) == 1U));
95  BOOST_TEST((bins.countFor(+4.0) == 1U));
96  BOOST_TEST((bins.countFor(+5.0) == 0U));
97  BOOST_TEST((bins[-2] == 0U));
98  BOOST_TEST((bins[-1] == 0U));
99  BOOST_TEST((bins[ 0] == 1U));
100  BOOST_TEST((bins[ 1] == 0U));
101  BOOST_TEST((bins[ 2] == 0U));
102 
103 
104  // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
105  bins.add(-4.0);
106  expectedContent = { 1U, 0U, 0U, 0U, 1U };
107  BOOST_CHECK((!bins.empty()));
108  BOOST_CHECK((!empty(bins)));
109  BOOST_TEST((bins.size() == 5U));
110  BOOST_TEST((size(bins) == 5U));
111  BOOST_CHECK_EQUAL_COLLECTIONS
112  (bins.begin(), bins.end(), expectedContent.begin(), expectedContent.end());
113  BOOST_CHECK_EQUAL_COLLECTIONS
114  (bins.cbegin(), bins.cend(), expectedContent.cbegin(), expectedContent.cend());
115  BOOST_CHECK_EQUAL_COLLECTIONS
116  (begin(bins), end(bins), expectedContent.begin(), expectedContent.end());
117  BOOST_CHECK_EQUAL_COLLECTIONS
118  (cbegin(bins), cend(bins), expectedContent.cbegin(), expectedContent.cend());
119  BOOST_TEST((bins.nBins() == 5U));
120  BOOST_TEST((bins.range() == 10.0));
121  BOOST_TEST((bins.minBin() == -4));
122  BOOST_TEST((bins.maxBin() == 0));
123  BOOST_TEST((bins.min() == -5.0));
124  BOOST_TEST((bins.max() == +5.0));
125  BOOST_TEST((bins.count(-5) == 0U));
126  BOOST_TEST((bins.count(-4) == 1U));
127  BOOST_TEST((bins.count(-3) == 0U));
128  BOOST_TEST((bins.count(-2) == 0U));
129  BOOST_TEST((bins.count(-1) == 0U));
130  BOOST_TEST((bins.count( 0) == 1U));
131  BOOST_TEST((bins.count( 1) == 0U));
132  BOOST_TEST((bins.count( 2) == 0U));
133  BOOST_TEST((bins.countFor(-5.0) == 1U));
134  BOOST_TEST((bins.countFor(-4.0) == 1U));
135  BOOST_TEST((bins.countFor(-3.0) == 0U));
136  BOOST_TEST((bins.countFor(-2.0) == 0U));
137  BOOST_TEST((bins.countFor(-1.0) == 0U));
138  BOOST_TEST((bins.countFor(-0.0) == 0U));
139  BOOST_TEST((bins.countFor(+0.0) == 0U));
140  BOOST_TEST((bins.countFor(+1.0) == 0U));
141  BOOST_TEST((bins.countFor(+2.0) == 0U));
142  BOOST_TEST((bins.countFor(+3.0) == 1U));
143  BOOST_TEST((bins.countFor(+4.0) == 1U));
144  BOOST_TEST((bins.countFor(+5.0) == 0U));
145  BOOST_TEST((bins[-5] == 0U));
146  BOOST_TEST((bins[-4] == 1U));
147  BOOST_TEST((bins[-3] == 0U));
148  BOOST_TEST((bins[-2] == 0U));
149  BOOST_TEST((bins[-1] == 0U));
150  BOOST_TEST((bins[ 0] == 1U));
151  BOOST_TEST((bins[ 1] == 0U));
152  BOOST_TEST((bins[ 2] == 0U));
153 
154 
155  // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
156  bins.add(-4.5);
157  expectedContent = { 2U, 0U, 0U, 0U, 1U };
158  BOOST_CHECK((!bins.empty()));
159  BOOST_CHECK((!empty(bins)));
160  BOOST_TEST((bins.size() == 5U));
161  BOOST_TEST((size(bins) == 5U));
162  BOOST_CHECK_EQUAL_COLLECTIONS
163  (bins.begin(), bins.end(), expectedContent.begin(), expectedContent.end());
164  BOOST_CHECK_EQUAL_COLLECTIONS
165  (bins.cbegin(), bins.cend(), expectedContent.cbegin(), expectedContent.cend());
166  BOOST_CHECK_EQUAL_COLLECTIONS
167  (begin(bins), end(bins), expectedContent.begin(), expectedContent.end());
168  BOOST_CHECK_EQUAL_COLLECTIONS
169  (cbegin(bins), cend(bins), expectedContent.cbegin(), expectedContent.cend());
170  BOOST_TEST((bins.nBins() == 5U));
171  BOOST_TEST((bins.range() == 10.0));
172  BOOST_TEST((bins.minBin() == -4));
173  BOOST_TEST((bins.maxBin() == 0));
174  BOOST_TEST((bins.min() == -5.0));
175  BOOST_TEST((bins.max() == +5.0));
176  BOOST_TEST((bins.count(-5) == 0U));
177  BOOST_TEST((bins.count(-4) == 2U));
178  BOOST_TEST((bins.count(-3) == 0U));
179  BOOST_TEST((bins.count(-2) == 0U));
180  BOOST_TEST((bins.count(-1) == 0U));
181  BOOST_TEST((bins.count( 0) == 1U));
182  BOOST_TEST((bins.count( 1) == 0U));
183  BOOST_TEST((bins.count( 2) == 0U));
184  BOOST_TEST((bins.countFor(-5.0) == 2U));
185  BOOST_TEST((bins.countFor(-4.0) == 2U));
186  BOOST_TEST((bins.countFor(-3.0) == 0U));
187  BOOST_TEST((bins.countFor(-2.0) == 0U));
188  BOOST_TEST((bins.countFor(-1.0) == 0U));
189  BOOST_TEST((bins.countFor(-0.0) == 0U));
190  BOOST_TEST((bins.countFor(+0.0) == 0U));
191  BOOST_TEST((bins.countFor(+1.0) == 0U));
192  BOOST_TEST((bins.countFor(+2.0) == 0U));
193  BOOST_TEST((bins.countFor(+3.0) == 1U));
194  BOOST_TEST((bins.countFor(+4.0) == 1U));
195  BOOST_TEST((bins.countFor(+5.0) == 0U));
196  BOOST_TEST((bins[-5] == 0U));
197  BOOST_TEST((bins[-4] == 2U));
198  BOOST_TEST((bins[-3] == 0U));
199  BOOST_TEST((bins[-2] == 0U));
200  BOOST_TEST((bins[-1] == 0U));
201  BOOST_TEST((bins[ 0] == 1U));
202  BOOST_TEST((bins[ 1] == 0U));
203  BOOST_TEST((bins[ 2] == 0U));
204 
205 
206  // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
207  bins.clear();
208  BOOST_TEST((bins.binWidth() == 2.0));
209  BOOST_TEST((bins.offset() == -1.0));
210 
211  BOOST_CHECK((bins.empty()));
212  BOOST_CHECK((empty(bins)));
213  BOOST_TEST((bins.size() == 0U));
214  BOOST_TEST((size(bins) == 0U));
215  BOOST_TEST((bins.cbegin() == bins.cend()));
216  BOOST_TEST((bins.begin() == bins.end()));
217  BOOST_TEST((bins.nBins() == 0U));
218  BOOST_TEST((bins.range() == 0.0));
219  BOOST_TEST((bins.count(-2) == 0U));
220  BOOST_TEST((bins.count(-1) == 0U));
221  BOOST_TEST((bins.count( 0) == 0U));
222  BOOST_TEST((bins.count( 1) == 0U));
223  BOOST_TEST((bins.count( 2) == 0U));
224  BOOST_TEST((bins.countFor(-5.0) == 0U));
225  BOOST_TEST((bins.countFor(-4.0) == 0U));
226  BOOST_TEST((bins.countFor(-3.0) == 0U));
227  BOOST_TEST((bins.countFor(-2.0) == 0U));
228  BOOST_TEST((bins.countFor(-1.0) == 0U));
229  BOOST_TEST((bins.countFor(-0.0) == 0U));
230  BOOST_TEST((bins.countFor(+0.0) == 0U));
231  BOOST_TEST((bins.countFor(+1.0) == 0U));
232  BOOST_TEST((bins.countFor(+2.0) == 0U));
233  BOOST_TEST((bins.countFor(+3.0) == 0U));
234  BOOST_TEST((bins.countFor(+4.0) == 0U));
235  BOOST_TEST((bins.countFor(+5.0) == 0U));
236  BOOST_TEST((bins[-2] == 0U));
237  BOOST_TEST((bins[-1] == 0U));
238  BOOST_TEST((bins[ 0] == 0U));
239  BOOST_TEST((bins[ 1] == 0U));
240  BOOST_TEST((bins[ 2] == 0U));
241 
242 
243  // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
244 
245 } // BasicTest()
246 
247 
248 //------------------------------------------------------------------------------
249 //--- The tests
250 //---
251 BOOST_AUTO_TEST_CASE( TestCase ) {
252 
253  BasicTest();
254 
255 } // BOOST_AUTO_TEST_CASE( TestCase )
256 
257 
258 //------------------------------------------------------------------------------
BOOST_AUTO_TEST_CASE(AllTests)
std::size_t size(FixedBins< T, C > const &) noexcept
Definition: FixedBins.h:561
auto cbegin(FixedBins< T, C > const &) noexcept
Definition: FixedBins.h:567
auto cend(FixedBins< T, C > const &) noexcept
Definition: FixedBins.h:579
Binned counts of data.
Definition: FixedBins.h:25
auto end(FixedBins< T, C > const &) noexcept
Definition: FixedBins.h:585
void BasicTest()
Class with extensible fix-sized binning.
auto begin(FixedBins< T, C > const &) noexcept
Definition: FixedBins.h:573
bool empty(FixedBins< T, C > const &) noexcept
Definition: FixedBins.h:555