2 This file is a part of libcds - Concurrent Data Structures library
4 (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
6 Source code repo: http://github.com/khizmax/libcds/
7 Download: http://sourceforge.net/projects/libcds/files/
9 Redistribution and use in source and binary forms, with or without
10 modification, are permitted provided that the following conditions are met:
12 * Redistributions of source code must retain the above copyright notice, this
13 list of conditions and the following disclaimer.
15 * Redistributions in binary form must reproduce the above copyright notice,
16 this list of conditions and the following disclaimer in the documentation
17 and/or other materials provided with the distribution.
19 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
23 FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24 DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
25 SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
26 CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
27 OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 #ifndef CDSUNIT_INTRUSIVE_STACK_DEFS_H
32 #define CDSUNIT_INTRUSIVE_STACK_DEFS_H
34 #define CDSUNIT_DECLARE_TreiberStack \
35 TEST_CASE( Treiber_HP, cds::intrusive::treiber_stack::node< cds::gc::HP > ) \
36 TEST_CASE( Treiber_HP_seqcst, cds::intrusive::treiber_stack::node< cds::gc::HP > ) \
37 /*TEST_CASE( Treiber_HP_yield, cds::intrusive::treiber_stack::node< cds::gc::HP > )*/ \
38 TEST_CASE( Treiber_HP_pause, cds::intrusive::treiber_stack::node< cds::gc::HP > ) \
39 TEST_CASE( Treiber_HP_exp, cds::intrusive::treiber_stack::node< cds::gc::HP > ) \
40 TEST_CASE( Treiber_HP_stat, cds::intrusive::treiber_stack::node< cds::gc::HP > ) \
41 TEST_CASE( Treiber_DHP, cds::intrusive::treiber_stack::node< cds::gc::DHP > ) \
42 /*TEST_CASE( Treiber_DHP_yield, cds::intrusive::treiber_stack::node< cds::gc::DHP > )*/ \
43 TEST_CASE( Treiber_DHP_pause, cds::intrusive::treiber_stack::node< cds::gc::DHP > ) \
44 TEST_CASE( Treiber_DHP_exp, cds::intrusive::treiber_stack::node< cds::gc::DHP > ) \
45 TEST_CASE( Treiber_DHP_stat, cds::intrusive::treiber_stack::node< cds::gc::DHP > )
47 #define CDSUNIT_TEST_TreiberStack \
48 CPPUNIT_TEST( Treiber_HP ) \
49 CPPUNIT_TEST( Treiber_HP_seqcst ) \
50 /*CPPUNIT_TEST( Treiber_HP_yield )*/ \
51 CPPUNIT_TEST( Treiber_HP_pause ) \
52 CPPUNIT_TEST( Treiber_HP_exp ) \
53 CPPUNIT_TEST( Treiber_HP_stat ) \
54 CPPUNIT_TEST( Treiber_DHP ) \
55 /*CPPUNIT_TEST( Treiber_DHP_yield )*/ \
56 CPPUNIT_TEST( Treiber_DHP_pause ) \
57 CPPUNIT_TEST( Treiber_DHP_exp ) \
58 CPPUNIT_TEST( Treiber_DHP_stat )
60 #define CDSUNIT_DECLARE_EliminationStack \
61 TEST_ELIMINATION( Elimination_HP, cds::intrusive::treiber_stack::node< cds::gc::HP > ) \
62 TEST_ELIMINATION( Elimination_HP_2ms, cds::intrusive::treiber_stack::node< cds::gc::HP > ) \
63 TEST_ELIMINATION( Elimination_HP_2ms_stat, cds::intrusive::treiber_stack::node< cds::gc::HP >) \
64 TEST_ELIMINATION( Elimination_HP_5ms, cds::intrusive::treiber_stack::node< cds::gc::HP > ) \
65 TEST_ELIMINATION( Elimination_HP_5ms_stat, cds::intrusive::treiber_stack::node< cds::gc::HP >) \
66 TEST_ELIMINATION( Elimination_HP_10ms, cds::intrusive::treiber_stack::node< cds::gc::HP > ) \
67 TEST_ELIMINATION( Elimination_HP_10ms_stat, cds::intrusive::treiber_stack::node< cds::gc::HP >) \
68 TEST_ELIMINATION( Elimination_HP_seqcst, cds::intrusive::treiber_stack::node< cds::gc::HP > ) \
69 /*TEST_ELIMINATION( Elimination_HP_yield, cds::intrusive::treiber_stack::node< cds::gc::HP > )*/ \
70 TEST_ELIMINATION( Elimination_HP_pause, cds::intrusive::treiber_stack::node< cds::gc::HP > ) \
71 TEST_ELIMINATION( Elimination_HP_exp, cds::intrusive::treiber_stack::node< cds::gc::HP > ) \
72 TEST_ELIMINATION( Elimination_HP_stat, cds::intrusive::treiber_stack::node< cds::gc::HP > ) \
73 TEST_ELIMINATION( Elimination_HP_dyn, cds::intrusive::treiber_stack::node< cds::gc::HP > ) \
74 TEST_ELIMINATION( Elimination_HP_dyn_stat, cds::intrusive::treiber_stack::node< cds::gc::HP >) \
75 TEST_ELIMINATION( Elimination_DHP, cds::intrusive::treiber_stack::node< cds::gc::DHP > ) \
76 TEST_ELIMINATION( Elimination_DHP_2ms, cds::intrusive::treiber_stack::node< cds::gc::DHP > ) \
77 TEST_ELIMINATION( Elimination_DHP_2ms_stat, cds::intrusive::treiber_stack::node< cds::gc::DHP >) \
78 TEST_ELIMINATION( Elimination_DHP_5ms, cds::intrusive::treiber_stack::node< cds::gc::DHP > ) \
79 TEST_ELIMINATION( Elimination_DHP_5ms_stat, cds::intrusive::treiber_stack::node< cds::gc::DHP >) \
80 TEST_ELIMINATION( Elimination_DHP_10ms, cds::intrusive::treiber_stack::node< cds::gc::DHP > ) \
81 TEST_ELIMINATION( Elimination_DHP_10ms_stat, cds::intrusive::treiber_stack::node< cds::gc::DHP >) \
82 TEST_ELIMINATION( Elimination_DHP_seqcst, cds::intrusive::treiber_stack::node< cds::gc::DHP > ) \
83 /*TEST_ELIMINATION( Elimination_DHP_yield, cds::intrusive::treiber_stack::node< cds::gc::DHP > )*/ \
84 TEST_ELIMINATION( Elimination_DHP_pause, cds::intrusive::treiber_stack::node< cds::gc::DHP > ) \
85 TEST_ELIMINATION( Elimination_DHP_exp, cds::intrusive::treiber_stack::node< cds::gc::DHP > ) \
86 TEST_ELIMINATION( Elimination_DHP_stat, cds::intrusive::treiber_stack::node< cds::gc::DHP > ) \
87 TEST_ELIMINATION( Elimination_DHP_dyn, cds::intrusive::treiber_stack::node< cds::gc::DHP > ) \
88 TEST_ELIMINATION( Elimination_DHP_dyn_stat, cds::intrusive::treiber_stack::node< cds::gc::DHP >)
90 #define CDSUNIT_TEST_EliminationStack \
91 CPPUNIT_TEST( Elimination_HP ) \
92 CPPUNIT_TEST( Elimination_HP_2ms ) \
93 CPPUNIT_TEST( Elimination_HP_2ms_stat) \
94 CPPUNIT_TEST( Elimination_HP_5ms ) \
95 CPPUNIT_TEST( Elimination_HP_5ms_stat) \
96 CPPUNIT_TEST( Elimination_HP_10ms ) \
97 CPPUNIT_TEST( Elimination_HP_10ms_stat) \
98 CPPUNIT_TEST( Elimination_HP_seqcst ) \
99 /*CPPUNIT_TEST( Elimination_HP_yield )*/ \
100 CPPUNIT_TEST( Elimination_HP_pause ) \
101 CPPUNIT_TEST( Elimination_HP_exp ) \
102 CPPUNIT_TEST( Elimination_HP_stat ) \
103 CPPUNIT_TEST( Elimination_HP_dyn ) \
104 CPPUNIT_TEST( Elimination_HP_dyn_stat) \
105 CPPUNIT_TEST( Elimination_DHP ) \
106 CPPUNIT_TEST( Elimination_DHP_seqcst ) \
107 CPPUNIT_TEST( Elimination_DHP_2ms ) \
108 CPPUNIT_TEST( Elimination_DHP_2ms_stat) \
109 CPPUNIT_TEST( Elimination_DHP_5ms ) \
110 CPPUNIT_TEST( Elimination_DHP_5ms_stat) \
111 CPPUNIT_TEST( Elimination_DHP_10ms ) \
112 CPPUNIT_TEST( Elimination_DHP_10ms_stat) \
113 /*CPPUNIT_TEST( Elimination_DHP_yield )*/ \
114 CPPUNIT_TEST( Elimination_DHP_pause ) \
115 CPPUNIT_TEST( Elimination_DHP_exp ) \
116 CPPUNIT_TEST( Elimination_DHP_stat ) \
117 CPPUNIT_TEST( Elimination_DHP_dyn ) \
118 CPPUNIT_TEST( Elimination_DHP_dyn_stat)
120 #define CDSUNIT_DECLARE_FCStack \
121 TEST_FCSTACK( FCStack_slist, boost::intrusive::slist_base_hook<> ) \
122 TEST_FCSTACK( FCStack_slist_stat, boost::intrusive::slist_base_hook<> ) \
123 TEST_FCSTACK( FCStack_slist_elimination, boost::intrusive::slist_base_hook<> ) \
124 TEST_FCSTACK( FCStack_slist_elimination_stat, boost::intrusive::slist_base_hook<> ) \
125 TEST_FCSTACK( FCStack_slist_mutex_stat, boost::intrusive::slist_base_hook<> ) \
126 TEST_FCSTACK( FCStack_slist_mutex_elimination, boost::intrusive::slist_base_hook<> ) \
127 TEST_FCSTACK( FCStack_slist_mutex_elimination_stat, boost::intrusive::slist_base_hook<> ) \
128 TEST_FCSTACK( FCStack_list, boost::intrusive::list_base_hook<> ) \
129 TEST_FCSTACK( FCStack_list_stat, boost::intrusive::list_base_hook<> ) \
130 TEST_FCSTACK( FCStack_list_elimination, boost::intrusive::list_base_hook<> ) \
131 TEST_FCSTACK( FCStack_list_elimination_stat, boost::intrusive::list_base_hook<> ) \
132 TEST_FCSTACK( FCStack_list_mutex_stat, boost::intrusive::list_base_hook<> ) \
133 TEST_FCSTACK( FCStack_list_mutex_elimination, boost::intrusive::list_base_hook<> ) \
134 TEST_FCSTACK( FCStack_list_mutex_elimination_stat, boost::intrusive::list_base_hook<> )
136 #define CDSUNIT_TEST_FCStack \
137 CPPUNIT_TEST( FCStack_slist ) \
138 CPPUNIT_TEST( FCStack_slist_stat ) \
139 CPPUNIT_TEST( FCStack_slist_elimination ) \
140 CPPUNIT_TEST( FCStack_slist_elimination_stat ) \
141 CPPUNIT_TEST( FCStack_slist_mutex_stat ) \
142 CPPUNIT_TEST( FCStack_slist_mutex_elimination ) \
143 CPPUNIT_TEST( FCStack_slist_mutex_elimination_stat ) \
144 CPPUNIT_TEST( FCStack_list ) \
145 CPPUNIT_TEST( FCStack_list_stat ) \
146 CPPUNIT_TEST( FCStack_list_elimination ) \
147 CPPUNIT_TEST( FCStack_list_elimination_stat ) \
148 CPPUNIT_TEST( FCStack_list_mutex_stat ) \
149 CPPUNIT_TEST( FCStack_list_mutex_elimination ) \
150 CPPUNIT_TEST( FCStack_list_mutex_elimination_stat )
153 #define CDSUNIT_DECLARE_StdStack \
154 TEST_STDSTACK( StdStack_Deque_Mutex ) \
155 TEST_STDSTACK( StdStack_Deque_Spin ) \
156 TEST_STDSTACK( StdStack_Vector_Mutex ) \
157 TEST_STDSTACK( StdStack_Vector_Spin ) \
158 TEST_STDSTACK( StdStack_List_Mutex ) \
159 TEST_STDSTACK( StdStack_List_Spin )
161 #define CDSUNIT_TEST_StdStack \
162 CPPUNIT_TEST( StdStack_Deque_Mutex ) \
163 CPPUNIT_TEST( StdStack_Deque_Spin ) \
164 CPPUNIT_TEST( StdStack_Vector_Mutex ) \
165 CPPUNIT_TEST( StdStack_Vector_Spin ) \
166 CPPUNIT_TEST( StdStack_List_Mutex ) \
167 CPPUNIT_TEST( StdStack_List_Spin )
169 #endif // #ifndef CDSUNIT_INTRUSIVE_STACK_DEFS_H