1 //
2 // atomic_count_test2.cpp
3 //
4 // Copyright 2009 Peter Dimov
5 //
6 // Distributed under the Boost Software License, Version 1.0.
7 // See accompanying file LICENSE_1_0.txt or copy at
8 // http://www.boost.org/LICENSE_1_0.txt
9 //
10 
11 #include <boost/detail/atomic_count.hpp>
12 #include <boost/detail/lightweight_test.hpp>
13 
main()14 int main()
15 {
16     boost::detail::atomic_count n( 4 );
17 
18     BOOST_TEST( n == 4 );
19 
20     BOOST_TEST( ++n == 5 );
21     BOOST_TEST( ++n == 6 );
22 
23     BOOST_TEST( n == 6 );
24 
25     BOOST_TEST( --n == 5 );
26     BOOST_TEST( --n == 4 );
27 
28     BOOST_TEST( n == 4 );
29 
30     boost::detail::atomic_count m( 0 );
31 
32     BOOST_TEST( m == 0 );
33 
34     BOOST_TEST( ++m == 1 );
35     BOOST_TEST( ++m == 2 );
36 
37     BOOST_TEST( m == 2 );
38 
39     BOOST_TEST( --m == 1 );
40     BOOST_TEST( --m == 0 );
41 
42     BOOST_TEST( m == 0 );
43 
44     BOOST_TEST( --m == -1 );
45     BOOST_TEST( --m == -2 );
46 
47     BOOST_TEST( m == -2 );
48 
49     BOOST_TEST( ++m == -1 );
50     BOOST_TEST( ++m == 0 );
51 
52     BOOST_TEST( m == 0 );
53 
54     return boost::report_errors();
55 }
56