3 #include "set/hdr_intrusive_striped_set.h"
4 #include <cds/intrusive/striped_set/boost_list.h>
5 #include <cds/intrusive/striped_set.h>
7 #include <type_traits> // std::is_same
10 namespace bi = boost::intrusive;
13 typedef IntrusiveStripedSetHdrTest::base_item< bi::list_base_hook<> > base_item_type;
14 typedef IntrusiveStripedSetHdrTest::member_item< bi::list_member_hook<> > member_item_type;
17 void IntrusiveStripedSetHdrTest::Striped_list_basehook_cmp()
19 typedef ci::StripedSet<
20 bi::list<base_item_type>
21 ,co::mutex_policy< ci::striped_set::striping<> >
22 ,co::hash< IntrusiveStripedSetHdrTest::hash_int >
23 ,co::compare< IntrusiveStripedSetHdrTest::cmp<base_item_type> >
26 static_assert( (std::is_same<
27 IntrusiveStripedSetHdrTest::cmp<base_item_type>
28 ,set_type::bucket_type::key_comparator
29 >::value), "Key compare function selection error" );
34 void IntrusiveStripedSetHdrTest::Striped_list_basehook_less()
36 typedef ci::StripedSet<
37 bi::list<base_item_type>
38 ,co::hash< IntrusiveStripedSetHdrTest::hash_int >
39 ,co::less< IntrusiveStripedSetHdrTest::less<base_item_type> >
45 void IntrusiveStripedSetHdrTest::Striped_list_basehook_cmpmix()
47 typedef ci::StripedSet<
48 bi::list<base_item_type>
49 ,co::hash< IntrusiveStripedSetHdrTest::hash_int >
50 ,co::less< IntrusiveStripedSetHdrTest::less<base_item_type> >
51 ,co::compare< IntrusiveStripedSetHdrTest::cmp<base_item_type> >
54 static_assert( (std::is_same<
55 IntrusiveStripedSetHdrTest::cmp<base_item_type>
56 ,set_type::bucket_type::key_comparator
57 >::value), "Key compare function selection error" );
62 void IntrusiveStripedSetHdrTest::Striped_list_basehook_bucket_threshold()
64 typedef ci::StripedSet<
65 bi::list<base_item_type>
66 ,co::hash< IntrusiveStripedSetHdrTest::hash_int >
67 ,co::less< IntrusiveStripedSetHdrTest::less<base_item_type> >
68 ,co::compare< IntrusiveStripedSetHdrTest::cmp<base_item_type> >
69 ,co::resizing_policy< ci::striped_set::single_bucket_size_threshold<8> >
72 static_assert( (std::is_same<
73 IntrusiveStripedSetHdrTest::cmp<base_item_type>
74 ,set_type::bucket_type::key_comparator
75 >::value), "Key compare function selection error" );
80 void IntrusiveStripedSetHdrTest::Striped_list_basehook_bucket_threshold_rt()
82 typedef ci::StripedSet<
83 bi::list<base_item_type>
84 ,co::hash< IntrusiveStripedSetHdrTest::hash_int >
85 ,co::less< IntrusiveStripedSetHdrTest::less<base_item_type> >
86 ,co::compare< IntrusiveStripedSetHdrTest::cmp<base_item_type> >
87 ,co::resizing_policy< ci::striped_set::single_bucket_size_threshold<0> >
90 static_assert( (std::is_same<
91 IntrusiveStripedSetHdrTest::cmp<base_item_type>
92 ,set_type::bucket_type::key_comparator
93 >::value), "Key compare function selection error" );
95 set_type s( 128, ci::striped_set::single_bucket_size_threshold<0>(4) );
99 void IntrusiveStripedSetHdrTest::Striped_list_memberhook_cmp()
101 typedef ci::StripedSet<
104 , bi::member_hook< member_item_type, bi::list_member_hook<>, &member_item_type::hMember>
106 ,co::hash< IntrusiveStripedSetHdrTest::hash_int >
107 ,co::compare< IntrusiveStripedSetHdrTest::cmp<member_item_type> >
113 void IntrusiveStripedSetHdrTest::Striped_list_memberhook_less()
115 typedef ci::StripedSet<
118 , bi::member_hook< member_item_type, bi::list_member_hook<>, &member_item_type::hMember>
120 ,co::hash< IntrusiveStripedSetHdrTest::hash_int >
121 ,co::less< IntrusiveStripedSetHdrTest::less<member_item_type> >
127 void IntrusiveStripedSetHdrTest::Striped_list_memberhook_cmpmix()
129 typedef ci::StripedSet<
132 , bi::member_hook< member_item_type, bi::list_member_hook<>, &member_item_type::hMember>
134 ,co::hash< IntrusiveStripedSetHdrTest::hash_int >
135 ,co::less< IntrusiveStripedSetHdrTest::less<member_item_type> >
136 ,co::compare< IntrusiveStripedSetHdrTest::cmp<member_item_type> >
142 void IntrusiveStripedSetHdrTest::Striped_list_memberhook_bucket_threshold()
144 typedef ci::StripedSet<
147 , bi::member_hook< member_item_type, bi::list_member_hook<>, &member_item_type::hMember>
149 ,co::hash< IntrusiveStripedSetHdrTest::hash_int >
150 ,co::less< IntrusiveStripedSetHdrTest::less<member_item_type> >
151 ,co::compare< IntrusiveStripedSetHdrTest::cmp<member_item_type> >
152 ,co::resizing_policy< ci::striped_set::single_bucket_size_threshold<8> >
155 static_assert( (std::is_same<
156 IntrusiveStripedSetHdrTest::cmp<member_item_type>
157 ,set_type::bucket_type::key_comparator
158 >::value), "Key compare function selection error" );
163 void IntrusiveStripedSetHdrTest::Striped_list_memberhook_bucket_threshold_rt()
165 typedef ci::StripedSet<
168 , bi::member_hook< member_item_type, bi::list_member_hook<>, &member_item_type::hMember>
170 ,co::hash< IntrusiveStripedSetHdrTest::hash_int >
171 ,co::less< IntrusiveStripedSetHdrTest::less<member_item_type> >
172 ,co::compare< IntrusiveStripedSetHdrTest::cmp<member_item_type> >
173 ,co::resizing_policy< ci::striped_set::single_bucket_size_threshold<0> >
176 static_assert( (std::is_same<
177 IntrusiveStripedSetHdrTest::cmp<member_item_type>
178 ,set_type::bucket_type::key_comparator
179 >::value), "Key compare function selection error" );
181 set_type s( 128, ci::striped_set::single_bucket_size_threshold<0>(4) );