1 // Copyright Louis Dionne 2013-2017 2 // Distributed under the Boost Software License, Version 1.0. 3 // (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) 4 5 #include <boost/hana/assert.hpp> 6 #include <boost/hana/chain.hpp> 7 #include <boost/hana/equal.hpp> 8 #include <boost/hana/optional.hpp> 9 10 #include <laws/base.hpp> 11 namespace hana = boost::hana; 12 using hana::test::ct_eq; 13 14 main()15int main() { 16 auto f = [](auto x) { 17 return hana::just(hana::test::_injection<0>{}(x)); 18 }; 19 20 BOOST_HANA_CONSTANT_CHECK(hana::equal( 21 hana::chain(hana::just(ct_eq<3>{}), f), 22 f(ct_eq<3>{}) 23 )); 24 25 BOOST_HANA_CONSTANT_CHECK(hana::equal( 26 hana::chain(hana::nothing, f), 27 hana::nothing 28 )); 29 30 // test with operators 31 BOOST_HANA_CONSTANT_CHECK(hana::equal( 32 hana::just(ct_eq<3>{}) | f, 33 f(ct_eq<3>{}) 34 )); 35 36 BOOST_HANA_CONSTANT_CHECK(hana::equal( 37 hana::nothing | f, 38 hana::nothing 39 )); 40 } 41