Files
assert/test/verify_test2.cpp
2026-06-27 15:59:34 +03:00

75 lines
1.6 KiB
C++

// Copyright 2026 Peter Dimov
// Distributed under the Boost Software License, Version 1.0.
// https://www.boost.org/LICENSE_1_0.txt)
// Test for BOOST_VERIFY with both BOOST_ENABLE_ASSERT_HANDLER and
// BOOST_ENABLE_ASSERT_DEBUG_HANDLER defined
#include <boost/core/lightweight_test.hpp>
int handler_invoked = 0;
int msg_handler_invoked = 0;
#define BOOST_ENABLE_ASSERT_HANDLER
#define BOOST_ENABLE_ASSERT_DEBUG_HANDLER
#include <boost/assert.hpp>
void test_both()
{
int x = 1;
BOOST_VERIFY( 1 );
BOOST_TEST_EQ( handler_invoked, 0 );
BOOST_VERIFY_MSG( 1, "1" );
BOOST_TEST_EQ( msg_handler_invoked, 0 );
BOOST_VERIFY( x == 1 );
BOOST_TEST_EQ( handler_invoked, 0 );
BOOST_VERIFY_MSG( x == 1, "x == 1" );
BOOST_TEST_EQ( msg_handler_invoked, 0 );
BOOST_VERIFY( ++x );
BOOST_TEST_EQ( handler_invoked, 0 );
BOOST_TEST_EQ( x, 2 );
BOOST_VERIFY_MSG( ++x, "++x" );
BOOST_TEST_EQ( msg_handler_invoked, 0 );
BOOST_TEST_EQ( x, 3 );
#if defined(NDEBUG)
BOOST_VERIFY( 0 );
BOOST_TEST_EQ( handler_invoked, 0 );
BOOST_VERIFY_MSG( 0, "0" );
BOOST_TEST_EQ( msg_handler_invoked, 0 );
#else
BOOST_VERIFY( 0 );
BOOST_TEST_EQ( handler_invoked, 1 );
BOOST_VERIFY_MSG( 0, "0" );
BOOST_TEST_EQ( msg_handler_invoked, 1 );
#endif
}
int main()
{
test_both();
return boost::report_errors();
}
void boost::assertion_failed( char const*, char const*, char const*, long )
{
++handler_invoked;
}
void boost::assertion_failed_msg( char const*, char const*, char const*, char const*, long )
{
++msg_handler_invoked;
}