]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/histogram/test/axis_boolean_test.cpp
import quincy beta 17.1.0
[ceph.git] / ceph / src / boost / libs / histogram / test / axis_boolean_test.cpp
1 // Copyright 2020 Hans Dembinski
2 //
3 // Distributed under the Boost Software License, Version 1.0.
4 // (See accompanying file LICENSE_1_0.txt
5 // or copy at http://www.boost.org/LICENSE_1_0.txt)
6
7 #include <boost/core/lightweight_test.hpp>
8 #include <boost/histogram/axis/boolean.hpp>
9 #include <boost/histogram/axis/ostream.hpp>
10 #include <limits>
11 #include <sstream>
12 #include <type_traits>
13 #include "std_ostream.hpp"
14 #include "throw_exception.hpp"
15 #include "utility_axis.hpp"
16 #include "utility_str.hpp"
17
18 int main() {
19 using namespace boost::histogram;
20
21 BOOST_TEST(std::is_nothrow_move_assignable<axis::boolean<>>::value);
22 BOOST_TEST(std::is_nothrow_move_constructible<axis::boolean<>>::value);
23
24 // axis::integer with double type
25 {
26 axis::boolean<> a{"foo"};
27 BOOST_TEST_EQ(a.metadata(), "foo");
28 a.metadata() = "bar";
29 const auto& cref = a;
30 BOOST_TEST_EQ(cref.metadata(), "bar");
31 cref.metadata() = "foo";
32 BOOST_TEST_EQ(cref.metadata(), "foo");
33
34 BOOST_TEST_EQ(a.index(true), 1);
35 BOOST_TEST_EQ(a.index(false), 0);
36 BOOST_TEST_EQ(a.index(1), 1);
37 BOOST_TEST_EQ(a.index(0), 0);
38
39 BOOST_TEST_EQ(a.options(), axis::option::none_t::value);
40
41 BOOST_TEST_CSTR_EQ(str(a).c_str(), "boolean(metadata=\"foo\")");
42
43 axis::boolean<> b;
44 BOOST_TEST_CSTR_EQ(str(b).c_str(), "boolean()");
45
46 BOOST_TEST_NE(a, b);
47 b = a;
48 BOOST_TEST_EQ(a, b);
49 axis::boolean<> c = std::move(b);
50 BOOST_TEST_EQ(c, a);
51 axis::boolean<> d;
52 BOOST_TEST_NE(c, d);
53 d = std::move(c);
54 BOOST_TEST_EQ(d, a);
55 }
56
57 // iterators
58 test_axis_iterator(axis::boolean<>(), 0, 2);
59
60 return boost::report_errors();
61 }