mirror of
https://github.com/boostorg/throw_exception.git
synced 2025-07-14 04:56:32 +02:00
Test virtual inheritance from boost::exception
This commit is contained in:
@ -16,13 +16,19 @@ class my_exception2: public std::exception, public boost::exception
|
|||||||
{
|
{
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class my_exception3: public std::exception, public virtual boost::exception
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
BOOST_TEST_THROWS( boost::throw_exception( my_exception() ), boost::exception );
|
BOOST_TEST_THROWS( boost::throw_exception( my_exception() ), boost::exception );
|
||||||
BOOST_TEST_THROWS( boost::throw_exception( my_exception2() ), boost::exception );
|
BOOST_TEST_THROWS( boost::throw_exception( my_exception2() ), boost::exception );
|
||||||
|
BOOST_TEST_THROWS( boost::throw_exception( my_exception3() ), boost::exception );
|
||||||
|
|
||||||
BOOST_TEST_THROWS( BOOST_THROW_EXCEPTION( my_exception() ), boost::exception );
|
BOOST_TEST_THROWS( BOOST_THROW_EXCEPTION( my_exception() ), boost::exception );
|
||||||
BOOST_TEST_THROWS( BOOST_THROW_EXCEPTION( my_exception2() ), boost::exception );
|
BOOST_TEST_THROWS( BOOST_THROW_EXCEPTION( my_exception2() ), boost::exception );
|
||||||
|
BOOST_TEST_THROWS( BOOST_THROW_EXCEPTION( my_exception3() ), boost::exception );
|
||||||
|
|
||||||
return boost::report_errors();
|
return boost::report_errors();
|
||||||
}
|
}
|
||||||
|
@ -17,6 +17,10 @@ class my_exception2: public std::exception, public boost::exception
|
|||||||
{
|
{
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class my_exception3: public std::exception, public virtual boost::exception
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@ -43,6 +47,18 @@ int main()
|
|||||||
BOOST_TEST_THROWS( boost::rethrow_exception( p ), boost::exception );
|
BOOST_TEST_THROWS( boost::rethrow_exception( p ), boost::exception );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
boost::throw_exception( my_exception3() );
|
||||||
|
}
|
||||||
|
catch( ... )
|
||||||
|
{
|
||||||
|
boost::exception_ptr p = boost::current_exception();
|
||||||
|
|
||||||
|
BOOST_TEST_THROWS( boost::rethrow_exception( p ), my_exception3 );
|
||||||
|
BOOST_TEST_THROWS( boost::rethrow_exception( p ), boost::exception );
|
||||||
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
BOOST_THROW_EXCEPTION( my_exception() );
|
BOOST_THROW_EXCEPTION( my_exception() );
|
||||||
@ -67,5 +83,17 @@ int main()
|
|||||||
BOOST_TEST_THROWS( boost::rethrow_exception( p ), boost::exception );
|
BOOST_TEST_THROWS( boost::rethrow_exception( p ), boost::exception );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
BOOST_THROW_EXCEPTION( my_exception3() );
|
||||||
|
}
|
||||||
|
catch( ... )
|
||||||
|
{
|
||||||
|
boost::exception_ptr p = boost::current_exception();
|
||||||
|
|
||||||
|
BOOST_TEST_THROWS( boost::rethrow_exception( p ), my_exception3 );
|
||||||
|
BOOST_TEST_THROWS( boost::rethrow_exception( p ), boost::exception );
|
||||||
|
}
|
||||||
|
|
||||||
return boost::report_errors();
|
return boost::report_errors();
|
||||||
}
|
}
|
||||||
|
@ -17,6 +17,10 @@ class my_exception2: public std::exception, public boost::exception
|
|||||||
{
|
{
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class my_exception3: public std::exception, public virtual boost::exception
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@ -36,7 +40,7 @@ int main()
|
|||||||
int const * line = boost::get_error_info<boost::throw_line>( x );
|
int const * line = boost::get_error_info<boost::throw_line>( x );
|
||||||
|
|
||||||
BOOST_TEST( line != 0 );
|
BOOST_TEST( line != 0 );
|
||||||
BOOST_TEST_EQ( *line, 24 );
|
BOOST_TEST_EQ( *line, 28 );
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -64,7 +68,35 @@ int main()
|
|||||||
int const * line = boost::get_error_info<boost::throw_line>( x );
|
int const * line = boost::get_error_info<boost::throw_line>( x );
|
||||||
|
|
||||||
BOOST_TEST( line != 0 );
|
BOOST_TEST( line != 0 );
|
||||||
BOOST_TEST_EQ( *line, 52 );
|
BOOST_TEST_EQ( *line, 56 );
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
char const * const * function = boost::get_error_info<boost::throw_function>( x );
|
||||||
|
|
||||||
|
BOOST_TEST( function != 0 );
|
||||||
|
BOOST_TEST_CSTR_EQ( *function, BOOST_CURRENT_FUNCTION );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
BOOST_THROW_EXCEPTION( my_exception3() );
|
||||||
|
}
|
||||||
|
catch( boost::exception const & x )
|
||||||
|
{
|
||||||
|
{
|
||||||
|
char const * const * file = boost::get_error_info<boost::throw_file>( x );
|
||||||
|
|
||||||
|
BOOST_TEST( file != 0 );
|
||||||
|
BOOST_TEST_CSTR_EQ( *file, __FILE__ );
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
int const * line = boost::get_error_info<boost::throw_line>( x );
|
||||||
|
|
||||||
|
BOOST_TEST( line != 0 );
|
||||||
|
BOOST_TEST_EQ( *line, 84 );
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user