]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/leaf/test/preload_exception_test.cpp
1 // Copyright 2018-2022 Emil Dotchevski and Reverge Studios, Inc.
3 // Distributed under the Boost Software License, Version 1.0. (See accompanying
4 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6 #include <boost/leaf/config.hpp>
8 #if defined(BOOST_LEAF_NO_EXCEPTIONS) || defined(BOOST_LEAF_NO_THREADS)
14 std::cout
<< "Unit test not applicable." << std::endl
;
20 #ifdef BOOST_LEAF_TEST_SINGLE_HEADER
23 # include <boost/leaf/on_error.hpp>
24 # include <boost/leaf/handle_errors.hpp>
25 # include <boost/leaf/result.hpp>
28 #include "lightweight_test.hpp"
30 namespace leaf
= boost::leaf
;
38 template <class Thrower
>
41 auto load
= leaf::on_error( info
<1>{} );
45 template <class Thrower
>
48 auto load
= leaf::on_error(info
<3>{}, info
<2>{} );
52 template <class Thrower
>
58 template <class Thrower
>
70 f1( [] { throw leaf::exception(); } );
73 []( leaf::error_info
const & err
, info
<1> )
75 BOOST_TEST_EQ(err
.error().value(), 1);
82 []( info
<1>, info
<2> )
91 f2( [] { throw leaf::exception(); } );
98 []( leaf::error_info
const & err
, info
<2>, info
<3> )
100 BOOST_TEST_EQ(err
.error().value(), 9);
103 []( info
<1>, info
<2> )
112 f1( [] { throw std::exception(); } );
115 []( leaf::error_info
const & err
, info
<1> )
117 BOOST_TEST_EQ(err
.error().value(), 17);
124 []( info
<1>, info
<2> )
133 f2( [] { throw std::exception(); } );
140 []( leaf::error_info
const & err
, info
<2>, info
<3> )
142 BOOST_TEST_EQ(err
.error().value(), 21);
145 []( info
<1>, info
<2> )
150 return boost::report_errors();