Move libcds 1.6.0 from SVN
[libcds.git] / tests / test-hdr / tree / hdr_ellenbintree_set_ptb.cpp
1 //$$CDS-header$$
2
3 #include "tree/hdr_ellenbintree_set.h"
4 #include <cds/container/ellen_bintree_set_ptb.h>
5
6 #include "tree/hdr_intrusive_ellen_bintree_pool_ptb.h"
7 #include "unit/print_ellenbintree_stat.h"
8
9 namespace tree {
10     namespace cc = cds::container;
11     namespace co = cds::opt;
12     namespace {
13         typedef cds::gc::PTB     gc_type;
14
15         typedef cc::ellen_bintree::node<gc_type, EllenBinTreeSetHdrTest::value_type>                    tree_leaf_node;
16         typedef cc::ellen_bintree::internal_node< EllenBinTreeSetHdrTest::key_type, tree_leaf_node >    tree_internal_node;
17         typedef cc::ellen_bintree::update_desc<tree_leaf_node, tree_internal_node>                      tree_update_desc;
18
19         struct print_stat {
20             template <typename Tree>
21             void operator()( Tree const& t)
22             {
23                 std::cout << t.statistics();
24             }
25         };
26
27     }
28
29     void EllenBinTreeSetHdrTest::EllenBinTree_ptb_less()
30     {
31         typedef cc::EllenBinTreeSet< gc_type, key_type, value_type,
32             cc::ellen_bintree::make_set_traits<
33                 cc::ellen_bintree::key_extractor< key_extractor >
34                 ,co::less< less >
35             >::type
36         > set_type;
37
38         test<set_type, print_stat>();
39     }
40
41     void EllenBinTreeSetHdrTest::EllenBinTree_ptb_cmp()
42     {
43         typedef cc::EllenBinTreeSet< gc_type, key_type, value_type,
44             cc::ellen_bintree::make_set_traits<
45                 cc::ellen_bintree::key_extractor< key_extractor >
46                 ,co::compare< compare >
47             >::type
48         > set_type;
49
50         test<set_type, print_stat>();
51     }
52
53     void EllenBinTreeSetHdrTest::EllenBinTree_ptb_cmpless()
54     {
55         typedef cc::EllenBinTreeSet< gc_type, key_type, value_type,
56             cc::ellen_bintree::make_set_traits<
57                 cc::ellen_bintree::key_extractor< key_extractor >
58                 ,co::compare< compare >
59                 ,co::less< less >
60             >::type
61         > set_type;
62
63         test<set_type, print_stat>();
64     }
65
66     void EllenBinTreeSetHdrTest::EllenBinTree_ptb_less_ic()
67     {
68         typedef cc::EllenBinTreeSet< gc_type, key_type, value_type,
69             cc::ellen_bintree::make_set_traits<
70                 cc::ellen_bintree::key_extractor< key_extractor >
71                 ,co::less< less >
72                 ,co::item_counter< cds::atomicity::item_counter >
73             >::type
74         > set_type;
75
76         test<set_type, print_stat>();
77     }
78
79     void EllenBinTreeSetHdrTest::EllenBinTree_ptb_cmp_ic()
80     {
81         typedef cc::EllenBinTreeSet< gc_type, key_type, value_type,
82             cc::ellen_bintree::make_set_traits<
83                 cc::ellen_bintree::key_extractor< key_extractor >
84                 ,co::item_counter< cds::atomicity::item_counter >
85                 ,co::compare< compare >
86             >::type
87         > set_type;
88
89         test<set_type, print_stat>();
90     }
91
92     void EllenBinTreeSetHdrTest::EllenBinTree_ptb_less_stat()
93     {
94         typedef cc::EllenBinTreeSet< gc_type, key_type, value_type,
95             cc::ellen_bintree::make_set_traits<
96                 cc::ellen_bintree::key_extractor< key_extractor >
97                 ,co::less< less >
98                 ,co::stat< cc::ellen_bintree::stat<> >
99             >::type
100         > set_type;
101
102         test<set_type, print_stat>();
103     }
104
105     void EllenBinTreeSetHdrTest::EllenBinTree_ptb_cmp_ic_stat()
106     {
107         typedef cc::EllenBinTreeSet< gc_type, key_type, value_type,
108             cc::ellen_bintree::make_set_traits<
109                 cc::ellen_bintree::key_extractor< key_extractor >
110                 ,co::item_counter< cds::atomicity::item_counter >
111                 ,co::stat< cc::ellen_bintree::stat<> >
112                 ,co::compare< compare >
113             >::type
114         > set_type;
115
116         test<set_type, print_stat>();
117     }
118
119     void EllenBinTreeSetHdrTest::EllenBinTree_ptb_less_pool()
120     {
121         typedef cc::EllenBinTreeSet< gc_type, key_type, value_type,
122             cc::ellen_bintree::make_set_traits<
123                 cc::ellen_bintree::key_extractor< key_extractor >
124                 ,co::less< less >
125                 ,co::node_allocator< cds::memory::pool_allocator< tree_internal_node, ellen_bintree_ptb::internal_node_pool_accessor > >
126                 ,cc::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< tree_update_desc, ellen_bintree_ptb::update_desc_pool_accessor > >
127             >::type
128         > set_type;
129
130         test<set_type, print_stat>();
131     }
132
133     void EllenBinTreeSetHdrTest::EllenBinTree_ptb_less_pool_ic_stat()
134     {
135         typedef cc::EllenBinTreeSet< gc_type, key_type, value_type,
136             cc::ellen_bintree::make_set_traits<
137                 cc::ellen_bintree::key_extractor< key_extractor >
138                 ,co::less< less >
139                 ,co::node_allocator< cds::memory::pool_allocator< tree_internal_node, ellen_bintree_ptb::internal_node_pool_accessor > >
140                 ,cc::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< tree_update_desc, ellen_bintree_ptb::update_desc_pool_accessor > >
141                 ,co::item_counter< cds::atomicity::item_counter >
142                 ,co::stat< cc::ellen_bintree::stat<> >
143             >::type
144         > set_type;
145
146         test<set_type, print_stat>();
147     }
148
149 } // namespace tree