MCPcopy Create free account
hub / github.com/boostorg/histogram / main

Function main

test/histogram_dynamic_test.cpp:28–124  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

26using namespace boost::histogram::literals; // to get _c suffix
27
28int main() {
29 // special stuff that only works with dynamic_tag
30
31 // init
32 {
33 auto v = std::vector<axis::any<axis::regular<>, axis::integer<>>>();
34 v.push_back(axis::regular<>(4, -1, 1));
35 v.push_back(axis::integer<>(1, 7));
36 auto h = make_dynamic_histogram(v.begin(), v.end());
37 BOOST_TEST_EQ(h.dim(), 2);
38 BOOST_TEST_EQ(h.axis(0), v[0]);
39 BOOST_TEST_EQ(h.axis(1), v[1]);
40
41 auto h2 = make_dynamic_histogram_with(array_storage<int>(), v.begin(), v.end());
42 BOOST_TEST_EQ(h2.dim(), 2);
43 BOOST_TEST_EQ(h2.axis(0), v[0]);
44 BOOST_TEST_EQ(h2.axis(1), v[1]);
45 }
46
47 // bad fill argument
48 {
49 auto h = make_dynamic_histogram(axis::integer<>(0, 3));
50 BOOST_TEST_THROWS(h(std::string()), std::invalid_argument);
51 }
52
53 // axis methods
54 {
55 enum { A, B };
56 auto c = make_dynamic_histogram(axis::category<>({A, B}));
57 BOOST_TEST_THROWS(c.axis().lower(0), std::runtime_error);
58 }
59
60 // reduce
61 {
62 auto h1 = make_dynamic_histogram(axis::integer<>(0, 2), axis::integer<>(0, 3));
63 h1(0, 0);
64 h1(0, 1);
65 h1(1, 0);
66 h1(1, 1);
67 h1(1, 2);
68
69 std::vector<int> x;
70
71 x = {0};
72 auto h1_0 = h1.reduce_to(x.begin(), x.end());
73 BOOST_TEST_EQ(h1_0.dim(), 1);
74 BOOST_TEST_EQ(sum(h1_0), 5);
75 BOOST_TEST_EQ(h1_0.at(0), 2);
76 BOOST_TEST_EQ(h1_0.at(1), 3);
77 BOOST_TEST(h1_0.axis() == h1.axis(0_c));
78
79 x = {1};
80 auto h1_1 = h1.reduce_to(x.begin(), x.end());
81 BOOST_TEST_EQ(h1_1.dim(), 1);
82 BOOST_TEST_EQ(sum(h1_1), 5);
83 BOOST_TEST_EQ(h1_1.at(0), 2);
84 BOOST_TEST_EQ(h1_1.at(1), 2);
85 BOOST_TEST_EQ(h1_1.at(2), 1);

Callers

nothing calls this directly

Calls 15

make_dynamic_histogramFunction · 0.85
weightFunction · 0.85
axisMethod · 0.80
reduce_toMethod · 0.80
atMethod · 0.80
binMethod · 0.80
sumFunction · 0.70
beginMethod · 0.45
endMethod · 0.45
dimMethod · 0.45
lowerMethod · 0.45

Tested by

no test coverage detected