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_safe_adaptors.hpp"
27 #include "core/rw_locking.hpp"
29 using namespace libjmmcg;
32 template<
typename Mdl,
template<
class,
class>
class Colln>
41 template<
typename Mdl,
template<
class,
class>
class Colln>
51 template<
typename Mdl,
template<
class,
class>
class Colln>
60 template<
typename Mdl,
template<
class,
class>
class Colln>
74 BOOST_AUTO_TEST_SUITE(thread_safe_colln)
76 BOOST_AUTO_TEST_SUITE(list_tests)
78 BOOST_AUTO_TEST_CASE_TEMPLATE(default_ctor, Mdl, test_types) {
79 typedef typename erew_colln_t<Mdl, std::list>::result colln_t;
82 BOOST_CHECK(s1.empty());
83 BOOST_CHECK_EQUAL(s1.size(), 0U);
84 BOOST_CHECK_EQUAL(s1.size(), s1.colln().size());
87 BOOST_AUTO_TEST_CASE_TEMPLATE(cctor, Mdl, test_types) {
88 typedef typename erew_colln_t<Mdl, std::list>::result colln_t;
90 typename colln_t::container_type src;
92 BOOST_CHECK(s1.empty());
93 BOOST_CHECK_EQUAL(s1.size(), src.size());
94 BOOST_CHECK_EQUAL(s1.size(), s1.colln().size());
97 BOOST_AUTO_TEST_CASE_TEMPLATE(cctor_1, Mdl, test_types) {
98 typedef typename erew_colln_t<Mdl, std::list>::result colln_t;
100 typename colln_t::container_type src;
103 BOOST_CHECK(!s1.empty());
104 BOOST_CHECK_EQUAL(s1.size(), src.size());
105 BOOST_CHECK_EQUAL(s1.size(), s1.colln().size());
108 BOOST_AUTO_TEST_CASE_TEMPLATE(cctor_2, Mdl, test_types) {
109 typedef typename erew_colln_t<Mdl, std::list>::result colln_t;
111 typename colln_t::container_type src;
115 BOOST_CHECK(!s1.empty());
116 BOOST_CHECK_EQUAL(s1.size(), src.size());
117 BOOST_CHECK_EQUAL(s1.size(), s1.colln().size());
120 BOOST_AUTO_TEST_CASE_TEMPLATE(assignment, Mdl, test_types) {
121 typedef typename erew_colln_t<Mdl, std::list>::result colln_t;
125 BOOST_CHECK_EQUAL(s1.empty(), s2.empty());
126 BOOST_CHECK_EQUAL(s1.size(), s2.size());
127 BOOST_CHECK_EQUAL(s1.size(), s1.colln().size());
130 BOOST_AUTO_TEST_CASE_TEMPLATE(add_item, Mdl, test_types) {
131 typedef typename erew_colln_t<Mdl, std::list>::result colln_t;
135 BOOST_CHECK(!s1.empty());
136 BOOST_CHECK_EQUAL(s1.size(), 1U);
137 BOOST_CHECK_EQUAL(s1.size(), s1.colln().size());
138 BOOST_CHECK_EQUAL(s1.colln().front(), 1);
141 BOOST_AUTO_TEST_CASE_TEMPLATE(add_item_copy, Mdl, test_types) {
142 typedef typename erew_colln_t<Mdl, std::list>::result colln_t;
147 BOOST_CHECK_EQUAL(s1.empty(), s2.empty());
148 BOOST_CHECK_EQUAL(s1.size(), s2.size());
149 BOOST_CHECK_EQUAL(s1.size(), s1.colln().size());
150 BOOST_CHECK_EQUAL(s2.colln().front(), 1);
153 BOOST_AUTO_TEST_CASE_TEMPLATE(clear, Mdl, test_types) {
154 typedef typename erew_colln_t<Mdl, std::list>::result colln_t;
159 BOOST_CHECK(s1.empty());
160 BOOST_CHECK_EQUAL(s1.size(), 0U);
161 BOOST_CHECK_EQUAL(s1.size(), s1.colln().size());
164 BOOST_AUTO_TEST_SUITE_END()
166 BOOST_AUTO_TEST_SUITE(queue_tests)
168 BOOST_AUTO_TEST_CASE_TEMPLATE(default_ctor, Mdl, test_types) {
169 typedef typename erew_queue_t<Mdl, std::list>::result colln_t;
172 BOOST_CHECK(s1.empty());
173 BOOST_CHECK_EQUAL(s1.size(), 0U);
174 BOOST_CHECK_EQUAL(s1.size(), s1.colln().size());
177 BOOST_AUTO_TEST_CASE_TEMPLATE(assignment, Mdl, test_types) {
178 typedef typename erew_queue_t<Mdl, std::list>::result colln_t;
182 BOOST_CHECK_EQUAL(s1.empty(), s2.empty());
183 BOOST_CHECK_EQUAL(s1.size(), s2.size());
184 BOOST_CHECK_EQUAL(s1.size(), s1.colln().size());
187 BOOST_AUTO_TEST_CASE_TEMPLATE(add_item, Mdl, test_types) {
188 typedef typename erew_queue_t<Mdl, std::list>::result colln_t;
192 BOOST_CHECK(!s1.empty());
193 BOOST_CHECK_EQUAL(s1.size(), 1U);
194 BOOST_CHECK_EQUAL(s1.size(), s1.colln().size());
195 BOOST_CHECK_EQUAL(s1.front(), 1);
198 BOOST_AUTO_TEST_CASE_TEMPLATE(add_item_copy, Mdl, test_types) {
199 typedef typename erew_queue_t<Mdl, std::list>::result colln_t;
204 BOOST_CHECK_EQUAL(s1.empty(), s2.empty());
205 BOOST_CHECK_EQUAL(s1.size(), s2.size());
206 BOOST_CHECK_EQUAL(s1.size(), s1.colln().size());
207 BOOST_CHECK_EQUAL(s2.front(), 1);
210 BOOST_AUTO_TEST_CASE_TEMPLATE(clear, Mdl, test_types) {
211 typedef typename erew_queue_t<Mdl, std::list>::result colln_t;
216 BOOST_CHECK(s1.empty());
217 BOOST_CHECK_EQUAL(s1.size(), 0U);
218 BOOST_CHECK_EQUAL(s1.size(), s1.colln().size());
221 BOOST_AUTO_TEST_SUITE_END()
223 BOOST_AUTO_TEST_SUITE(funky_queue_tests)
225 BOOST_AUTO_TEST_CASE_TEMPLATE(default_ctor, Mdl, test_types) {
226 typedef typename erew_funky_queue_t<Mdl, std::list>::result colln_t;
229 BOOST_CHECK(s1.empty());
230 BOOST_CHECK_EQUAL(s1.size(), 0U);
233 BOOST_AUTO_TEST_CASE_TEMPLATE(assignment, Mdl, test_types) {
234 typedef typename erew_funky_queue_t<Mdl, std::list>::result colln_t;
238 BOOST_CHECK_EQUAL(s1.empty(), s2.empty());
239 BOOST_CHECK_EQUAL(s1.size(), s2.size());
240 BOOST_CHECK_EQUAL(s1.size(), s1.colln().size());
243 BOOST_AUTO_TEST_CASE_TEMPLATE(add_item, Mdl, test_types) {
244 typedef typename erew_funky_queue_t<Mdl, std::list>::result colln_t;
248 BOOST_CHECK(!s1.empty());
249 BOOST_CHECK_EQUAL(s1.size(), 1U);
250 BOOST_CHECK_EQUAL(s1.size(), s1.colln().size());
251 BOOST_CHECK_EQUAL(s1.front(), 1);
254 BOOST_AUTO_TEST_CASE_TEMPLATE(add_item_copy, Mdl, test_types) {
255 typedef typename erew_funky_queue_t<Mdl, std::list>::result colln_t;
260 BOOST_CHECK_EQUAL(s1.empty(), s2.empty());
261 BOOST_CHECK_EQUAL(s1.size(), s2.size());
262 BOOST_CHECK_EQUAL(s1.size(), s1.colln().size());
263 BOOST_CHECK_EQUAL(s2.front(), 1);
266 BOOST_AUTO_TEST_CASE_TEMPLATE(clear, Mdl, test_types) {
267 typedef typename erew_funky_queue_t<Mdl, std::list>::result colln_t;
272 BOOST_CHECK(s1.empty());
273 BOOST_CHECK_EQUAL(s1.size(), 0U);
274 BOOST_CHECK_EQUAL(s1.size(), s1.colln().size());
277 BOOST_AUTO_TEST_SUITE_END()
279 BOOST_AUTO_TEST_SUITE(vector_tests)
281 BOOST_AUTO_TEST_CASE_TEMPLATE(default_ctor, Mdl, test_types) {
282 typedef typename erew_colln_t<Mdl, std::vector>::result colln_t;
285 BOOST_CHECK(s1.empty());
286 BOOST_CHECK_EQUAL(s1.size(), 0U);
287 BOOST_CHECK_EQUAL(s1.size(), s1.colln().size());
290 BOOST_AUTO_TEST_CASE_TEMPLATE(cctor, Mdl, test_types) {
291 typedef typename erew_colln_t<Mdl, std::vector>::result colln_t;
293 typename colln_t::container_type src;
295 BOOST_CHECK(s1.empty());
296 BOOST_CHECK_EQUAL(s1.size(), src.size());
297 BOOST_CHECK_EQUAL(s1.size(), s1.colln().size());
300 BOOST_AUTO_TEST_CASE_TEMPLATE(cctor_1, Mdl, test_types) {
301 typedef typename erew_colln_t<Mdl, std::vector>::result colln_t;
303 typename colln_t::container_type src;
306 BOOST_CHECK(!s1.empty());
307 BOOST_CHECK_EQUAL(s1.size(), src.size());
308 BOOST_CHECK_EQUAL(s1.size(), s1.colln().size());
311 BOOST_AUTO_TEST_CASE_TEMPLATE(cctor_2, Mdl, test_types) {
312 typedef typename erew_colln_t<Mdl, std::vector>::result colln_t;
314 typename colln_t::container_type src;
318 BOOST_CHECK(!s1.empty());
319 BOOST_CHECK_EQUAL(s1.size(), src.size());
320 BOOST_CHECK_EQUAL(s1.size(), s1.colln().size());
323 BOOST_AUTO_TEST_CASE_TEMPLATE(assignment, Mdl, test_types) {
324 typedef typename erew_colln_t<Mdl, std::vector>::result colln_t;
328 BOOST_CHECK_EQUAL(s1.empty(), s2.empty());
329 BOOST_CHECK_EQUAL(s1.size(), s2.size());
330 BOOST_CHECK_EQUAL(s1.size(), s1.colln().size());
333 BOOST_AUTO_TEST_CASE_TEMPLATE(add_item, Mdl, test_types) {
334 typedef typename erew_colln_t<Mdl, std::vector>::result colln_t;
338 BOOST_CHECK(!s1.empty());
339 BOOST_CHECK_EQUAL(s1.size(), 1U);
340 BOOST_CHECK_EQUAL(s1.size(), s1.colln().size());
341 BOOST_CHECK_EQUAL(s1[0], 1);
344 BOOST_AUTO_TEST_CASE_TEMPLATE(add_item_copy, Mdl, test_types) {
345 typedef typename erew_colln_t<Mdl, std::vector>::result colln_t;
350 BOOST_CHECK_EQUAL(s1.empty(), s2.empty());
351 BOOST_CHECK_EQUAL(s1.size(), s2.size());
352 BOOST_CHECK_EQUAL(s1.size(), s1.colln().size());
353 BOOST_CHECK_EQUAL(s2[0], 1);
356 BOOST_AUTO_TEST_CASE_TEMPLATE(clear, Mdl, test_types) {
357 typedef typename erew_colln_t<Mdl, std::vector>::result colln_t;
362 BOOST_CHECK(s1.empty());
363 BOOST_CHECK_EQUAL(s1.size(), 0U);
364 BOOST_CHECK_EQUAL(s1.size(), s1.colln().size());
367 BOOST_AUTO_TEST_SUITE_END()
369 BOOST_AUTO_TEST_SUITE(vector_rw_lk_tests)
371 BOOST_AUTO_TEST_CASE_TEMPLATE(default_ctor, Mdl, test_types) {
372 typedef typename crew_colln_t<Mdl, std::vector>::result colln_t;
375 BOOST_CHECK(s1.empty());
376 BOOST_CHECK_EQUAL(s1.size(), 0U);
377 BOOST_CHECK_EQUAL(s1.size(), s1.colln().size());
380 BOOST_AUTO_TEST_CASE_TEMPLATE(cctor, Mdl, test_types) {
381 typedef typename crew_colln_t<Mdl, std::vector>::result colln_t;
383 typename colln_t::container_type src;
385 BOOST_CHECK(s1.empty());
386 BOOST_CHECK_EQUAL(s1.size(), src.size());
387 BOOST_CHECK_EQUAL(s1.size(), s1.colln().size());
390 BOOST_AUTO_TEST_CASE_TEMPLATE(cctor_1, Mdl, test_types) {
391 typedef typename crew_colln_t<Mdl, std::vector>::result colln_t;
393 typename colln_t::container_type src;
396 BOOST_CHECK(!s1.empty());
397 BOOST_CHECK_EQUAL(s1.size(), src.size());
398 BOOST_CHECK_EQUAL(s1.size(), s1.colln().size());
401 BOOST_AUTO_TEST_CASE_TEMPLATE(cctor_2, Mdl, test_types) {
402 typedef typename crew_colln_t<Mdl, std::vector>::result colln_t;
404 typename colln_t::container_type src;
408 BOOST_CHECK(!s1.empty());
409 BOOST_CHECK_EQUAL(s1.size(), src.size());
410 BOOST_CHECK_EQUAL(s1.size(), s1.colln().size());
413 BOOST_AUTO_TEST_CASE_TEMPLATE(assignment, Mdl, test_types) {
414 typedef typename crew_colln_t<Mdl, std::vector>::result colln_t;
418 BOOST_CHECK_EQUAL(s1.empty(), s2.empty());
419 BOOST_CHECK_EQUAL(s1.size(), s2.size());
420 BOOST_CHECK_EQUAL(s1.size(), s1.colln().size());
423 BOOST_AUTO_TEST_CASE_TEMPLATE(add_item, Mdl, test_types) {
424 typedef typename crew_colln_t<Mdl, std::vector>::result colln_t;
428 BOOST_CHECK(!s1.empty());
429 BOOST_CHECK_EQUAL(s1.size(), 1U);
430 BOOST_CHECK_EQUAL(s1.size(), s1.colln().size());
431 BOOST_CHECK_EQUAL(s1[0], 1);
434 BOOST_AUTO_TEST_CASE_TEMPLATE(add_item_copy, Mdl, test_types) {
435 typedef typename crew_colln_t<Mdl, std::vector>::result colln_t;
440 BOOST_CHECK_EQUAL(s1.empty(), s2.empty());
441 BOOST_CHECK_EQUAL(s1.size(), s2.size());
442 BOOST_CHECK_EQUAL(s1.size(), s1.colln().size());
443 BOOST_CHECK_EQUAL(s2[0], 1);
446 BOOST_AUTO_TEST_CASE_TEMPLATE(clear, Mdl, test_types) {
447 typedef typename crew_colln_t<Mdl, std::vector>::result colln_t;
452 BOOST_CHECK(s1.empty());
453 BOOST_CHECK_EQUAL(s1.size(), 0U);
454 BOOST_CHECK_EQUAL(s1.size(), s1.colln().size());
457 BOOST_AUTO_TEST_SUITE_END()
459 BOOST_AUTO_TEST_SUITE_END()