21 #define BOOST_TEST_MODULE libjmmcg_tests
22 #include <boost/test/included/unit_test.hpp>
24 #include <boost/mpl/list.hpp>
26 #include "core/cache.hpp"
28 using namespace libjmmcg;
30 struct my_factory
final :
public cache::factory_base<
int,
int> {
36 typedef boost::mpl::list<
37 cache::ro<my_factory>,
38 cache::ro<my_factory, cache::lru<my_factory::value_type>, cache::threading<my_factory::key_type, cache::lru<my_factory::value_type> >::multi<ppd::platform_api, ppd::sequential_mode>, cache::basic_statistics>,
39 cache::ro<my_factory, cache::lru<my_factory::value_type>, cache::threading<my_factory::key_type, cache::lru<my_factory::value_type> >::multi<ppd::platform_api, ppd::heavyweight_threading>, cache::basic_statistics>
42 BOOST_AUTO_TEST_SUITE(cache_tests)
44 BOOST_AUTO_TEST_CASE_TEMPLATE(ctor, T, test_types) {
47 cache_t cache(2,4,2,my_factory());
48 BOOST_CHECK_EQUAL(cache.empty(),
true);
49 BOOST_CHECK_EQUAL(cache.size(), 0U);
52 BOOST_AUTO_TEST_CASE_TEMPLATE(clear_empty, T, test_types) {
55 cache_t cache(2,4,2,my_factory());
57 BOOST_CHECK_EQUAL(cache.empty(),
true);
58 BOOST_CHECK_EQUAL(cache.size(), 0U);
61 BOOST_AUTO_TEST_CASE_TEMPLATE(flush_empty, T, test_types) {
64 cache_t cache(2,4,2,my_factory());
66 BOOST_CHECK_EQUAL(cache.empty(),
true);
67 BOOST_CHECK_EQUAL(cache.size(), 0U);
70 BOOST_AUTO_TEST_CASE_TEMPLATE(create_one_item, T, test_types) {
73 cache_t cache(2,4,2,my_factory());
74 BOOST_CHECK_EQUAL(cache[1].value(), 4);
75 BOOST_CHECK_EQUAL(cache.empty(),
false);
76 BOOST_CHECK_EQUAL(cache.size(), 1U);
79 BOOST_AUTO_TEST_CASE_TEMPLATE(create_two_items, T, test_types) {
82 cache_t cache(2,4,2,my_factory());
83 BOOST_CHECK_EQUAL(cache[1].value(), 4);
84 BOOST_CHECK_EQUAL(cache[2].value(), 8);
85 BOOST_CHECK_EQUAL(cache.empty(),
false);
86 BOOST_CHECK_EQUAL(cache.size(), 2U);
89 BOOST_AUTO_TEST_CASE_TEMPLATE(flush_small, T, test_types) {
92 cache_t cache(2,4,2,my_factory());
97 BOOST_CHECK_EQUAL(cache.empty(),
false);
98 BOOST_CHECK_EQUAL(cache.size(), 3U);
101 BOOST_AUTO_TEST_CASE_TEMPLATE(flush_full, T, test_types) {
104 cache_t cache(2,4,2,my_factory());
111 BOOST_CHECK_EQUAL(cache.empty(),
false);
112 BOOST_CHECK_EQUAL(cache.size(), 2U);
115 BOOST_AUTO_TEST_CASE_TEMPLATE(clear_small, T, test_types) {
118 cache_t cache(2,4,2,my_factory());
122 BOOST_CHECK_EQUAL(cache.empty(),
true);
123 BOOST_CHECK_EQUAL(cache.size(), 0U);
126 BOOST_AUTO_TEST_SUITE_END()