50c0e17009821a4c5d10627b1006ce36352250a2
[platform/upstream/boost.git] / libs / heap / test / binomial_heap_test.cpp
1 #define BOOST_TEST_MAIN
2 #include <boost/test/unit_test.hpp>
3
4 #include <algorithm>
5
6 #include <boost/heap/binomial_heap.hpp>
7
8 #include "common_heap_tests.hpp"
9 #include "stable_heap_tests.hpp"
10 #include "mutable_heap_tests.hpp"
11 #include "merge_heap_tests.hpp"
12
13 template <bool stable, bool constant_time_size>
14 void run_binomial_heap_test(void)
15 {
16     typedef boost::heap::binomial_heap<int, boost::heap::stable<stable>,
17                                             boost::heap::compare<std::less<int> >,
18                                             boost::heap::allocator<std::allocator<int> >,
19                                             boost::heap::constant_time_size<constant_time_size> > pri_queue;
20
21     BOOST_CONCEPT_ASSERT((boost::heap::MutablePriorityQueue<pri_queue>));
22     BOOST_CONCEPT_ASSERT((boost::heap::MergablePriorityQueue<pri_queue>));
23
24     run_common_heap_tests<pri_queue>();
25     run_iterator_heap_tests<pri_queue>();
26     run_copyable_heap_tests<pri_queue>();
27     run_moveable_heap_tests<pri_queue>();
28
29     run_merge_tests<pri_queue>();
30
31     run_mutable_heap_tests<pri_queue >();
32     run_ordered_iterator_tests<pri_queue>();
33
34     if (stable) {
35         typedef boost::heap::binomial_heap<q_tester, boost::heap::stable<stable>,
36                                                      boost::heap::constant_time_size<constant_time_size> > stable_pri_queue;
37
38         run_stable_heap_tests<stable_pri_queue>();
39     }
40 }
41
42 BOOST_AUTO_TEST_CASE( binomial_heap_test )
43 {
44     run_binomial_heap_test<false, false>();
45     run_binomial_heap_test<false, true>();
46     run_binomial_heap_test<true, false>();
47     run_binomial_heap_test<true, true>();
48 }