]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/throw_exception/test/throw_exception_test4.cpp
1 // Copyright 2018 Peter Dimov
3 // Distributed under the Boost Software License, Version 1.0.
5 // See accompanying file LICENSE_1_0.txt or copy at
6 // http://www.boost.org/LICENSE_1_0.txt
8 #include <boost/throw_exception.hpp>
9 #include <boost/exception/get_error_info.hpp>
10 #include <boost/detail/lightweight_test.hpp>
12 class my_exception
: public std::exception
16 class my_exception2
: public std::exception
, public boost::exception
20 class my_exception3
: public std::exception
, public virtual boost::exception
28 BOOST_THROW_EXCEPTION( my_exception() );
30 catch( boost::exception
const & x
)
33 char const * const * file
= boost::get_error_info
<boost::throw_file
>( x
);
35 BOOST_TEST( file
!= 0 );
36 BOOST_TEST_CSTR_EQ( *file
, __FILE__
);
40 int const * line
= boost::get_error_info
<boost::throw_line
>( x
);
42 BOOST_TEST( line
!= 0 );
43 BOOST_TEST_EQ( *line
, 28 );
47 char const * const * function
= boost::get_error_info
<boost::throw_function
>( x
);
49 BOOST_TEST( function
!= 0 );
50 BOOST_TEST_CSTR_EQ( *function
, BOOST_CURRENT_FUNCTION
);
56 BOOST_THROW_EXCEPTION( my_exception2() );
58 catch( boost::exception
const & x
)
61 char const * const * file
= boost::get_error_info
<boost::throw_file
>( x
);
63 BOOST_TEST( file
!= 0 );
64 BOOST_TEST_CSTR_EQ( *file
, __FILE__
);
68 int const * line
= boost::get_error_info
<boost::throw_line
>( x
);
70 BOOST_TEST( line
!= 0 );
71 BOOST_TEST_EQ( *line
, 56 );
75 char const * const * function
= boost::get_error_info
<boost::throw_function
>( x
);
77 BOOST_TEST( function
!= 0 );
78 BOOST_TEST_CSTR_EQ( *function
, BOOST_CURRENT_FUNCTION
);
84 BOOST_THROW_EXCEPTION( my_exception3() );
86 catch( boost::exception
const & x
)
89 char const * const * file
= boost::get_error_info
<boost::throw_file
>( x
);
91 BOOST_TEST( file
!= 0 );
92 BOOST_TEST_CSTR_EQ( *file
, __FILE__
);
96 int const * line
= boost::get_error_info
<boost::throw_line
>( x
);
98 BOOST_TEST( line
!= 0 );
99 BOOST_TEST_EQ( *line
, 84 );
103 char const * const * function
= boost::get_error_info
<boost::throw_function
>( x
);
105 BOOST_TEST( function
!= 0 );
106 BOOST_TEST_CSTR_EQ( *function
, BOOST_CURRENT_FUNCTION
);
110 return boost::report_errors();