// Copyright 2018 Hans Dembinski // // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt // or copy at http://www.boost.org/LICENSE_1_0.txt) #include #include #include using namespace boost::histogram::axis; template bool operator==(option_set, option_set) { return N == M; } template std::ostream& operator<<(std::ostream& os, option_set) { os << "underflow " << bool(N & option::underflow::value) << " " << "overflow " << bool(N & option::overflow::value) << " " << "circular " << bool(N & option::circular::value) << " " << "growth " << bool(N & option::growth::value); return os; } int main() { using namespace option; using uoflow = join; constexpr auto uoflow_growth = join{}; constexpr auto overflow_growth = join{}; constexpr auto overflow_circular = join{}; BOOST_TEST_EQ(uoflow::value, underflow::value | overflow::value); BOOST_TEST((test::value)); BOOST_TEST((test::value)); BOOST_TEST_NOT((test::value)); BOOST_TEST_NOT((test::value)); BOOST_TEST((test::value)); BOOST_TEST_EQ((join{}), circular{}); BOOST_TEST_EQ((join{}), underflow{}); BOOST_TEST_EQ((join{}), uoflow{}); BOOST_TEST_EQ((join{}), uoflow_growth); BOOST_TEST_EQ((join{}), overflow_growth); BOOST_TEST_EQ((join{}), overflow_circular); BOOST_TEST_EQ((join{}), overflow_circular); BOOST_TEST_EQ((join{}), uoflow{}); return boost::report_errors(); }