1//
2// verify_test.cpp - a test for BOOST_VERIFY
3//
4// Copyright (c) 2002 Peter Dimov and Multi Media Ltd.
5// Copyright (c) 2007 Peter Dimov
6//
7// Distributed under the Boost Software License, Version 1.0. (See
8// accompanying file LICENSE_1_0.txt or copy at
9// http://www.boost.org/LICENSE_1_0.txt)
10//
11
12#include <boost/core/lightweight_test.hpp>
13
14#if defined(__GNUC__)
15# pragma GCC diagnostic ignored "-Waddress"
16#endif
17
18#include <boost/assert.hpp>
19
20int f( int & x )
21{
22 return ++x;
23}
24
25void test_default()
26{
27 int x = 1;
28
29 BOOST_VERIFY( 1 );
30 BOOST_VERIFY( x == 1 );
31 BOOST_VERIFY( ++x );
32 BOOST_VERIFY( f(x) );
33 BOOST_VERIFY( &x );
34
35 BOOST_TEST( x == 3 );
36}
37
38#define BOOST_DISABLE_ASSERTS
39#include <boost/assert.hpp>
40
41void test_disabled()
42{
43 int x = 1;
44
45 BOOST_VERIFY( 1 );
46 BOOST_VERIFY( x == 1 );
47 BOOST_VERIFY( ++x );
48 BOOST_VERIFY( f(x) );
49 BOOST_VERIFY( &x );
50
51 BOOST_TEST( x == 3 );
52
53 BOOST_VERIFY( 0 );
54 BOOST_VERIFY( !x );
55 BOOST_VERIFY( x == 0 );
56 BOOST_VERIFY( !++x );
57 BOOST_VERIFY( !f(x) );
58
59 BOOST_TEST( x == 5 );
60
61 void * p = 0;
62 BOOST_VERIFY( p );
63}
64
65#undef BOOST_DISABLE_ASSERTS
66
67#define BOOST_ENABLE_ASSERT_HANDLER
68#include <boost/assert.hpp>
69#include <boost/config.hpp>
70#include <cstdio>
71
72int handler_invoked = 0;
73
74void boost::assertion_failed(char const * expr, char const * function, char const * file, long line)
75{
76#if !defined(BOOST_NO_STDC_NAMESPACE)
77 using std::printf;
78#endif
79
80 printf(format: "Expression: %s\nFunction: %s\nFile: %s\nLine: %ld\n\n", expr, function, file, line);
81 ++handler_invoked;
82}
83
84struct X
85{
86 static bool f()
87 {
88 BOOST_VERIFY( 0 );
89 return false;
90 }
91};
92
93void test_handler()
94{
95 int x = 1;
96
97 BOOST_VERIFY( 1 );
98 BOOST_VERIFY( x == 1 );
99 BOOST_VERIFY( ++x );
100 BOOST_VERIFY( f(x) );
101 BOOST_VERIFY( &x );
102
103 BOOST_TEST( x == 3 );
104
105 BOOST_VERIFY( 0 );
106 BOOST_VERIFY( !x );
107 BOOST_VERIFY( x == 0 );
108 BOOST_VERIFY( !++x );
109 BOOST_VERIFY( !f(x) );
110
111 BOOST_TEST( x == 5 );
112
113 void * p = 0;
114 BOOST_VERIFY( p );
115
116 BOOST_VERIFY( X::f() );
117
118 BOOST_TEST( handler_invoked == 8 );
119}
120
121#undef BOOST_ENABLE_ASSERT_HANDLER
122
123int main()
124{
125 test_default();
126 test_disabled();
127 test_handler();
128
129 return boost::report_errors();
130}
131

source code of boost/libs/assert/test/verify_test.cpp