21 #define BOOST_TEST_MODULE libjmmcg_tests
22 #include <boost/test/included/unit_test.hpp>
24 #include <boost/mpl/list.hpp>
26 #include "core/thread_api_traits.hpp"
28 using namespace libjmmcg;
31 typedef boost::mpl::list<
32 api_lock_traits<platform_api, sequential_mode>::atomic_counter_type<
long>,
33 api_lock_traits<platform_api, heavyweight_threading>::atomic_counter_type<
long>,
34 api_lock_traits<platform_api, heavyweight_threading>::atomic_counter_type<
double>
37 BOOST_AUTO_TEST_SUITE(atomic_counter_tests)
39 BOOST_AUTO_TEST_CASE_TEMPLATE(default_ctor, ctr_t, ctr_types)
42 BOOST_CHECK_EQUAL(a.get(), 0);
54 BOOST_AUTO_TEST_CASE_TEMPLATE(ctor, ctr_t, ctr_types)
57 BOOST_CHECK_EQUAL(a.get(), 1);
60 BOOST_AUTO_TEST_CASE_TEMPLATE(cctor, ctr_t, ctr_types)
64 BOOST_CHECK_EQUAL(a.get(), b.get());
73 BOOST_AUTO_TEST_CASE_TEMPLATE(assign, ctr_t, ctr_types)
77 BOOST_CHECK_EQUAL(a.get(), b.get());
81 BOOST_AUTO_TEST_CASE_TEMPLATE(increment, ctr_t, ctr_types)
85 BOOST_CHECK_EQUAL(a.get(), 2);
89 BOOST_AUTO_TEST_CASE_TEMPLATE(postincrement, ctr_t, ctr_types)
93 BOOST_CHECK_EQUAL(a.get(), 2);
94 BOOST_CHECK_EQUAL(b.get(), 1);
97 BOOST_AUTO_TEST_CASE_TEMPLATE(decrement, ctr_t, ctr_types)
101 BOOST_CHECK_EQUAL(a.get(), 0);
105 BOOST_AUTO_TEST_CASE_TEMPLATE(postdecrement, ctr_t, ctr_types)
109 BOOST_CHECK_EQUAL(a.get(), 0);
110 BOOST_CHECK_EQUAL(b.get(), 1);
113 BOOST_AUTO_TEST_CASE_TEMPLATE(add_one, ctr_t, ctr_types)
117 BOOST_CHECK_EQUAL(a.get(), 2);
120 BOOST_AUTO_TEST_CASE_TEMPLATE(subtract_one, ctr_t, ctr_types)
124 BOOST_CHECK_EQUAL(a.get(), 0);
127 BOOST_AUTO_TEST_CASE_TEMPLATE(apply_plus, ctr_t, ctr_types)
130 a.apply(1,
std::plus<
typename ctr_t::value_type>());
131 BOOST_CHECK_EQUAL(a.get(), 2);
134 BOOST_AUTO_TEST_CASE_TEMPLATE(apply_minus, ctr_t, ctr_types)
137 a.apply(1,
std::minus<
typename ctr_t::value_type>());
138 BOOST_CHECK_EQUAL(a.get(), 0);
141 BOOST_AUTO_TEST_CASE_TEMPLATE(apply_multiply, ctr_t, ctr_types)
144 a.apply(7,
std::multiplies<
typename ctr_t::value_type>());
145 BOOST_CHECK_EQUAL(a.get(), 42);
148 BOOST_AUTO_TEST_SUITE_END()