Move libcds 1.6.0 from SVN
[libcds.git] / tests / test-hdr / set / hdr_intrusive_refinable_hashset_avlset.cpp
1 //$$CDS-header$$
2
3 #include "set/hdr_intrusive_striped_set.h"
4 #include <cds/intrusive/striped_set/boost_avl_set.h>
5 #include <cds/intrusive/striped_set.h>
6
7 namespace set {
8     namespace bi = boost::intrusive;
9
10     namespace {
11         typedef IntrusiveStripedSetHdrTest::base_item< bi::avl_set_base_hook<> > base_item_type;
12         typedef IntrusiveStripedSetHdrTest::member_item< bi::avl_set_member_hook<> > member_item_type;
13     }
14
15     void IntrusiveStripedSetHdrTest::Refinable_avl_set_basehook()
16     {
17         typedef ci::StripedSet<
18             bi::avl_set<base_item_type, bi::compare<IntrusiveStripedSetHdrTest::less<base_item_type> > >
19             ,co::mutex_policy< ci::striped_set::refinable<> >
20             ,co::hash< IntrusiveStripedSetHdrTest::hash_int >
21             ,co::back_off< cds::backoff::empty >
22         > set_type;
23
24         test<set_type>();
25     }
26
27     void IntrusiveStripedSetHdrTest::Refinable_avl_set_basehook_bucket_threshold()
28     {
29         typedef ci::StripedSet<
30             bi::avl_set<base_item_type, bi::compare<IntrusiveStripedSetHdrTest::less<base_item_type> > >
31             ,co::hash< IntrusiveStripedSetHdrTest::hash_int >
32             ,co::resizing_policy< ci::striped_set::single_bucket_size_threshold<64> >
33             ,co::mutex_policy< ci::striped_set::refinable<> >
34         > set_type;
35
36         test<set_type>();
37     }
38
39     void IntrusiveStripedSetHdrTest::Refinable_avl_set_basehook_bucket_threshold_rt()
40     {
41         typedef ci::StripedSet<
42             bi::avl_set<base_item_type, bi::compare<IntrusiveStripedSetHdrTest::less<base_item_type> > >
43             ,co::hash< IntrusiveStripedSetHdrTest::hash_int >
44             ,co::resizing_policy< ci::striped_set::single_bucket_size_threshold<0> >
45             ,co::mutex_policy< ci::striped_set::refinable<> >
46         > set_type;
47
48         set_type s( 64, ci::striped_set::single_bucket_size_threshold<0>(256) );
49         test_with( s );
50     }
51
52     void IntrusiveStripedSetHdrTest::Refinable_avl_set_memberhook()
53     {
54         typedef ci::StripedSet<
55             bi::avl_set<
56                 member_item_type
57                 , bi::member_hook< member_item_type, bi::avl_set_member_hook<>, &member_item_type::hMember>
58                 , bi::compare<IntrusiveStripedSetHdrTest::less<member_item_type> >
59             >
60             ,co::mutex_policy< ci::striped_set::refinable<> >
61             ,co::hash< IntrusiveStripedSetHdrTest::hash_int >
62         > set_type;
63
64         test<set_type>();
65     }
66
67     void IntrusiveStripedSetHdrTest::Refinable_avl_set_memberhook_bucket_threshold()
68     {
69         typedef ci::StripedSet<
70             bi::avl_set<
71                 member_item_type
72                 , bi::member_hook< member_item_type, bi::avl_set_member_hook<>, &member_item_type::hMember>
73                 , bi::compare<IntrusiveStripedSetHdrTest::less<member_item_type> >
74             >
75             ,co::mutex_policy< ci::striped_set::refinable<> >
76             ,co::hash< IntrusiveStripedSetHdrTest::hash_int >
77             ,co::resizing_policy< ci::striped_set::single_bucket_size_threshold<256> >
78         > set_type;
79
80         test<set_type>();
81     }
82
83     void IntrusiveStripedSetHdrTest::Refinable_avl_set_memberhook_bucket_threshold_rt()
84     {
85         typedef ci::StripedSet<
86             bi::avl_set<
87                 member_item_type
88                 , bi::member_hook< member_item_type, bi::avl_set_member_hook<>, &member_item_type::hMember>
89                 , bi::compare<IntrusiveStripedSetHdrTest::less<member_item_type> >
90             >
91             ,co::hash< IntrusiveStripedSetHdrTest::hash_int >
92             ,co::mutex_policy< ci::striped_set::refinable<> >
93             ,co::resizing_policy< ci::striped_set::single_bucket_size_threshold<0> >
94         > set_type;
95
96         set_type s( 64, ci::striped_set::single_bucket_size_threshold<0>(256) );
97         test_with( s );
98     }
99 } // namespace set
100
101