test/doc/examples/example22.run-fail.cpp
Raffi Enficiaud c63640cef1 Rewrite example22 and example23
- Functions being optimized: making functions having side-effects to prevent
  optimizations to remove the calls.
- UB (divide by zero) is compiler implementation specific and does not raise
  an exception on CLANG, rewrite the test to serve the purpose of the
  boost.test macro.
2019-02-04 21:59:08 +01:00

36 lines
895 B
C++

// (C) Copyright Gennadiy Rozental 2011-2015.
// 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)
// See http://www.boost.org/libs/test for the library home page.
//[example_code
#define BOOST_TEST_MODULE example
#include <boost/test/included/unit_test.hpp>
extern void foo( int i );
BOOST_AUTO_TEST_CASE( test_external_interface )
{
for( int i = 3; i >=0; i-- ) {
BOOST_TEST_CHECKPOINT( "Calling 'foo' with i=" << i );
foo( i );
}
}
void goo( int value )
{
BOOST_TEST_CHECKPOINT( "Inside goo with value '" << value << "'");
}
void foo( int i )
{
if( i == 1 )
throw std::runtime_error("Undefined Behaviour ahead!");
// following line may not raise an exception on some compilers:
// Undefined Behaviour is implementation specific
goo( 2/(i-1) );
}
//]