Added Bronson AVL-tree header tests
[libcds.git] / tests / test-hdr / tree / hdr_bronson_avltree_map_rcu_gpt.cpp
1 //$$CDS-header$$
2
3 #include "tree/hdr_bronson_avltree_map.h"
4 #include <cds/urcu/general_threaded.h>
5 #include <cds/container/bronson_avltree_map_rcu.h>
6
7 #include "unit/print_bronsonavltree_stat.h"
8
9 namespace tree {
10     namespace cc = cds::container;
11     namespace co = cds::opt;
12     namespace {
13         typedef cds::urcu::gc< cds::urcu::general_threaded<> > rcu_type;
14
15         struct print_stat {
16             template <typename Tree>
17             void operator()( Tree const& t )
18             {
19                 std::cout << t.statistics();
20             }
21         };
22     } // namespace
23
24     void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpt_less()
25     {
26         struct traits: public 
27             cc::bronson_avltree::make_traits<
28                 co::less< std::less<key_type> >
29                 ,cc::bronson_avltree::relaxed_insert< false >
30             >::type
31         {};
32         typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
33         test<map_type, print_stat>();
34     }
35
36     void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpt_less_stat()
37     {
38         struct traits: public 
39             cc::bronson_avltree::make_traits<
40                 co::less< std::less<key_type> >
41                 ,co::stat< cc::bronson_avltree::stat<> >
42                 ,cc::bronson_avltree::relaxed_insert< false >
43             >::type
44         {};
45         typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
46         test<map_type, print_stat>();
47     }
48
49     void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpt_cmp()
50     {
51         struct traits: public 
52             cc::bronson_avltree::make_traits<
53                 co::compare< compare >
54             >::type
55         {};
56         typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
57         test<map_type, print_stat>();
58     }
59
60     void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpt_cmp_stat()
61     {
62         struct traits: public 
63             cc::bronson_avltree::make_traits<
64                 co::compare< compare >
65                 ,co::stat< cc::bronson_avltree::stat<> >
66             >::type
67         {};
68         typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
69         test<map_type, print_stat>();
70     }
71
72     void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpt_cmpless()
73     {
74         struct traits: public 
75             cc::bronson_avltree::make_traits<
76                 co::compare< compare >
77                 ,co::less< std::less<key_type> >
78             >::type
79         {};
80         typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
81         test<map_type, print_stat>();
82     }
83
84     void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpt_less_ic()
85     {
86         struct traits: public 
87             cc::bronson_avltree::make_traits<
88                 co::less< std::less<key_type> >
89                 ,co::item_counter< cds::atomicity::item_counter >
90             >::type
91         {};
92         typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
93         test<map_type, print_stat>();
94     }
95
96     void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpt_cmp_ic()
97     {
98         struct traits: public 
99             cc::bronson_avltree::make_traits<
100                 co::compare< compare >
101                 ,co::item_counter< cds::atomicity::item_counter >
102             >::type
103         {};
104         typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
105         test<map_type, print_stat>();
106     }
107
108     void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpt_cmp_ic_stat()
109     {
110         struct traits: public 
111             cc::bronson_avltree::make_traits<
112                 co::compare< compare >
113                 ,co::item_counter< cds::atomicity::item_counter >
114                 ,co::stat< cc::bronson_avltree::stat<> >
115             >::type
116         {};
117         typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
118         test<map_type, print_stat>();
119     }
120
121     void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpt_cmp_ic_stat_yield()
122     {
123         struct traits: public 
124             cc::bronson_avltree::make_traits<
125                 co::compare< compare >
126                 ,co::item_counter< cds::atomicity::item_counter >
127                 ,co::stat< cc::bronson_avltree::stat<> >
128                 ,co::back_off< cds::backoff::yield >
129             >::type
130         {};
131         typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
132         test<map_type, print_stat>();
133     }
134
135     void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpt_less_relaxed_insert()
136     {
137         struct traits: public 
138             cc::bronson_avltree::make_traits<
139                 co::less< std::less<key_type> >
140                 ,cc::bronson_avltree::relaxed_insert< true >
141             >::type
142         {};
143         typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
144         test<map_type, print_stat>();
145     }
146
147     void BronsonAVLTreeHdrTest::BronsonAVLTree_rcu_gpt_less_relaxed_insert_stat()
148     {
149         struct traits: public 
150             cc::bronson_avltree::make_traits<
151                 co::less< std::less<key_type> >
152                 ,co::stat< cc::bronson_avltree::stat<> >
153                 ,cc::bronson_avltree::relaxed_insert< true >
154             >::type
155         {};
156         typedef cc::BronsonAVLTreeMap< rcu_type, key_type, value_type, traits > map_type;
157         test<map_type, print_stat>();
158     }
159
160 } // namespace tree