4b27b8fbec2a09eb95eccbefcbbcd7ff6ada75b3
[libcds.git] / tests / test-hdr / tree / hdr_ellenbintree_map_hp.cpp
1 //$$CDS-header$$
2
3 #include "tree/hdr_ellenbintree_map.h"
4 #include <cds/container/ellen_bintree_map_hp.h>
5
6 #include "tree/hdr_intrusive_ellen_bintree_pool_hp.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::HP gc_type;
14
15         typedef cc::ellen_bintree::map_node<gc_type, EllenBinTreeMapHdrTest::key_type, EllenBinTreeMapHdrTest::value_type> tree_leaf_node;
16         typedef cc::ellen_bintree::internal_node< EllenBinTreeMapHdrTest::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 EllenBinTreeMapHdrTest::EllenBinTree_hp_less()
30     {
31         typedef cc::EllenBinTreeMap< gc_type, key_type, value_type,
32             cc::ellen_bintree::make_map_traits<
33                 co::less< less >
34             >::type
35         > set_type;
36
37         test<set_type, print_stat>();
38     }
39
40     void EllenBinTreeMapHdrTest::EllenBinTree_hp_cmp()
41     {
42         typedef cc::EllenBinTreeMap< gc_type, key_type, value_type,
43             cc::ellen_bintree::make_map_traits<
44                 co::compare< compare >
45             >::type
46         > set_type;
47
48         test<set_type, print_stat>();
49     }
50
51     void EllenBinTreeMapHdrTest::EllenBinTree_hp_cmpless()
52     {
53         typedef cc::EllenBinTreeMap< gc_type, key_type, value_type,
54             cc::ellen_bintree::make_map_traits<
55                 co::compare< compare >
56                 ,co::less< less >
57             >::type
58         > set_type;
59
60         test<set_type, print_stat>();
61     }
62
63     void EllenBinTreeMapHdrTest::EllenBinTree_hp_less_ic()
64     {
65         typedef cc::EllenBinTreeMap< gc_type, key_type, value_type,
66             cc::ellen_bintree::make_map_traits<
67                 co::less< less >
68                 ,co::item_counter< cds::atomicity::item_counter >
69             >::type
70         > set_type;
71
72         test<set_type, print_stat>();
73     }
74
75     void EllenBinTreeMapHdrTest::EllenBinTree_hp_cmp_ic()
76     {
77         typedef cc::EllenBinTreeMap< gc_type, key_type, value_type,
78             cc::ellen_bintree::make_map_traits<
79                 co::item_counter< cds::atomicity::item_counter >
80                 ,co::compare< compare >
81             >::type
82         > set_type;
83
84         test<set_type, print_stat>();
85     }
86
87     void EllenBinTreeMapHdrTest::EllenBinTree_hp_less_stat()
88     {
89         typedef cc::EllenBinTreeMap< gc_type, key_type, value_type,
90             cc::ellen_bintree::make_map_traits<
91                 co::less< less >
92                 ,co::stat< cc::ellen_bintree::stat<> >
93             >::type
94         > set_type;
95
96         test<set_type, print_stat>();
97     }
98
99     void EllenBinTreeMapHdrTest::EllenBinTree_hp_cmp_ic_stat()
100     {
101         typedef cc::EllenBinTreeMap< gc_type, key_type, value_type,
102             cc::ellen_bintree::make_map_traits<
103                 co::item_counter< cds::atomicity::item_counter >
104                 ,co::stat< cc::ellen_bintree::stat<> >
105                 ,co::compare< compare >
106             >::type
107         > set_type;
108
109         test<set_type, print_stat>();
110     }
111
112     void EllenBinTreeMapHdrTest::EllenBinTree_hp_less_pool()
113     {
114         typedef cc::EllenBinTreeMap< gc_type, key_type, value_type,
115             cc::ellen_bintree::make_map_traits<
116                 co::less< less >
117                 ,co::node_allocator< cds::memory::pool_allocator< tree_internal_node, ellen_bintree_hp::internal_node_pool_accessor > >
118                 ,cc::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< tree_update_desc, ellen_bintree_hp::update_desc_pool_accessor > >
119             >::type
120         > set_type;
121
122         test<set_type, print_stat>();
123     }
124
125     void EllenBinTreeMapHdrTest::EllenBinTree_hp_less_pool_ic_stat()
126     {
127         typedef cc::EllenBinTreeMap< gc_type, key_type, value_type,
128             cc::ellen_bintree::make_map_traits<
129                 co::less< less >
130                 ,co::node_allocator< cds::memory::pool_allocator< tree_internal_node, ellen_bintree_hp::internal_node_pool_accessor > >
131                 ,cc::ellen_bintree::update_desc_allocator< cds::memory::pool_allocator< tree_update_desc, ellen_bintree_hp::update_desc_pool_accessor > >
132                 ,co::item_counter< cds::atomicity::item_counter >
133                 ,co::stat< cc::ellen_bintree::stat<> >
134             >::type
135         > set_type;
136
137         test<set_type, print_stat>();
138     }
139
140 } // namespace tree