• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
main()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 }
62