/*============================================================================= Copyright (c) 2010 Tim Blechmann Use, modification and distribution is subject to the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) =============================================================================*/ #define BOOST_TEST_MAIN #include #include #include #include #include #include using namespace boost::heap; typedef fibonacci_heap::handle_type handle_type_1; typedef d_ary_heap, mutable_ >::handle_type handle_type_2; typedef pairing_heap::handle_type handle_type_3; typedef binomial_heap::handle_type handle_type_4; typedef skew_heap >::handle_type handle_type_5; template void run_handle_as_member_test(void) { typedef typename HeapType::value_type value_type; HeapType heap; value_type f(2); typename value_type::handle_type handle = heap.push(f); value_type & fInHeap = *handle; fInHeap.handle = handle; } struct fibonacci_heap_data { typedef fibonacci_heap::handle_type handle_type; handle_type handle; int i; fibonacci_heap_data(int i):i(i) {} bool operator<(fibonacci_heap_data const & rhs) const { return i < rhs.i; } }; BOOST_AUTO_TEST_CASE( fibonacci_heap_handle_as_member ) { run_handle_as_member_test >(); } struct d_heap_data { typedef d_ary_heap, mutable_ >::handle_type handle_type; handle_type handle; int i; d_heap_data(int i):i(i) {} bool operator<(d_heap_data const & rhs) const { return i < rhs.i; } }; BOOST_AUTO_TEST_CASE( d_heap_handle_as_member ) { run_handle_as_member_test, mutable_ > >(); } struct pairing_heap_data { typedef pairing_heap::handle_type handle_type; handle_type handle; int i; pairing_heap_data(int i):i(i) {} bool operator<(pairing_heap_data const & rhs) const { return i < rhs.i; } }; BOOST_AUTO_TEST_CASE( pairing_heap_handle_as_member ) { run_handle_as_member_test >(); } struct binomial_heap_data { typedef binomial_heap::handle_type handle_type; handle_type handle; int i; binomial_heap_data(int i):i(i) {} bool operator<(binomial_heap_data const & rhs) const { return i < rhs.i; } }; BOOST_AUTO_TEST_CASE( binomial_heap_handle_as_member ) { run_handle_as_member_test >(); } struct skew_heap_data { typedef skew_heap >::handle_type handle_type; handle_type handle; int i; skew_heap_data(int i):i(i) {} bool operator<(skew_heap_data const & rhs) const { return i < rhs.i; } }; BOOST_AUTO_TEST_CASE( skew_heap_handle_as_member ) { run_handle_as_member_test > >(); }