]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/assert/test/verify_test.cpp
add subtree-ish sources for 12.0.3
[ceph.git] / ceph / src / boost / libs / assert / test / verify_test.cpp
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/detail/lightweight_test.hpp>
13
14 #include <boost/assert.hpp>
15
16 int f( int & x )
17 {
18 return ++x;
19 }
20
21 void test_default()
22 {
23 int x = 1;
24
25 BOOST_VERIFY( 1 );
26 BOOST_VERIFY( x == 1 );
27 BOOST_VERIFY( ++x );
28 BOOST_VERIFY( f(x) );
29 BOOST_VERIFY( &x );
30
31 BOOST_TEST( x == 3 );
32 }
33
34 #define BOOST_DISABLE_ASSERTS
35 #include <boost/assert.hpp>
36
37 void test_disabled()
38 {
39 int x = 1;
40
41 BOOST_VERIFY( 1 );
42 BOOST_VERIFY( x == 1 );
43 BOOST_VERIFY( ++x );
44 BOOST_VERIFY( f(x) );
45 BOOST_VERIFY( &x );
46
47 BOOST_TEST( x == 3 );
48
49 BOOST_VERIFY( 0 );
50 BOOST_VERIFY( !x );
51 BOOST_VERIFY( x == 0 );
52 BOOST_VERIFY( !++x );
53 BOOST_VERIFY( !f(x) );
54
55 BOOST_TEST( x == 5 );
56
57 void * p = 0;
58 BOOST_VERIFY( p );
59 }
60
61 #undef BOOST_DISABLE_ASSERTS
62
63 #define BOOST_ENABLE_ASSERT_HANDLER
64 #include <boost/assert.hpp>
65 #include <boost/config.hpp>
66 #include <cstdio>
67
68 int handler_invoked = 0;
69
70 void boost::assertion_failed(char const * expr, char const * function, char const * file, long line)
71 {
72 #if !defined(BOOST_NO_STDC_NAMESPACE)
73 using std::printf;
74 #endif
75
76 printf("Expression: %s\nFunction: %s\nFile: %s\nLine: %ld\n\n", expr, function, file, line);
77 ++handler_invoked;
78 }
79
80 struct X
81 {
82 static bool f()
83 {
84 BOOST_VERIFY( 0 );
85 return false;
86 }
87 };
88
89 void test_handler()
90 {
91 int x = 1;
92
93 BOOST_VERIFY( 1 );
94 BOOST_VERIFY( x == 1 );
95 BOOST_VERIFY( ++x );
96 BOOST_VERIFY( f(x) );
97 BOOST_VERIFY( &x );
98
99 BOOST_TEST( x == 3 );
100
101 BOOST_VERIFY( 0 );
102 BOOST_VERIFY( !x );
103 BOOST_VERIFY( x == 0 );
104 BOOST_VERIFY( !++x );
105 BOOST_VERIFY( !f(x) );
106
107 BOOST_TEST( x == 5 );
108
109 void * p = 0;
110 BOOST_VERIFY( p );
111
112 BOOST_VERIFY( X::f() );
113
114 BOOST_TEST( handler_invoked == 8 );
115 }
116
117 #undef BOOST_ENABLE_ASSERT_HANDLER
118
119 int main()
120 {
121 test_default();
122 test_disabled();
123 test_handler();
124
125 return boost::report_errors();
126 }