Initialize boost git in 2.0_beta.
[external/boost.git] / libs / smart_ptr / test / atomic_count_test2.cpp
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
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 }