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

Function main

test/axis_test.cpp:39–496  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

37}
38
39int main() {
40 // bad_ctors
41 {
42 BOOST_TEST_THROWS(axis::regular<>(0, 0, 1), std::logic_error);
43 BOOST_TEST_THROWS(axis::regular<>(1, 1, -1), std::logic_error);
44 BOOST_TEST_THROWS(axis::circular<>(0), std::logic_error);
45 BOOST_TEST_THROWS(axis::variable<>({}), std::logic_error);
46 BOOST_TEST_THROWS(axis::variable<>({1.0}), std::logic_error);
47 BOOST_TEST_THROWS(axis::integer<>(1, -1), std::logic_error);
48 BOOST_TEST_THROWS(axis::category<>({}), std::logic_error);
49 }
50
51 // axis::regular
52 {
53 axis::regular<> a{4, -2, 2};
54 BOOST_TEST_EQ(a[-1].lower(), -std::numeric_limits<double>::infinity());
55 BOOST_TEST_EQ(a[a.size()].upper(), std::numeric_limits<double>::infinity());
56 axis::regular<> b;
57 BOOST_TEST_NOT(a == b);
58 b = a;
59 BOOST_TEST_EQ(a, b);
60 b = b;
61 BOOST_TEST_EQ(a, b);
62 axis::regular<> c = std::move(b);
63 BOOST_TEST(c == a);
64 BOOST_TEST_NOT(b == a);
65 axis::regular<> d;
66 BOOST_TEST_NOT(c == d);
67 d = std::move(c);
68 BOOST_TEST_EQ(d, a);
69 BOOST_TEST_EQ(a.index(-10.), -1);
70 BOOST_TEST_EQ(a.index(-2.1), -1);
71 BOOST_TEST_EQ(a.index(-2.0), 0);
72 BOOST_TEST_EQ(a.index(-1.1), 0);
73 BOOST_TEST_EQ(a.index(0.0), 2);
74 BOOST_TEST_EQ(a.index(0.9), 2);
75 BOOST_TEST_EQ(a.index(1.0), 3);
76 BOOST_TEST_EQ(a.index(10.), 4);
77 BOOST_TEST_EQ(a.index(-std::numeric_limits<double>::infinity()), -1);
78 BOOST_TEST_EQ(a.index(std::numeric_limits<double>::infinity()), 4);
79 BOOST_TEST_EQ(a.index(std::numeric_limits<double>::quiet_NaN()), 4);
80 }
81
82 // axis::regular with log transform
83 {
84 axis::regular<axis::transform::log> b{2, 1e0, 1e2};
85 BOOST_TEST_EQ(b[-1].lower(), 0.0);
86 BOOST_TEST_IS_CLOSE(b[0].lower(), 1.0, 1e-9);
87 BOOST_TEST_IS_CLOSE(b[1].lower(), 10.0, 1e-9);
88 BOOST_TEST_IS_CLOSE(b[2].lower(), 100.0, 1e-9);
89 BOOST_TEST_EQ(b[2].upper(), std::numeric_limits<double>::infinity());
90
91 BOOST_TEST_EQ(b.index(-1), 2); // produces NaN in conversion
92 BOOST_TEST_EQ(b.index(0), -1);
93 BOOST_TEST_EQ(b.index(1), 0);
94 BOOST_TEST_EQ(b.index(9), 0);
95 BOOST_TEST_EQ(b.index(10), 1);
96 BOOST_TEST_EQ(b.index(90), 1);

Callers

nothing calls this directly

Calls 10

test_axis_iteratorFunction · 0.85
axes_equalFunction · 0.85
axes_assignFunction · 0.85
make_sub_axesFunction · 0.85
upperMethod · 0.80
perimeterMethod · 0.80
lowerMethod · 0.45
sizeMethod · 0.45
indexMethod · 0.45
valueMethod · 0.45

Tested by

no test coverage detected