a6054bb535defd494bcd8ca983c35c9bf35be2b9
[libcds.git] / tests / unit / set2 / set_defs.h
1 /*
2     This file is a part of libcds - Concurrent Data Structures library
3
4     (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
5
6     Source code repo: http://github.com/khizmax/libcds/
7     Download: http://sourceforge.net/projects/libcds/files/
8     
9     Redistribution and use in source and binary forms, with or without
10     modification, are permitted provided that the following conditions are met:
11
12     * Redistributions of source code must retain the above copyright notice, this
13       list of conditions and the following disclaimer.
14
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.
18
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.     
29 */
30
31 #define CDSUNIT_DECLARE_StdSet \
32     TEST_CASE( tag_StdSet, StdSet_Spin) \
33     TEST_CASE( tag_StdSet, StdSet_Mutex) \
34     TEST_CASE( tag_StdSet, StdHashSet_Spin)
35
36 #define CDSUNIT_TEST_StdSet \
37     CPPUNIT_TEST(StdSet_Spin) \
38     CPPUNIT_TEST(StdSet_Mutex) \
39     CPPUNIT_TEST(StdHashSet_Spin)
40
41 //********************************************************************
42 // MichaelHashSet
43
44 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
45 #   define CDSUNIT_DECLARE_MichaelSet_RCU_signal  \
46     TEST_CASE(tag_MichaelHashSet, MichaelSet_RCU_SHB_cmp_stdAlloc) \
47     TEST_CASE(tag_MichaelHashSet, MichaelSet_RCU_SHB_less_michaelAlloc) \
48     TEST_CASE(tag_MichaelHashSet, MichaelSet_RCU_SHT_cmp_stdAlloc) \
49     TEST_CASE(tag_MichaelHashSet, MichaelSet_RCU_SHT_less_michaelAlloc) \
50     TEST_CASE(tag_MichaelHashSet, MichaelSet_Lazy_RCU_SHB_cmp_stdAlloc) \
51     TEST_CASE(tag_MichaelHashSet, MichaelSet_Lazy_RCU_SHB_less_michaelAlloc) \
52     TEST_CASE(tag_MichaelHashSet, MichaelSet_Lazy_RCU_SHT_cmp_stdAlloc) \
53     TEST_CASE(tag_MichaelHashSet, MichaelSet_Lazy_RCU_SHT_less_michaelAlloc)
54
55 #   define CDSUNIT_TEST_MichaelSet_RCU_signal  \
56     CPPUNIT_TEST(MichaelSet_RCU_SHB_cmp_stdAlloc) \
57     CPPUNIT_TEST(MichaelSet_RCU_SHB_less_michaelAlloc) \
58     CPPUNIT_TEST(MichaelSet_RCU_SHT_cmp_stdAlloc) \
59     CPPUNIT_TEST(MichaelSet_RCU_SHT_less_michaelAlloc) \
60     CPPUNIT_TEST(MichaelSet_Lazy_RCU_SHB_cmp_stdAlloc) \
61     CPPUNIT_TEST(MichaelSet_Lazy_RCU_SHB_less_michaelAlloc) \
62     CPPUNIT_TEST(MichaelSet_Lazy_RCU_SHT_cmp_stdAlloc) \
63     CPPUNIT_TEST(MichaelSet_Lazy_RCU_SHT_less_michaelAlloc)
64 #else
65 #   define CDSUNIT_DECLARE_MichaelSet_RCU_signal
66 #   define CDSUNIT_TEST_MichaelSet_RCU_signal
67 #endif
68
69
70 #define CDSUNIT_DECLARE_MichaelSet  \
71     TEST_CASE(tag_MichaelHashSet, MichaelSet_HP_cmp_stdAlloc) \
72     TEST_CASE(tag_MichaelHashSet, MichaelSet_HP_less_michaelAlloc) \
73     TEST_CASE(tag_MichaelHashSet, MichaelSet_DHP_cmp_stdAlloc) \
74     TEST_CASE(tag_MichaelHashSet, MichaelSet_DHP_less_michaelAlloc) \
75     TEST_CASE(tag_MichaelHashSet, MichaelSet_RCU_GPI_cmp_stdAlloc) \
76     TEST_CASE(tag_MichaelHashSet, MichaelSet_RCU_GPI_less_michaelAlloc) \
77     TEST_CASE(tag_MichaelHashSet, MichaelSet_RCU_GPB_cmp_stdAlloc) \
78     TEST_CASE(tag_MichaelHashSet, MichaelSet_RCU_GPB_less_michaelAlloc) \
79     TEST_CASE(tag_MichaelHashSet, MichaelSet_RCU_GPT_cmp_stdAlloc) \
80     TEST_CASE(tag_MichaelHashSet, MichaelSet_RCU_GPT_less_michaelAlloc) \
81     TEST_CASE(tag_MichaelHashSet, MichaelSet_Lazy_HP_cmp_stdAlloc) \
82     TEST_CASE(tag_MichaelHashSet, MichaelSet_Lazy_HP_less_michaelAlloc) \
83     TEST_CASE(tag_MichaelHashSet, MichaelSet_Lazy_DHP_cmp_stdAlloc) \
84     TEST_CASE(tag_MichaelHashSet, MichaelSet_Lazy_DHP_less_michaelAlloc) \
85     TEST_CASE(tag_MichaelHashSet, MichaelSet_Lazy_RCU_GPI_cmp_stdAlloc) \
86     TEST_CASE(tag_MichaelHashSet, MichaelSet_Lazy_RCU_GPI_less_michaelAlloc) \
87     TEST_CASE(tag_MichaelHashSet, MichaelSet_Lazy_RCU_GPB_cmp_stdAlloc) \
88     TEST_CASE(tag_MichaelHashSet, MichaelSet_Lazy_RCU_GPB_less_michaelAlloc) \
89     TEST_CASE(tag_MichaelHashSet, MichaelSet_Lazy_RCU_GPT_cmp_stdAlloc) \
90     TEST_CASE(tag_MichaelHashSet, MichaelSet_Lazy_RCU_GPT_less_michaelAlloc) \
91     CDSUNIT_DECLARE_MichaelSet_RCU_signal
92
93 #define CDSUNIT_TEST_MichaelSet  \
94     CPPUNIT_TEST(MichaelSet_HP_cmp_stdAlloc) \
95     CPPUNIT_TEST(MichaelSet_HP_less_michaelAlloc) \
96     CPPUNIT_TEST(MichaelSet_DHP_cmp_stdAlloc) \
97     CPPUNIT_TEST(MichaelSet_DHP_less_michaelAlloc) \
98     CPPUNIT_TEST(MichaelSet_RCU_GPI_cmp_stdAlloc) \
99     CPPUNIT_TEST(MichaelSet_RCU_GPI_less_michaelAlloc) \
100     CPPUNIT_TEST(MichaelSet_RCU_GPB_cmp_stdAlloc) \
101     CPPUNIT_TEST(MichaelSet_RCU_GPB_less_michaelAlloc) \
102     CPPUNIT_TEST(MichaelSet_RCU_GPT_cmp_stdAlloc) \
103     CPPUNIT_TEST(MichaelSet_RCU_GPT_less_michaelAlloc) \
104     CPPUNIT_TEST(MichaelSet_Lazy_HP_cmp_stdAlloc) \
105     CPPUNIT_TEST(MichaelSet_Lazy_HP_less_michaelAlloc) \
106     CPPUNIT_TEST(MichaelSet_Lazy_DHP_cmp_stdAlloc) \
107     CPPUNIT_TEST(MichaelSet_Lazy_DHP_less_michaelAlloc) \
108     CPPUNIT_TEST(MichaelSet_Lazy_RCU_GPI_cmp_stdAlloc) \
109     CPPUNIT_TEST(MichaelSet_Lazy_RCU_GPI_less_michaelAlloc) \
110     CPPUNIT_TEST(MichaelSet_Lazy_RCU_GPB_cmp_stdAlloc) \
111     CPPUNIT_TEST(MichaelSet_Lazy_RCU_GPB_less_michaelAlloc) \
112     CPPUNIT_TEST(MichaelSet_Lazy_RCU_GPT_cmp_stdAlloc) \
113     CPPUNIT_TEST(MichaelSet_Lazy_RCU_GPT_less_michaelAlloc) \
114     CDSUNIT_TEST_MichaelSet_RCU_signal
115
116 //********************************************************************
117 // SplitListSet
118
119 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
120 #   define CDSUNIT_DECLARE_SplitList_RCU_signal  \
121     TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_SHB_dyn_cmp)\
122     TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_SHB_dyn_cmp_stat)\
123     TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_SHB_st_cmp)\
124     TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_SHB_dyn_less)\
125     TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_SHB_st_less)\
126     TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_SHB_st_less_stat)\
127     TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_SHT_dyn_cmp)\
128     TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_SHT_dyn_cmp_stat)\
129     TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_SHT_st_cmp)\
130     TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_SHT_dyn_less)\
131     TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_SHT_st_less)\
132     TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_SHT_st_less_stat)\
133     TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_SHB_dyn_cmp)\
134     TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_SHB_dyn_cmp_stat)\
135     TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_SHB_st_cmp)\
136     TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_SHB_dyn_less)\
137     TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_SHB_st_less)\
138     TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_SHB_st_less_stat)\
139     TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_SHT_dyn_cmp)\
140     TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_SHT_dyn_cmp_stat)\
141     TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_SHT_st_cmp)\
142     TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_SHT_dyn_less)\
143     TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_SHT_st_less)\
144     TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_SHT_st_less_stat)
145
146 #   define CDSUNIT_TEST_SplitList_RCU_signal  \
147     CPPUNIT_TEST(SplitList_Michael_RCU_SHB_dyn_cmp)\
148     CPPUNIT_TEST(SplitList_Michael_RCU_SHB_dyn_cmp_stat)\
149     CPPUNIT_TEST(SplitList_Michael_RCU_SHB_st_cmp)\
150     CPPUNIT_TEST(SplitList_Michael_RCU_SHB_dyn_less)\
151     CPPUNIT_TEST(SplitList_Michael_RCU_SHB_st_less)\
152     CPPUNIT_TEST(SplitList_Michael_RCU_SHB_st_less_stat)\
153     CPPUNIT_TEST(SplitList_Michael_RCU_SHT_dyn_cmp)\
154     CPPUNIT_TEST(SplitList_Michael_RCU_SHT_dyn_cmp_stat)\
155     CPPUNIT_TEST(SplitList_Michael_RCU_SHT_st_cmp)\
156     CPPUNIT_TEST(SplitList_Michael_RCU_SHT_dyn_less)\
157     CPPUNIT_TEST(SplitList_Michael_RCU_SHT_st_less)\
158     CPPUNIT_TEST(SplitList_Michael_RCU_SHT_st_less_stat)\
159     CPPUNIT_TEST(SplitList_Lazy_RCU_SHB_dyn_cmp)\
160     CPPUNIT_TEST(SplitList_Lazy_RCU_SHB_dyn_cmp_stat)\
161     CPPUNIT_TEST(SplitList_Lazy_RCU_SHB_st_cmp)\
162     CPPUNIT_TEST(SplitList_Lazy_RCU_SHB_dyn_less)\
163     CPPUNIT_TEST(SplitList_Lazy_RCU_SHB_st_less)\
164     CPPUNIT_TEST(SplitList_Lazy_RCU_SHB_st_less_stat)\
165     CPPUNIT_TEST(SplitList_Lazy_RCU_SHT_dyn_cmp)\
166     CPPUNIT_TEST(SplitList_Lazy_RCU_SHT_dyn_cmp_stat)\
167     CPPUNIT_TEST(SplitList_Lazy_RCU_SHT_st_cmp)\
168     CPPUNIT_TEST(SplitList_Lazy_RCU_SHT_dyn_less)\
169     CPPUNIT_TEST(SplitList_Lazy_RCU_SHT_st_less)\
170     CPPUNIT_TEST(SplitList_Lazy_RCU_SHT_st_less_stat)
171
172 #else
173 #   define CDSUNIT_DECLARE_SplitList_RCU_signal
174 #   define CDSUNIT_TEST_SplitList_RCU_signal
175 #endif
176
177 #define CDSUNIT_DECLARE_SplitList  \
178     TEST_CASE(tag_SplitListSet, SplitList_Michael_HP_dyn_cmp)\
179     TEST_CASE(tag_SplitListSet, SplitList_Michael_HP_dyn_cmp_stat)\
180     TEST_CASE(tag_SplitListSet, SplitList_Michael_HP_st_cmp)\
181     TEST_CASE(tag_SplitListSet, SplitList_Michael_HP_dyn_less)\
182     TEST_CASE(tag_SplitListSet, SplitList_Michael_HP_st_less)\
183     TEST_CASE(tag_SplitListSet, SplitList_Michael_HP_st_less_stat)\
184     TEST_CASE(tag_SplitListSet, SplitList_Michael_DHP_dyn_cmp)\
185     TEST_CASE(tag_SplitListSet, SplitList_Michael_DHP_dyn_cmp_stat)\
186     TEST_CASE(tag_SplitListSet, SplitList_Michael_DHP_st_cmp)\
187     TEST_CASE(tag_SplitListSet, SplitList_Michael_DHP_dyn_less)\
188     TEST_CASE(tag_SplitListSet, SplitList_Michael_DHP_st_less)\
189     TEST_CASE(tag_SplitListSet, SplitList_Michael_DHP_st_less_stat)\
190     TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_GPI_dyn_cmp)\
191     TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_GPI_dyn_cmp_stat)\
192     TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_GPI_st_cmp)\
193     TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_GPI_dyn_less)\
194     TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_GPI_st_less)\
195     TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_GPI_st_less_stat)\
196     TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_GPB_dyn_cmp)\
197     TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_GPB_dyn_cmp_stat)\
198     TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_GPB_st_cmp)\
199     TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_GPB_dyn_less)\
200     TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_GPB_st_less)\
201     TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_GPB_st_less_stat)\
202     TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_GPT_dyn_cmp)\
203     TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_GPT_dyn_cmp_stat)\
204     TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_GPT_st_cmp)\
205     TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_GPT_dyn_less)\
206     TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_GPT_st_less)\
207     TEST_CASE(tag_SplitListSet, SplitList_Michael_RCU_GPT_st_less_stat)\
208     TEST_CASE(tag_SplitListSet, SplitList_Lazy_HP_dyn_cmp)\
209     TEST_CASE(tag_SplitListSet, SplitList_Lazy_HP_dyn_cmp_stat)\
210     TEST_CASE(tag_SplitListSet, SplitList_Lazy_HP_st_cmp)\
211     TEST_CASE(tag_SplitListSet, SplitList_Lazy_HP_dyn_less)\
212     TEST_CASE(tag_SplitListSet, SplitList_Lazy_HP_st_less)\
213     TEST_CASE(tag_SplitListSet, SplitList_Lazy_HP_st_less_stat)\
214     TEST_CASE(tag_SplitListSet, SplitList_Lazy_DHP_dyn_cmp)\
215     TEST_CASE(tag_SplitListSet, SplitList_Lazy_DHP_dyn_cmp_stat)\
216     TEST_CASE(tag_SplitListSet, SplitList_Lazy_DHP_st_cmp)\
217     TEST_CASE(tag_SplitListSet, SplitList_Lazy_DHP_dyn_less)\
218     TEST_CASE(tag_SplitListSet, SplitList_Lazy_DHP_st_less)\
219     TEST_CASE(tag_SplitListSet, SplitList_Lazy_DHP_st_less_stat)\
220     TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_GPI_dyn_cmp)\
221     TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_GPI_dyn_cmp_stat)\
222     TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_GPI_st_cmp)\
223     TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_GPI_dyn_less)\
224     TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_GPI_st_less)\
225     TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_GPI_st_less_stat)\
226     TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_GPB_dyn_cmp)\
227     TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_GPB_dyn_cmp_stat)\
228     TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_GPB_st_cmp)\
229     TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_GPB_dyn_less)\
230     TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_GPB_st_less)\
231     TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_GPB_st_less_stat)\
232     TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_GPT_dyn_cmp)\
233     TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_GPT_dyn_cmp_stat)\
234     TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_GPT_st_cmp)\
235     TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_GPT_dyn_less)\
236     TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_GPT_st_less)\
237     TEST_CASE(tag_SplitListSet, SplitList_Lazy_RCU_GPT_st_less_stat)\
238     CDSUNIT_DECLARE_SplitList_RCU_signal
239
240 #define CDSUNIT_TEST_SplitList  \
241     CPPUNIT_TEST(SplitList_Michael_HP_dyn_cmp)\
242     CPPUNIT_TEST(SplitList_Michael_HP_dyn_cmp_stat)\
243     CPPUNIT_TEST(SplitList_Michael_HP_st_cmp)\
244     CPPUNIT_TEST(SplitList_Michael_HP_dyn_less)\
245     CPPUNIT_TEST(SplitList_Michael_HP_st_less)\
246     CPPUNIT_TEST(SplitList_Michael_HP_st_less_stat)\
247     CPPUNIT_TEST(SplitList_Michael_DHP_dyn_cmp)\
248     CPPUNIT_TEST(SplitList_Michael_DHP_dyn_cmp_stat)\
249     CPPUNIT_TEST(SplitList_Michael_DHP_st_cmp)\
250     CPPUNIT_TEST(SplitList_Michael_DHP_dyn_less)\
251     CPPUNIT_TEST(SplitList_Michael_DHP_st_less)\
252     CPPUNIT_TEST(SplitList_Michael_DHP_st_less_stat)\
253     CPPUNIT_TEST(SplitList_Michael_RCU_GPI_dyn_cmp)\
254     CPPUNIT_TEST(SplitList_Michael_RCU_GPI_dyn_cmp_stat)\
255     CPPUNIT_TEST(SplitList_Michael_RCU_GPI_st_cmp)\
256     CPPUNIT_TEST(SplitList_Michael_RCU_GPI_dyn_less)\
257     CPPUNIT_TEST(SplitList_Michael_RCU_GPI_st_less)\
258     CPPUNIT_TEST(SplitList_Michael_RCU_GPI_st_less_stat)\
259     CPPUNIT_TEST(SplitList_Michael_RCU_GPB_dyn_cmp)\
260     CPPUNIT_TEST(SplitList_Michael_RCU_GPB_dyn_cmp_stat)\
261     CPPUNIT_TEST(SplitList_Michael_RCU_GPB_st_cmp)\
262     CPPUNIT_TEST(SplitList_Michael_RCU_GPB_dyn_less)\
263     CPPUNIT_TEST(SplitList_Michael_RCU_GPB_st_less)\
264     CPPUNIT_TEST(SplitList_Michael_RCU_GPB_st_less_stat)\
265     CPPUNIT_TEST(SplitList_Michael_RCU_GPT_dyn_cmp)\
266     CPPUNIT_TEST(SplitList_Michael_RCU_GPT_dyn_cmp_stat)\
267     CPPUNIT_TEST(SplitList_Michael_RCU_GPT_st_cmp)\
268     CPPUNIT_TEST(SplitList_Michael_RCU_GPT_dyn_less)\
269     CPPUNIT_TEST(SplitList_Michael_RCU_GPT_st_less)\
270     CPPUNIT_TEST(SplitList_Michael_RCU_GPT_st_less_stat)\
271     CPPUNIT_TEST(SplitList_Lazy_HP_dyn_cmp)\
272     CPPUNIT_TEST(SplitList_Lazy_HP_dyn_cmp_stat)\
273     CPPUNIT_TEST(SplitList_Lazy_HP_st_cmp)\
274     CPPUNIT_TEST(SplitList_Lazy_HP_dyn_less)\
275     CPPUNIT_TEST(SplitList_Lazy_HP_st_less)\
276     CPPUNIT_TEST(SplitList_Lazy_HP_st_less_stat)\
277     CPPUNIT_TEST(SplitList_Lazy_DHP_dyn_cmp)\
278     CPPUNIT_TEST(SplitList_Lazy_HP_st_less_stat)\
279     CPPUNIT_TEST(SplitList_Lazy_DHP_st_cmp)\
280     CPPUNIT_TEST(SplitList_Lazy_DHP_dyn_less)\
281     CPPUNIT_TEST(SplitList_Lazy_DHP_st_less)\
282     CPPUNIT_TEST(SplitList_Lazy_DHP_st_less_stat)\
283     CPPUNIT_TEST(SplitList_Lazy_RCU_GPI_dyn_cmp)\
284     CPPUNIT_TEST(SplitList_Lazy_RCU_GPI_dyn_cmp_stat)\
285     CPPUNIT_TEST(SplitList_Lazy_RCU_GPI_st_cmp)\
286     CPPUNIT_TEST(SplitList_Lazy_RCU_GPI_dyn_less)\
287     CPPUNIT_TEST(SplitList_Lazy_RCU_GPI_st_less)\
288     CPPUNIT_TEST(SplitList_Lazy_RCU_GPI_st_less_stat)\
289     CPPUNIT_TEST(SplitList_Lazy_RCU_GPB_dyn_cmp)\
290     CPPUNIT_TEST(SplitList_Lazy_RCU_GPB_dyn_cmp_stat)\
291     CPPUNIT_TEST(SplitList_Lazy_RCU_GPB_st_cmp)\
292     CPPUNIT_TEST(SplitList_Lazy_RCU_GPB_dyn_less)\
293     CPPUNIT_TEST(SplitList_Lazy_RCU_GPB_st_less)\
294     CPPUNIT_TEST(SplitList_Lazy_RCU_GPB_st_less_stat)\
295     CPPUNIT_TEST(SplitList_Lazy_RCU_GPT_dyn_cmp)\
296     CPPUNIT_TEST(SplitList_Lazy_RCU_GPT_dyn_cmp_stat)\
297     CPPUNIT_TEST(SplitList_Lazy_RCU_GPT_st_cmp)\
298     CPPUNIT_TEST(SplitList_Lazy_RCU_GPT_dyn_less)\
299     CPPUNIT_TEST(SplitList_Lazy_RCU_GPT_st_less)\
300     CPPUNIT_TEST(SplitList_Lazy_RCU_GPT_st_less_stat)\
301     CDSUNIT_TEST_SplitList_RCU_signal
302
303 //********************************************************************
304 // CuckooSet
305
306 #define CDSUNIT_DECLARE_CuckooSet \
307     TEST_CASE(tag_CuckooSet, CuckooStripedSet_list_unord)\
308     TEST_CASE(tag_CuckooSet, CuckooStripedSet_list_unord_stat)\
309     TEST_CASE(tag_CuckooSet, CuckooStripedSet_list_ord)\
310     TEST_CASE(tag_CuckooSet, CuckooStripedSet_list_ord_stat)\
311     TEST_CASE(tag_CuckooSet, CuckooStripedSet_vector_unord)\
312     TEST_CASE(tag_CuckooSet, CuckooStripedSet_vector_ord)\
313     TEST_CASE(tag_CuckooSet, CuckooStripedSet_vector_unord_stat)\
314     TEST_CASE(tag_CuckooSet, CuckooStripedSet_vector_ord_stat)\
315     TEST_CASE(tag_CuckooSet, CuckooRefinableSet_list_unord)\
316     TEST_CASE(tag_CuckooSet, CuckooRefinableSet_list_ord)\
317     TEST_CASE(tag_CuckooSet, CuckooRefinableSet_list_unord_stat)\
318     TEST_CASE(tag_CuckooSet, CuckooRefinableSet_list_ord_stat)\
319     TEST_CASE(tag_CuckooSet, CuckooRefinableSet_vector_unord)\
320     TEST_CASE(tag_CuckooSet, CuckooRefinableSet_vector_unord_stat)\
321     TEST_CASE(tag_CuckooSet, CuckooRefinableSet_vector_ord) \
322     TEST_CASE(tag_CuckooSet, CuckooRefinableSet_vector_ord_stat) \
323     TEST_CASE(tag_CuckooSet, CuckooStripedSet_list_unord_storehash)\
324     TEST_CASE(tag_CuckooSet, CuckooStripedSet_list_ord_storehash)\
325     TEST_CASE(tag_CuckooSet, CuckooStripedSet_vector_unord_storehash)\
326     TEST_CASE(tag_CuckooSet, CuckooStripedSet_vector_ord_storehash)\
327     TEST_CASE(tag_CuckooSet, CuckooRefinableSet_list_unord_storehash)\
328     TEST_CASE(tag_CuckooSet, CuckooRefinableSet_list_ord_storehash)\
329     TEST_CASE(tag_CuckooSet, CuckooRefinableSet_vector_unord_storehash)\
330     TEST_CASE(tag_CuckooSet, CuckooRefinableSet_vector_ord_storehash)
331
332 #define CDSUNIT_TEST_CuckooSet \
333     CPPUNIT_TEST(CuckooStripedSet_list_unord)\
334     CPPUNIT_TEST(CuckooStripedSet_list_unord_stat)\
335     CPPUNIT_TEST(CuckooStripedSet_list_unord_storehash)\
336     CPPUNIT_TEST(CuckooStripedSet_list_ord)\
337     CPPUNIT_TEST(CuckooStripedSet_list_ord_stat)\
338     CPPUNIT_TEST(CuckooStripedSet_list_ord_storehash)\
339     CPPUNIT_TEST(CuckooStripedSet_vector_unord)\
340     CPPUNIT_TEST(CuckooStripedSet_vector_unord_stat)\
341     CPPUNIT_TEST(CuckooStripedSet_vector_unord_storehash)\
342     CPPUNIT_TEST(CuckooStripedSet_vector_ord)\
343     CPPUNIT_TEST(CuckooStripedSet_vector_ord_stat)\
344     CPPUNIT_TEST(CuckooStripedSet_vector_ord_storehash)\
345     CPPUNIT_TEST(CuckooRefinableSet_list_unord)\
346     CPPUNIT_TEST(CuckooRefinableSet_list_unord_stat)\
347     CPPUNIT_TEST(CuckooRefinableSet_list_unord_storehash)\
348     CPPUNIT_TEST(CuckooRefinableSet_list_ord)\
349     CPPUNIT_TEST(CuckooRefinableSet_list_ord_stat)\
350     CPPUNIT_TEST(CuckooRefinableSet_list_ord_storehash)\
351     CPPUNIT_TEST(CuckooRefinableSet_vector_unord)\
352     CPPUNIT_TEST(CuckooRefinableSet_vector_unord_stat)\
353     CPPUNIT_TEST(CuckooRefinableSet_vector_unord_storehash)\
354     CPPUNIT_TEST(CuckooRefinableSet_vector_ord) \
355     CPPUNIT_TEST(CuckooRefinableSet_vector_ord_stat) \
356     CPPUNIT_TEST(CuckooRefinableSet_vector_ord_storehash)
357
358 //********************************************************************
359 // SkipListSet
360
361 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
362 #   define CDSUNIT_DECLARE_SkipListSet_RCU_signal \
363     TEST_CASE(tag_SkipListSet, SkipListSet_rcu_shb_less_pascal)\
364     TEST_CASE(tag_SkipListSet, SkipListSet_rcu_shb_cmp_pascal_stat)\
365     TEST_CASE(tag_SkipListSet, SkipListSet_rcu_shb_less_xorshift)\
366     TEST_CASE(tag_SkipListSet, SkipListSet_rcu_shb_cmp_xorshift_stat)\
367     TEST_CASE(tag_SkipListSet, SkipListSet_rcu_sht_less_pascal)\
368     TEST_CASE(tag_SkipListSet, SkipListSet_rcu_sht_cmp_pascal_stat)\
369     TEST_CASE(tag_SkipListSet, SkipListSet_rcu_sht_less_xorshift)\
370     TEST_CASE(tag_SkipListSet, SkipListSet_rcu_sht_cmp_xorshift_stat)
371
372 #   define CDSUNIT_TEST_SkipListSet_RCU_signal \
373     CPPUNIT_TEST(SkipListSet_rcu_shb_less_pascal)\
374     CPPUNIT_TEST(SkipListSet_rcu_shb_cmp_pascal_stat)\
375     CPPUNIT_TEST(SkipListSet_rcu_shb_less_xorshift)\
376     CPPUNIT_TEST(SkipListSet_rcu_shb_cmp_xorshift_stat)\
377     CPPUNIT_TEST(SkipListSet_rcu_sht_less_pascal)\
378     CPPUNIT_TEST(SkipListSet_rcu_sht_cmp_pascal_stat)\
379     CPPUNIT_TEST(SkipListSet_rcu_sht_less_xorshift)\
380     CPPUNIT_TEST(SkipListSet_rcu_sht_cmp_xorshift_stat)
381
382 #else
383 #   define CDSUNIT_DECLARE_SkipListSet_RCU_signal
384 #   define CDSUNIT_TEST_SkipListSet_RCU_signal
385 #endif
386
387 #define CDSUNIT_DECLARE_SkipListSet \
388     TEST_CASE(tag_SkipListSet, SkipListSet_hp_less_pascal)\
389     TEST_CASE(tag_SkipListSet, SkipListSet_hp_cmp_pascal_stat)\
390     TEST_CASE(tag_SkipListSet, SkipListSet_hp_less_xorshift)\
391     TEST_CASE(tag_SkipListSet, SkipListSet_hp_cmp_xorshift_stat)\
392     TEST_CASE(tag_SkipListSet, SkipListSet_dhp_less_pascal)\
393     TEST_CASE(tag_SkipListSet, SkipListSet_dhp_cmp_pascal_stat)\
394     TEST_CASE(tag_SkipListSet, SkipListSet_dhp_less_xorshift)\
395     TEST_CASE(tag_SkipListSet, SkipListSet_dhp_cmp_xorshift_stat)\
396     TEST_CASE(tag_SkipListSet, SkipListSet_rcu_gpi_less_pascal)\
397     TEST_CASE(tag_SkipListSet, SkipListSet_rcu_gpi_cmp_pascal_stat)\
398     TEST_CASE(tag_SkipListSet, SkipListSet_rcu_gpi_less_xorshift)\
399     TEST_CASE(tag_SkipListSet, SkipListSet_rcu_gpi_cmp_xorshift_stat)\
400     TEST_CASE(tag_SkipListSet, SkipListSet_rcu_gpb_less_pascal)\
401     TEST_CASE(tag_SkipListSet, SkipListSet_rcu_gpb_cmp_pascal_stat)\
402     TEST_CASE(tag_SkipListSet, SkipListSet_rcu_gpb_less_xorshift)\
403     TEST_CASE(tag_SkipListSet, SkipListSet_rcu_gpb_cmp_xorshift_stat)\
404     TEST_CASE(tag_SkipListSet, SkipListSet_rcu_gpt_less_pascal)\
405     TEST_CASE(tag_SkipListSet, SkipListSet_rcu_gpt_cmp_pascal_stat)\
406     TEST_CASE(tag_SkipListSet, SkipListSet_rcu_gpt_less_xorshift)\
407     TEST_CASE(tag_SkipListSet, SkipListSet_rcu_gpt_cmp_xorshift_stat)\
408     CDSUNIT_DECLARE_SkipListSet_RCU_signal
409
410 #define CDSUNIT_TEST_SkipListSet \
411     CPPUNIT_TEST(SkipListSet_hp_less_pascal)\
412     CPPUNIT_TEST(SkipListSet_hp_cmp_pascal_stat)\
413     CPPUNIT_TEST(SkipListSet_hp_less_xorshift)\
414     CPPUNIT_TEST(SkipListSet_hp_cmp_xorshift_stat)\
415     CPPUNIT_TEST(SkipListSet_dhp_less_pascal)\
416     CPPUNIT_TEST(SkipListSet_dhp_cmp_pascal_stat)\
417     CPPUNIT_TEST(SkipListSet_dhp_less_xorshift)\
418     CPPUNIT_TEST(SkipListSet_dhp_cmp_xorshift_stat)\
419     CPPUNIT_TEST(SkipListSet_rcu_gpi_less_pascal)\
420     CPPUNIT_TEST(SkipListSet_rcu_gpi_cmp_pascal_stat)\
421     CPPUNIT_TEST(SkipListSet_rcu_gpi_less_xorshift)\
422     CPPUNIT_TEST(SkipListSet_rcu_gpi_cmp_xorshift_stat)\
423     CPPUNIT_TEST(SkipListSet_rcu_gpb_less_pascal)\
424     CPPUNIT_TEST(SkipListSet_rcu_gpb_cmp_pascal_stat)\
425     CPPUNIT_TEST(SkipListSet_rcu_gpb_less_xorshift)\
426     CPPUNIT_TEST(SkipListSet_rcu_gpb_cmp_xorshift_stat)\
427     CPPUNIT_TEST(SkipListSet_rcu_gpt_less_pascal)\
428     CPPUNIT_TEST(SkipListSet_rcu_gpt_cmp_pascal_stat)\
429     CPPUNIT_TEST(SkipListSet_rcu_gpt_less_xorshift)\
430     CPPUNIT_TEST(SkipListSet_rcu_gpt_cmp_xorshift_stat)\
431     CDSUNIT_TEST_SkipListSet_RCU_signal
432
433 //********************************************************************
434 // EllenBinTreeSet
435
436 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
437 #   define CDSUNIT_DECLARE_EllenBinTreeSet_RCU_signal \
438         TEST_CASE(tag_EllenBinTreeSet, EllenBinTreeSet_rcu_shb)\
439         TEST_CASE(tag_EllenBinTreeSet, EllenBinTreeSet_rcu_shb_stat)\
440         TEST_CASE(tag_EllenBinTreeSet, EllenBinTreeSet_rcu_sht)\
441         TEST_CASE(tag_EllenBinTreeSet, EllenBinTreeSet_rcu_sht_stat)
442
443 #   define CDSUNIT_TEST_EllenBinTreeSet_RCU_signal \
444         CPPUNIT_TEST(EllenBinTreeSet_rcu_shb)\
445         CPPUNIT_TEST(EllenBinTreeSet_rcu_shb_stat)\
446         CPPUNIT_TEST(EllenBinTreeSet_rcu_sht)\
447         CPPUNIT_TEST(EllenBinTreeSet_rcu_sht_stat)
448 #else
449 #   define CDSUNIT_DECLARE_EllenBinTreeSet_RCU_signal
450 #   define CDSUNIT_TEST_EllenBinTreeSet_RCU_signal
451 #endif
452
453 #define CDSUNIT_DECLARE_EllenBinTreeSet \
454     TEST_CASE(tag_EllenBinTreeSet, EllenBinTreeSet_hp)\
455     TEST_CASE(tag_EllenBinTreeSet, EllenBinTreeSet_yield_hp)\
456     TEST_CASE(tag_EllenBinTreeSet, EllenBinTreeSet_hp_stat)\
457     TEST_CASE(tag_EllenBinTreeSet, EllenBinTreeSet_dhp)\
458     TEST_CASE(tag_EllenBinTreeSet, EllenBinTreeSet_yield_dhp)\
459     TEST_CASE(tag_EllenBinTreeSet, EllenBinTreeSet_dhp_stat)\
460     TEST_CASE(tag_EllenBinTreeSet, EllenBinTreeSet_rcu_gpi)\
461     TEST_CASE(tag_EllenBinTreeSet, EllenBinTreeSet_rcu_gpi_stat)\
462     TEST_CASE(tag_EllenBinTreeSet, EllenBinTreeSet_rcu_gpb)\
463     TEST_CASE(tag_EllenBinTreeSet, EllenBinTreeSet_yield_rcu_gpb)\
464     TEST_CASE(tag_EllenBinTreeSet, EllenBinTreeSet_rcu_gpb_stat)\
465     TEST_CASE(tag_EllenBinTreeSet, EllenBinTreeSet_rcu_gpt)\
466     TEST_CASE(tag_EllenBinTreeSet, EllenBinTreeSet_rcu_gpt_stat)\
467     CDSUNIT_DECLARE_EllenBinTreeSet_RCU_signal
468
469 #define CDSUNIT_TEST_EllenBinTreeSet \
470     CPPUNIT_TEST(EllenBinTreeSet_hp)\
471     CPPUNIT_TEST(EllenBinTreeSet_yield_hp)\
472     CPPUNIT_TEST(EllenBinTreeSet_hp_stat)\
473     CPPUNIT_TEST(EllenBinTreeSet_dhp)\
474     CPPUNIT_TEST(EllenBinTreeSet_yield_dhp)\
475     CPPUNIT_TEST(EllenBinTreeSet_dhp_stat)\
476     CPPUNIT_TEST(EllenBinTreeSet_rcu_gpi)\
477     /*CPPUNIT_TEST(EllenBinTreeSet_rcu_gpi_stat)*/\
478     CPPUNIT_TEST(EllenBinTreeSet_rcu_gpb)\
479     CPPUNIT_TEST(EllenBinTreeSet_yield_rcu_gpb)\
480     CPPUNIT_TEST(EllenBinTreeSet_rcu_gpb_stat)\
481     CPPUNIT_TEST(EllenBinTreeSet_rcu_gpt)\
482     CPPUNIT_TEST(EllenBinTreeSet_rcu_gpt_stat)\
483     CDSUNIT_TEST_EllenBinTreeSet_RCU_signal
484
485 //********************************************************************
486 // StripedSet
487
488 #define CDSUNIT_DECLARE_StripedSet_common \
489     TEST_CASE( tag_StripedSet, StripedSet_list) \
490     TEST_CASE( tag_StripedSet, StripedSet_vector) \
491     TEST_CASE( tag_StripedSet, StripedSet_set) \
492     TEST_CASE( tag_StripedSet, StripedSet_hashset) \
493     TEST_CASE( tag_StripedSet, StripedSet_boost_unordered_set) \
494     TEST_CASE( tag_StripedSet, StripedSet_rational_list) \
495     TEST_CASE( tag_StripedSet, StripedSet_rational_vector) \
496     TEST_CASE( tag_StripedSet, StripedSet_rational_set) \
497     TEST_CASE( tag_StripedSet, StripedSet_rational_hashset) \
498     TEST_CASE( tag_StripedSet, StripedSet_rational_boost_unordered_set)
499
500 #define CDSUNIT_TEST_StripedSet_common \
501     CPPUNIT_TEST(StripedSet_list) \
502     CPPUNIT_TEST(StripedSet_vector) \
503     CPPUNIT_TEST(StripedSet_set) \
504     CPPUNIT_TEST(StripedSet_hashset) \
505     CPPUNIT_TEST(StripedSet_boost_unordered_set) \
506     CPPUNIT_TEST(StripedSet_rational_list) \
507     CPPUNIT_TEST(StripedSet_rational_vector) \
508     CPPUNIT_TEST(StripedSet_rational_set) \
509     CPPUNIT_TEST(StripedSet_rational_hashset) \
510     CPPUNIT_TEST(StripedSet_rational_boost_unordered_set)
511
512 #if BOOST_VERSION >= 104800
513 #   define CDSUNIT_DECLARE_StripedSet_boost_container \
514     TEST_CASE( tag_StripedSet, StripedSet_boost_list) \
515     TEST_CASE( tag_StripedSet, StripedSet_boost_slist) \
516     TEST_CASE( tag_StripedSet, StripedSet_boost_vector) \
517     TEST_CASE( tag_StripedSet, StripedSet_boost_stable_vector) \
518     TEST_CASE( tag_StripedSet, StripedSet_boost_set) \
519     TEST_CASE( tag_StripedSet, StripedSet_rational_boost_list) \
520     TEST_CASE( tag_StripedSet, StripedSet_rational_boost_slist) \
521     TEST_CASE( tag_StripedSet, StripedSet_rational_boost_vector) \
522     TEST_CASE( tag_StripedSet, StripedSet_rational_boost_stable_vector) \
523     TEST_CASE( tag_StripedSet, StripedSet_rational_boost_set)
524
525 #   define CDSUNIT_TEST_StripedSet_boost_container \
526     CPPUNIT_TEST(StripedSet_boost_list) \
527     CPPUNIT_TEST(StripedSet_boost_slist) \
528     CPPUNIT_TEST(StripedSet_boost_vector) \
529     CPPUNIT_TEST(StripedSet_boost_stable_vector) \
530     CPPUNIT_TEST(StripedSet_boost_set) \
531     CPPUNIT_TEST(StripedSet_rational_boost_list) \
532     CPPUNIT_TEST(StripedSet_rational_boost_slist) \
533     CPPUNIT_TEST(StripedSet_rational_boost_vector) \
534     CPPUNIT_TEST(StripedSet_rational_boost_stable_vector) \
535     CPPUNIT_TEST(StripedSet_rational_boost_set)
536 #else
537 #   define CDSUNIT_DECLARE_StripedSet_boost_container
538 #   define CDSUNIT_TEST_StripedSet_boost_container
539 #endif
540
541 #if BOOST_VERSION >= 104800 && defined(CDS_UNIT_SET_TYPES_ENABLE_BOOST_FLAT_CONTAINERS)
542 #   define CDSUNIT_DECLARE_StripedSet_boost_flat_container \
543     TEST_CASE( tag_StripedSet, StripedSet_boost_flat_set) \
544     TEST_CASE( tag_StripedSet, StripedSet_rational_boost_flat_set)
545
546 #   define CDSUNIT_TEST_StripedSet_boost_flat_container \
547     CPPUNIT_TEST(StripedSet_boost_flat_set) \
548     CPPUNIT_TEST(StripedSet_rational_boost_flat_set)
549 #else
550 #   define CDSUNIT_DECLARE_StripedSet_boost_flat_container
551 #   define CDSUNIT_TEST_StripedSet_boost_flat_container
552 #endif
553
554 #define CDSUNIT_DECLARE_StripedSet \
555     CDSUNIT_DECLARE_StripedSet_common \
556     CDSUNIT_DECLARE_StripedSet_boost_container \
557     CDSUNIT_DECLARE_StripedSet_boost_flat_container
558
559 #define CDSUNIT_TEST_StripedSet \
560     CDSUNIT_TEST_StripedSet_common \
561     CDSUNIT_TEST_StripedSet_boost_container \
562     CDSUNIT_TEST_StripedSet_boost_flat_container
563
564
565 #define CDSUNIT_DECLARE_RefinableSet_common \
566     TEST_CASE( tag_StripedSet, RefinableSet_list) \
567     TEST_CASE( tag_StripedSet, RefinableSet_vector) \
568     TEST_CASE( tag_StripedSet, RefinableSet_set) \
569     TEST_CASE( tag_StripedSet, RefinableSet_hashset) \
570     TEST_CASE( tag_StripedSet, RefinableSet_boost_unordered_set) \
571     TEST_CASE( tag_StripedSet, RefinableSet_rational_list) \
572     TEST_CASE( tag_StripedSet, RefinableSet_rational_vector) \
573     TEST_CASE( tag_StripedSet, RefinableSet_rational_set) \
574     TEST_CASE( tag_StripedSet, RefinableSet_rational_hashset) \
575     TEST_CASE( tag_StripedSet, RefinableSet_rational_boost_unordered_set)
576
577
578 //********************************************************************
579 // RefinableSet
580
581 #define CDSUNIT_TEST_RefinableSet_common \
582     CPPUNIT_TEST(RefinableSet_list) \
583     CPPUNIT_TEST(RefinableSet_vector) \
584     CPPUNIT_TEST(RefinableSet_set) \
585     CPPUNIT_TEST(RefinableSet_hashset) \
586     CPPUNIT_TEST(RefinableSet_boost_unordered_set) \
587     CPPUNIT_TEST(RefinableSet_rational_list) \
588     CPPUNIT_TEST(RefinableSet_rational_vector) \
589     CPPUNIT_TEST(RefinableSet_rational_set) \
590     CPPUNIT_TEST(RefinableSet_rational_hashset) \
591     CPPUNIT_TEST(RefinableSet_rational_boost_unordered_set)
592
593 #if BOOST_VERSION >= 104800
594 #   define CDSUNIT_DECLARE_RefinableSet_boost_container \
595     TEST_CASE( tag_StripedSet, RefinableSet_boost_list) \
596     TEST_CASE( tag_StripedSet, RefinableSet_boost_slist) \
597     TEST_CASE( tag_StripedSet, RefinableSet_boost_vector) \
598     TEST_CASE( tag_StripedSet, RefinableSet_boost_stable_vector) \
599     TEST_CASE( tag_StripedSet, RefinableSet_boost_set) \
600     TEST_CASE( tag_StripedSet, RefinableSet_rational_boost_list) \
601     TEST_CASE( tag_StripedSet, RefinableSet_rational_boost_slist) \
602     TEST_CASE( tag_StripedSet, RefinableSet_rational_boost_vector) \
603     TEST_CASE( tag_StripedSet, RefinableSet_rational_boost_stable_vector) \
604     TEST_CASE( tag_StripedSet, RefinableSet_rational_boost_set)
605
606 #   define CDSUNIT_TEST_RefinableSet_boost_container \
607     CPPUNIT_TEST(RefinableSet_boost_list) \
608     CPPUNIT_TEST(RefinableSet_boost_slist) \
609     CPPUNIT_TEST(RefinableSet_boost_vector) \
610     CPPUNIT_TEST(RefinableSet_boost_stable_vector) \
611     CPPUNIT_TEST(RefinableSet_boost_set) \
612     CPPUNIT_TEST(RefinableSet_rational_boost_list) \
613     CPPUNIT_TEST(RefinableSet_rational_boost_slist) \
614     CPPUNIT_TEST(RefinableSet_rational_boost_vector) \
615     CPPUNIT_TEST(RefinableSet_rational_boost_stable_vector) \
616     CPPUNIT_TEST(RefinableSet_rational_boost_set)
617 #else
618 #   define CDSUNIT_DECLARE_RefinableSet_boost_container
619 #   define CDSUNIT_TEST_RefinableSet_boost_container
620 #endif
621
622 #if BOOST_VERSION >= 104800 && defined(CDS_UNIT_SET_TYPES_ENABLE_BOOST_FLAT_CONTAINERS)
623 #   define CDSUNIT_DECLARE_RefinableSet_boost_flat_container \
624     TEST_CASE( tag_StripedSet, RefinableSet_boost_flat_set) \
625     TEST_CASE( tag_StripedSet, RefinableSet_rational_boost_flat_set)
626
627 #   define CDSUNIT_TEST_RefinableSet_boost_flat_container \
628     CPPUNIT_TEST(RefinableSet_boost_flat_set) \
629     CPPUNIT_TEST(RefinableSet_rational_boost_flat_set)
630 #else
631 #   define CDSUNIT_DECLARE_RefinableSet_boost_flat_container
632 #   define CDSUNIT_TEST_RefinableSet_boost_flat_container
633 #endif
634
635 #define CDSUNIT_DECLARE_RefinableSet \
636     CDSUNIT_DECLARE_RefinableSet_common \
637     CDSUNIT_DECLARE_RefinableSet_boost_container \
638     CDSUNIT_DECLARE_RefinableSet_boost_flat_container
639
640 #define CDSUNIT_TEST_RefinableSet \
641     CDSUNIT_TEST_RefinableSet_common \
642     CDSUNIT_TEST_RefinableSet_boost_container \
643     CDSUNIT_TEST_RefinableSet_boost_flat_container
644
645
646 //***********************************************
647 // FeldmanHashSet
648
649 // For fixed-sized key - no hash function is needed
650
651 #undef CDSUNIT_DECLARE_FeldmanHashSet_fixed
652 #undef CDSUNIT_DECLARE_FeldmanHashSet_fixed_RCU_signal
653 #undef CDSUNIT_TEST_FeldmanHashSet_fixed
654 #undef CDSUNIT_TEST_FeldmanHashSet_fixed_RCU_signal
655
656 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
657 #   define CDSUNIT_DECLARE_FeldmanHashSet_fixed_RCU_signal  \
658         TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_shb_fixed) \
659         TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_shb_fixed_stat) \
660         TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_sht_fixed) \
661         TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_sht_fixed_stat) \
662
663 #   define CDSUNIT_TEST_FeldmanHashSet_fixed_RCU_signal \
664         TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_shb_fixed) \
665         TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_shb_fixed_stat) \
666         TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_sht_fixed) \
667         TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_sht_fixed_stat) \
668
669 #else
670 #   define CDSUNIT_DECLARE_FeldmanHashSet_fixed_RCU_signal
671 #   define CDSUNIT_TEST_FeldmanHashSet_fixed_RCU_signal
672 #endif
673
674 #define CDSUNIT_DECLARE_FeldmanHashSet_fixed  \
675     TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_hp_fixed) \
676     TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_hp_fixed_stat) \
677     TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_dhp_fixed) \
678     TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_dhp_fixed_stat) \
679     TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_gpi_fixed) \
680     TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_gpi_fixed_stat) \
681     TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_gpb_fixed) \
682     TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_gpb_fixed_stat) \
683     TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_gpt_fixed) \
684     TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_gpt_fixed_stat) \
685     CDSUNIT_DECLARE_FeldmanHashSet_fixed_RCU_signal
686
687 #define CDSUNIT_TEST_FeldmanHashSet_fixed  \
688     CPPUNIT_TEST(FeldmanHashSet_hp_fixed) \
689     CPPUNIT_TEST(FeldmanHashSet_hp_fixed_stat) \
690     CPPUNIT_TEST(FeldmanHashSet_dhp_fixed) \
691     CPPUNIT_TEST(FeldmanHashSet_dhp_fixed_stat) \
692     CPPUNIT_TEST(FeldmanHashSet_rcu_gpi_fixed) \
693     CPPUNIT_TEST(FeldmanHashSet_rcu_gpi_fixed_stat) \
694     CPPUNIT_TEST(FeldmanHashSet_rcu_gpb_fixed) \
695     CPPUNIT_TEST(FeldmanHashSet_rcu_gpb_fixed_stat) \
696     CPPUNIT_TEST(FeldmanHashSet_rcu_gpt_fixed) \
697     CPPUNIT_TEST(FeldmanHashSet_rcu_gpt_fixed_stat) \
698     CDSUNIT_TEST_FeldmanHashSet_fixed_RCU_signal
699
700 // std::hash
701 #undef CDSUNIT_DECLARE_FeldmanHashSet_stdhash
702 #undef CDSUNIT_DECLARE_FeldmanHashSet_stdhash_RCU_signal
703 #undef CDSUNIT_TEST_FeldmanHashSet_stdhash
704 #undef CDSUNIT_TEST_FeldmanHashSet_stdhash_RCU_signal
705
706 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
707 #   define CDSUNIT_DECLARE_FeldmanHashSet_stdhash_RCU_signal  \
708         TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_shb_stdhash) \
709         TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_shb_stdhash_stat) \
710         TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_sht_stdhash) \
711         TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_sht_stdhash_stat) \
712
713 #   define CDSUNIT_TEST_FeldmanHashSet_stdhash_RCU_signal \
714         TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_shb_stdhash) \
715         TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_shb_stdhash_stat) \
716         TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_sht_stdhash) \
717         TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_sht_stdhash_stat) \
718
719 #else
720 #   define CDSUNIT_DECLARE_FeldmanHashSet_stdhash_RCU_signal
721 #   define CDSUNIT_TEST_FeldmanHashSet_stdhash_RCU_signal
722 #endif
723
724 #define CDSUNIT_DECLARE_FeldmanHashSet_stdhash  \
725     TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_hp_stdhash) \
726     TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_hp_stdhash_stat) \
727     TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_dhp_stdhash) \
728     TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_dhp_stdhash_stat) \
729     TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_gpi_stdhash) \
730     TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_gpi_stdhash_stat) \
731     TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_gpb_stdhash) \
732     TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_gpb_stdhash_stat) \
733     TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_gpt_stdhash) \
734     TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_gpt_stdhash_stat) \
735     CDSUNIT_DECLARE_FeldmanHashSet_stdhash_RCU_signal
736
737 #define CDSUNIT_TEST_FeldmanHashSet_stdhash  \
738     CPPUNIT_TEST(FeldmanHashSet_hp_stdhash) \
739     CPPUNIT_TEST(FeldmanHashSet_hp_stdhash_stat) \
740     CPPUNIT_TEST(FeldmanHashSet_dhp_stdhash) \
741     CPPUNIT_TEST(FeldmanHashSet_dhp_stdhash_stat) \
742     CPPUNIT_TEST(FeldmanHashSet_rcu_gpi_stdhash) \
743     CPPUNIT_TEST(FeldmanHashSet_rcu_gpi_stdhash_stat) \
744     CPPUNIT_TEST(FeldmanHashSet_rcu_gpb_stdhash) \
745     CPPUNIT_TEST(FeldmanHashSet_rcu_gpb_stdhash_stat) \
746     CPPUNIT_TEST(FeldmanHashSet_rcu_gpt_stdhash) \
747     CPPUNIT_TEST(FeldmanHashSet_rcu_gpt_stdhash_stat) \
748     CDSUNIT_TEST_FeldmanHashSet_stdhash_RCU_signal
749
750
751 // CityHash -only for 64bit
752
753 #undef CDSUNIT_DECLARE_FeldmanHashSet_city
754 #undef CDSUNIT_DECLARE_FeldmanHashSet_city_RCU_signal
755 #undef CDSUNIT_TEST_FeldmanHashSet_city
756 #undef CDSUNIT_TEST_FeldmanHashSet_city_RCU_signal
757
758 #if CDS_BUILD_BITS == 64
759
760 #ifdef CDS_URCU_SIGNAL_HANDLING_ENABLED
761 #   define CDSUNIT_DECLARE_FeldmanHashSet_city_RCU_signal  \
762         TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_shb_city64) \
763         TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_shb_city64_stat) \
764         TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_sht_city64) \
765         TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_sht_city64_stat) \
766         TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_shb_city128) \
767         TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_shb_city128_stat) \
768         TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_sht_city128) \
769         TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_sht_city128_stat) \
770
771 #   define CDSUNIT_TEST_FeldmanHashSet_city_RCU_signal \
772         TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_shb_city64) \
773         TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_shb_city64_stat) \
774         TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_sht_city64) \
775         TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_sht_city64_stat) \
776         TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_shb_city128) \
777         TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_shb_city128_stat) \
778         TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_sht_city128) \
779         TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_sht_city128_stat) \
780
781 #else
782 #   define CDSUNIT_DECLARE_FeldmanHashSet_city_RCU_signal
783 #   define CDSUNIT_TEST_FeldmanHashSet_city_RCU_signal
784 #endif
785
786 #define CDSUNIT_DECLARE_FeldmanHashSet_city  \
787     TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_hp_city64) \
788     TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_hp_city64_stat) \
789     TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_dhp_city64) \
790     TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_dhp_city64_stat) \
791     TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_gpi_city64) \
792     TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_gpi_city64_stat) \
793     TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_gpb_city64) \
794     TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_gpb_city64_stat) \
795     TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_gpt_city64) \
796     TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_gpt_city64_stat) \
797     TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_hp_city128) \
798     TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_hp_city128_stat) \
799     TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_dhp_city128) \
800     TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_dhp_city128_stat) \
801     TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_gpi_city128) \
802     TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_gpi_city128_stat) \
803     TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_gpb_city128) \
804     TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_gpb_city128_stat) \
805     TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_gpt_city128) \
806     TEST_CASE(tag_FeldmanHashSet, FeldmanHashSet_rcu_gpt_city128_stat) \
807     CDSUNIT_DECLARE_FeldmanHashSet_city_RCU_signal
808
809 #define CDSUNIT_TEST_FeldmanHashSet_city  \
810     CPPUNIT_TEST(FeldmanHashSet_hp_city64) \
811     CPPUNIT_TEST(FeldmanHashSet_hp_city64_stat) \
812     CPPUNIT_TEST(FeldmanHashSet_dhp_city64) \
813     CPPUNIT_TEST(FeldmanHashSet_dhp_city64_stat) \
814     CPPUNIT_TEST(FeldmanHashSet_rcu_gpi_city64) \
815     CPPUNIT_TEST(FeldmanHashSet_rcu_gpi_city64_stat) \
816     CPPUNIT_TEST(FeldmanHashSet_rcu_gpb_city64) \
817     CPPUNIT_TEST(FeldmanHashSet_rcu_gpb_city64_stat) \
818     CPPUNIT_TEST(FeldmanHashSet_rcu_gpt_city64) \
819     CPPUNIT_TEST(FeldmanHashSet_rcu_gpt_city64_stat) \
820     CPPUNIT_TEST(FeldmanHashSet_hp_city128) \
821     CPPUNIT_TEST(FeldmanHashSet_hp_city128_stat) \
822     CPPUNIT_TEST(FeldmanHashSet_dhp_city128) \
823     CPPUNIT_TEST(FeldmanHashSet_dhp_city128_stat) \
824     CPPUNIT_TEST(FeldmanHashSet_rcu_gpi_city128) \
825     CPPUNIT_TEST(FeldmanHashSet_rcu_gpi_city128_stat) \
826     CPPUNIT_TEST(FeldmanHashSet_rcu_gpb_city128) \
827     CPPUNIT_TEST(FeldmanHashSet_rcu_gpb_city128_stat) \
828     CPPUNIT_TEST(FeldmanHashSet_rcu_gpt_city128) \
829     CPPUNIT_TEST(FeldmanHashSet_rcu_gpt_city128_stat) \
830     CDSUNIT_TEST_FeldmanHashSet_city_RCU_signal
831
832 #else
833 #   define CDSUNIT_DECLARE_FeldmanHashSet_city
834 #   define CDSUNIT_DECLARE_FeldmanHashSet_city_RCU_signal
835 #   define CDSUNIT_TEST_FeldmanHashSet_city
836 #   define CDSUNIT_TEST_FeldmanHashSet_city_RCU_signal
837 #endif // CDS_BUILD_BITS == 64
838
839
840 // All
841
842 #define CDSUNIT_DECLARE_FeldmanHashSet \
843     CDSUNIT_DECLARE_FeldmanHashSet_fixed \
844     CDSUNIT_DECLARE_FeldmanHashSet_stdhash \
845     CDSUNIT_DECLARE_FeldmanHashSet_city
846
847 #define CDSUNIT_TEST_FeldmanHashSet \
848     CDSUNIT_TEST_FeldmanHashSet_fixed \
849     CDSUNIT_TEST_FeldmanHashSet_stdhash \
850     CDSUNIT_TEST_FeldmanHashSet_city