JayBeams  0.1
Another project to have fun coding.
ut_event_rate_histogram.cpp
Go to the documentation of this file.
2 
3 #include <boost/test/unit_test.hpp>
4 
5 /**
6  * @test Test the basic functionality of a event_rate_histogram.
7  */
8 BOOST_AUTO_TEST_CASE(event_rate_histogram_basics) {
9  typedef jb::event_rate_histogram<> tested_class;
10 
11  tested_class t(1000, std::chrono::microseconds(1000));
12  BOOST_CHECK_EQUAL(t.nsamples(), 0);
13  BOOST_CHECK_THROW(t.last_rate(), std::invalid_argument);
14  BOOST_CHECK_THROW(t.estimated_mean(), std::invalid_argument);
15 
16  t.sample(std::chrono::microseconds(10));
17  t.sample(std::chrono::microseconds(10));
18  t.sample(std::chrono::microseconds(11));
19  BOOST_CHECK_EQUAL(t.nsamples(), 1);
20  BOOST_CHECK_EQUAL(t.last_rate(), 2);
21  BOOST_CHECK_EQUAL(t.observed_max(), 2);
22 }
23 
24 /**
25  * @test Test that even rate histograms capture repeated elements properly.
26  */
27 BOOST_AUTO_TEST_CASE(event_rate_histogram_repeats) {
28  typedef jb::event_rate_histogram<> tested_class;
29 
30  tested_class t(1000, std::chrono::microseconds(1000));
31  BOOST_CHECK_EQUAL(t.nsamples(), 0);
32  BOOST_CHECK_THROW(t.last_rate(), std::invalid_argument);
33  BOOST_CHECK_THROW(t.estimated_mean(), std::invalid_argument);
34 
35  t.sample(std::chrono::microseconds(10));
36  t.sample(std::chrono::microseconds(11));
37  t.sample(std::chrono::microseconds(12));
38  BOOST_CHECK_EQUAL(t.nsamples(), 2);
39  BOOST_CHECK_EQUAL(t.last_rate(), 2);
40  BOOST_CHECK_EQUAL(t.observed_max(), 2);
41  t.sample(std::chrono::microseconds(1012));
42  BOOST_CHECK_EQUAL(t.nsamples(), 1002);
43  BOOST_CHECK_EQUAL(t.last_rate(), 1);
44  BOOST_CHECK_EQUAL(t.observed_max(), 3);
45  t.sample(std::chrono::microseconds(5012));
46  BOOST_CHECK_EQUAL(t.nsamples(), 5002);
47  BOOST_CHECK_EQUAL(t.last_rate(), 0);
48  BOOST_CHECK_EQUAL(t.observed_max(), 3);
49 }
BOOST_AUTO_TEST_CASE(event_rate_histogram_basics)
Keep a histogram of observed event rates.