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()14int 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