@@ -54,6 +54,34 @@ test_rolling_mean_test_impl(accumulator_set_type& acc)
5454 assert_is_double (rolling_mean (acc));
5555}
5656
57+ template <typename accumulator_set_type>
58+ void
59+ test_rolling_mean_unsigned_test_impl (accumulator_set_type& acc)
60+ {
61+ acc (7U );
62+ BOOST_CHECK_CLOSE (7 ., rolling_mean (acc), 1e-5 );
63+
64+ acc (6U );
65+ BOOST_CHECK_CLOSE (6.5 , rolling_mean (acc), 1e-5 );
66+
67+ acc (5U );
68+ BOOST_CHECK_CLOSE (6 ., rolling_mean (acc), 1e-5 );
69+
70+ acc (4U );
71+ BOOST_CHECK_CLOSE (5.5 , rolling_mean (acc), 1e-5 );
72+
73+ acc (3U );
74+ BOOST_CHECK_CLOSE (5 ., rolling_mean (acc), 1e-5 );
75+
76+ acc (2U );
77+ BOOST_CHECK_CLOSE (4 ., rolling_mean (acc), 1e-5 );
78+
79+ acc (1U );
80+ BOOST_CHECK_CLOSE (3 ., rolling_mean (acc), 1e-5 );
81+
82+ assert_is_double (rolling_mean (acc));
83+ }
84+
5785// /////////////////////////////////////////////////////////////////////////////
5886// test_rolling_mean
5987void test_rolling_mean ()
@@ -97,6 +125,14 @@ void test_rolling_mean()
97125 BOOST_CHECK (sizeof (acc_lazy_rolling_mean) == sizeof (acc_lazy_rolling_mean3));
98126 BOOST_CHECK (sizeof (acc_immediate_rolling_mean) == sizeof (acc_immediate_rolling_mean2));
99127 BOOST_CHECK (sizeof (acc_immediate_rolling_mean) == sizeof (acc_immediate_rolling_mean3));
128+
129+ // // test unsigned int with both implementations
130+ accumulator_set<unsigned int ,stats<tag::immediate_rolling_mean> >
131+ acc_immediate_rolling_mean4 (tag::immediate_rolling_mean::window_size = window_size),
132+ acc_immediate_rolling_mean5 (tag::immediate_rolling_mean::window_size = window_size, sample = 0 );
133+
134+ test_rolling_mean_unsigned_test_impl (acc_immediate_rolling_mean4);
135+ test_rolling_mean_unsigned_test_impl (acc_immediate_rolling_mean5);
100136}
101137
102138// /////////////////////////////////////////////////////////////////////////////
0 commit comments