1 // Copyright 2020 Hans Dembinski
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)
7 #include <boost/core/lightweight_test.hpp>
8 #include <boost/histogram/axis/boolean.hpp>
9 #include <boost/histogram/axis/ostream.hpp>
12 #include <type_traits>
13 #include "std_ostream.hpp"
14 #include "throw_exception.hpp"
15 #include "utility_axis.hpp"
16 #include "utility_str.hpp"
19 using namespace boost::histogram
;
21 BOOST_TEST(std::is_nothrow_move_assignable
<axis::boolean
<>>::value
);
22 BOOST_TEST(std::is_nothrow_move_constructible
<axis::boolean
<>>::value
);
24 // axis::integer with double type
26 axis::boolean
<> a
{"foo"};
27 BOOST_TEST_EQ(a
.metadata(), "foo");
30 BOOST_TEST_EQ(cref
.metadata(), "bar");
31 cref
.metadata() = "foo";
32 BOOST_TEST_EQ(cref
.metadata(), "foo");
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);
39 BOOST_TEST_EQ(a
.options(), axis::option::none_t::value
);
41 BOOST_TEST_CSTR_EQ(str(a
).c_str(), "boolean(metadata=\"foo\")");
44 BOOST_TEST_CSTR_EQ(str(b
).c_str(), "boolean()");
49 axis::boolean
<> c
= std::move(b
);
58 test_axis_iterator(axis::boolean
<>(), 0, 2);
60 return boost::report_errors();