summaryrefslogtreecommitdiffstats
path: root/src/boost/libs/intrusive/test/treap_set_test.cpp
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-27 18:24:20 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-27 18:24:20 +0000
commit483eb2f56657e8e7f419ab1a4fab8dce9ade8609 (patch)
treee5d88d25d870d5dedacb6bbdbe2a966086a0a5cf /src/boost/libs/intrusive/test/treap_set_test.cpp
parentInitial commit. (diff)
downloadceph-upstream.tar.xz
ceph-upstream.zip
Adding upstream version 14.2.21.upstream/14.2.21upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/boost/libs/intrusive/test/treap_set_test.cpp')
-rw-r--r--src/boost/libs/intrusive/test/treap_set_test.cpp156
1 files changed, 156 insertions, 0 deletions
diff --git a/src/boost/libs/intrusive/test/treap_set_test.cpp b/src/boost/libs/intrusive/test/treap_set_test.cpp
new file mode 100644
index 00000000..f7987777
--- /dev/null
+++ b/src/boost/libs/intrusive/test/treap_set_test.cpp
@@ -0,0 +1,156 @@
+/////////////////////////////////////////////////////////////////////////////
+//
+// (C) Copyright Ion Gaztanaga 2007-2015
+//
+// Distributed under 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)
+//
+// See http://www.boost.org/libs/intrusive for documentation.
+//
+/////////////////////////////////////////////////////////////////////////////
+#include "itestvalue.hpp"
+#include "bptr_value.hpp"
+#include "smart_ptr.hpp"
+#include "bs_test_common.hpp"
+#include "generic_set_test.hpp"
+#include <boost/intrusive/treap_set.hpp>
+
+using namespace boost::intrusive;
+
+template < class ValueTraits, bool ConstantTimeSize, bool DefaultHolder, bool Map >
+struct rebinder
+{
+ typedef tree_rebinder_common<ValueTraits, DefaultHolder, Map> common_t;
+ typedef typename ValueContainer< typename ValueTraits::value_type >::type value_cont_type;
+
+ template < class Option1 =void
+ , class Option2 =void
+ >
+ struct container
+ {
+ typedef treap_set
+ < typename common_t::value_type
+ , value_traits<ValueTraits>
+ , constant_time_size<ConstantTimeSize>
+ , typename common_t::holder_opt
+ , typename common_t::key_of_value_opt
+ , typename common_t::prio_of_value_opt
+ , Option1
+ , Option2
+ > type;
+ BOOST_STATIC_ASSERT((key_type_tester<typename common_t::key_of_value_opt, type>::value));
+ };
+};
+
+enum HookType
+{
+ Base,
+ Member,
+ NonMember
+};
+
+template<class VoidPointer, bool ConstantTimeSize, bool DefaultHolder, bool Map, HookType Type>
+class test_main_template;
+
+template<class VoidPointer, bool ConstantTimeSize, bool DefaultHolder, bool Map>
+class test_main_template<VoidPointer, ConstantTimeSize, DefaultHolder, Map, Base>
+{
+ public:
+ static void execute()
+ {
+ typedef testvalue_traits< bs_hooks<VoidPointer> > testval_traits_t;
+ //base
+ typedef typename detail::if_c
+ < ConstantTimeSize
+ , typename testval_traits_t::base_value_traits
+ , typename testval_traits_t::auto_base_value_traits
+ >::type base_hook_t;
+ test::test_generic_set
+ < rebinder<base_hook_t, ConstantTimeSize, DefaultHolder, Map>
+ >::test_all();
+ }
+};
+
+template<class VoidPointer, bool ConstantTimeSize, bool DefaultHolder, bool Map>
+class test_main_template<VoidPointer, ConstantTimeSize, DefaultHolder, Map, Member>
+{
+ public:
+ static void execute()
+ {
+ typedef testvalue_traits< bs_hooks<VoidPointer> > testval_traits_t;
+ //member
+ typedef typename detail::if_c
+ < ConstantTimeSize
+ , typename testval_traits_t::member_value_traits
+ , typename testval_traits_t::auto_member_value_traits
+ >::type member_hook_t;
+ test::test_generic_set
+ < rebinder<member_hook_t, ConstantTimeSize, DefaultHolder, Map>
+ >::test_all();
+ }
+};
+
+template<class VoidPointer, bool ConstantTimeSize, bool DefaultHolder, bool Map>
+class test_main_template<VoidPointer, ConstantTimeSize, DefaultHolder, Map, NonMember>
+{
+ public:
+ static void execute()
+ {
+ typedef testvalue_traits< bs_hooks<VoidPointer> > testval_traits_t;
+ //nonmember
+ test::test_generic_set
+ < rebinder<typename testval_traits_t::nonhook_value_traits, ConstantTimeSize, DefaultHolder, Map>
+ >::test_all();
+ }
+};
+
+template < bool ConstantTimeSize, bool Map >
+struct test_main_template_bptr
+{
+ static void execute()
+ {
+ typedef BPtr_Value_Traits< Tree_BPtr_Node_Traits > value_traits;
+ typedef bounded_allocator< BPtr_Value > allocator_type;
+
+ bounded_allocator_scope<allocator_type> bounded_scope; (void)bounded_scope;
+ test::test_generic_set
+ < rebinder< value_traits, ConstantTimeSize, true, Map>
+ >::test_all();
+ }
+};
+
+int main()
+{
+ //Combinations: VoidPointer x ConstantTimeSize x DefaultHolder x Map
+ //Minimize them selecting different combinations for raw and smart pointers
+ //Start with ('false', 'false', 'false') in sets and 'false', 'false', 'true' in multisets
+
+ //void pointer
+ test_main_template<void*, false, false, false, Base>::execute();
+ //test_main_template<void*, false, false, true>::execute();
+ test_main_template<void*, false, true, false, Member>::execute();
+ //test_main_template<void*, false, true, true>::execute();
+ test_main_template<void*, true, false, false, Base>::execute();
+ //test_main_template<void*, true, false, true>::execute();
+ test_main_template<void*, true, true, false, Member>::execute();
+ test_main_template<void*, true, true, true, NonMember>::execute();
+
+ //smart_ptr
+ //test_main_template<smart_ptr<void>, false, false, false>::execute();
+ test_main_template<smart_ptr<void>, false, false, true, Base>::execute();
+ //test_main_template<smart_ptr<void>, false, true, false>::execute();
+ test_main_template<smart_ptr<void>, false, true, true, Member>::execute();
+ //test_main_template<smart_ptr<void>, true, false, false>::execute();
+ test_main_template<smart_ptr<void>, true, false, true, NonMember>::execute();
+ //test_main_template<smart_ptr<void>, true, true, false>::execute();
+ //test_main_template<smart_ptr<void>, true, true, true>::execute();
+
+ //bounded_ptr (bool ConstantTimeSize, bool Map)
+ test_main_template_bptr< false, false >::execute();
+ //test_main_template_bptr< false, true >::execute();
+ //test_main_template_bptr< true, false >::execute();
+ test_main_template_bptr< true, true >::execute();
+
+ return boost::report_errors();
+}