Move cds/intrusive/base.h to cds/intrusive/details directory
[libcds.git] / tests / test-hdr / queue / hdr_intrusive_msqueue.h
1 //$$CDS-header$$
2
3 #include "cppunit/cppunit_proxy.h"
4 #include <cds/intrusive/details/base.h>
5
6 namespace queue {
7     namespace ci = cds::intrusive;
8     namespace co = cds::opt;
9
10     class IntrusiveQueueHeaderTest: public CppUnitMini::TestCase
11     {
12     public:
13
14         struct faked_disposer
15         {
16             template <typename T>
17             void operator ()( T * p )
18             {
19                 ++p->nDisposeCount;
20             }
21         };
22
23
24         // Test for MSQueue and derivatives
25         template <class Queue>
26         void test()
27         {
28             typedef typename Queue::value_type value_type;
29             value_type v1, v2, v3;
30
31             {
32                 Queue q;
33                 CPPUNIT_ASSERT( q.empty() );
34
35                 v1.nVal = 1;
36                 v2.nVal = 2;
37                 v3.nVal = 3;
38                 CPPUNIT_ASSERT( q.push(v1));
39                 CPPUNIT_ASSERT( !q.empty() );
40                 CPPUNIT_ASSERT( q.push(v2));
41                 CPPUNIT_ASSERT( !q.empty() );
42                 CPPUNIT_ASSERT( q.push(v3));
43                 CPPUNIT_ASSERT( !q.empty() );
44
45                 CPPUNIT_CHECK( v1.nDisposeCount == 0 );
46                 CPPUNIT_CHECK( v2.nDisposeCount == 0 );
47                 CPPUNIT_CHECK( v3.nDisposeCount == 0 );
48
49                 value_type * pv;
50                 pv = q.pop();
51                 Queue::gc::scan();
52                 CPPUNIT_ASSERT( pv != nullptr );
53                 CPPUNIT_ASSERT( pv->nVal == 1 );
54                 CPPUNIT_ASSERT( !q.empty() );
55                 CPPUNIT_CHECK( v1.nDisposeCount == 0 );
56                 CPPUNIT_CHECK( v2.nDisposeCount == 0 );
57                 CPPUNIT_CHECK( v3.nDisposeCount == 0 );
58
59                 pv = q.pop();
60                 Queue::gc::scan();
61                 CPPUNIT_ASSERT( pv != nullptr );
62                 CPPUNIT_ASSERT( pv->nVal == 2 );
63                 CPPUNIT_ASSERT( !q.empty() );
64                 CPPUNIT_CHECK( v1.nDisposeCount == 1 );
65                 CPPUNIT_CHECK( v2.nDisposeCount == 0 );
66                 CPPUNIT_CHECK( v3.nDisposeCount == 0 );
67
68                 pv = q.pop();
69                 Queue::gc::scan();
70                 CPPUNIT_ASSERT( pv != nullptr );
71                 CPPUNIT_ASSERT( pv->nVal == 3 );
72                 CPPUNIT_ASSERT( q.empty() );
73                 CPPUNIT_CHECK( v1.nDisposeCount == 1 );
74                 CPPUNIT_CHECK( v2.nDisposeCount == 1 );
75                 CPPUNIT_CHECK( v3.nDisposeCount == 0 );
76
77                 pv = q.pop();
78                 CPPUNIT_ASSERT( pv == nullptr );
79                 CPPUNIT_CHECK( v1.nDisposeCount == 1 );
80                 CPPUNIT_CHECK( v2.nDisposeCount == 1 );
81                 CPPUNIT_CHECK( v3.nDisposeCount == 0 );
82             }
83
84             Queue::gc::scan();
85             CPPUNIT_CHECK( v1.nDisposeCount == 1 );
86             CPPUNIT_CHECK( v2.nDisposeCount == 1 );
87             CPPUNIT_CHECK( v3.nDisposeCount == 1 );
88         }
89
90         // Test for BasketQueue and derivatives
91         template <class Queue>
92         void test_basket()
93         {
94             typedef typename Queue::value_type value_type;
95             value_type v1, v2, v3, v4;
96
97             {
98                 Queue q;
99                 CPPUNIT_ASSERT( q.empty() );
100
101                 v1.nVal = 1;
102                 v2.nVal = 2;
103                 v3.nVal = 3;
104                 v4.nVal = 4;
105                 CPPUNIT_ASSERT( q.push(v1));
106                 CPPUNIT_ASSERT( !q.empty() );
107                 CPPUNIT_ASSERT( q.push(v2));
108                 CPPUNIT_ASSERT( !q.empty() );
109                 CPPUNIT_ASSERT( q.push(v3));
110                 CPPUNIT_ASSERT( !q.empty() );
111                 CPPUNIT_ASSERT( q.push(v4));
112                 CPPUNIT_ASSERT( !q.empty() );
113
114                 CPPUNIT_CHECK( v1.nDisposeCount == 0 );
115                 CPPUNIT_CHECK( v2.nDisposeCount == 0 );
116                 CPPUNIT_CHECK( v3.nDisposeCount == 0 );
117                 CPPUNIT_CHECK( v4.nDisposeCount == 0 );
118
119                 value_type * pv;
120                 pv = q.pop();
121                 Queue::gc::scan();
122                 CPPUNIT_ASSERT( pv != nullptr );
123                 CPPUNIT_ASSERT( pv->nVal == 1 );
124                 CPPUNIT_ASSERT( !q.empty() );
125                 CPPUNIT_CHECK( v1.nDisposeCount == 0 );
126                 CPPUNIT_CHECK( v2.nDisposeCount == 0 );
127                 CPPUNIT_CHECK( v3.nDisposeCount == 0 );
128                 CPPUNIT_CHECK( v4.nDisposeCount == 0 );
129
130                 pv = q.pop();
131                 Queue::gc::scan();
132                 CPPUNIT_ASSERT( pv != nullptr );
133                 CPPUNIT_ASSERT( pv->nVal == 2 );
134                 CPPUNIT_ASSERT( !q.empty() );
135                 CPPUNIT_CHECK( v1.nDisposeCount == 0 );
136                 CPPUNIT_CHECK( v2.nDisposeCount == 0 );
137                 CPPUNIT_CHECK( v3.nDisposeCount == 0 );
138                 CPPUNIT_CHECK( v4.nDisposeCount == 0 );
139
140                 pv = q.pop();
141                 Queue::gc::scan();
142                 CPPUNIT_ASSERT( pv != nullptr );
143                 CPPUNIT_ASSERT( pv->nVal == 3 );
144                 CPPUNIT_ASSERT( !q.empty() );
145                 CPPUNIT_CHECK( v1.nDisposeCount == 0 );
146                 CPPUNIT_CHECK( v2.nDisposeCount == 0 );
147                 CPPUNIT_CHECK( v3.nDisposeCount == 0 );
148                 CPPUNIT_CHECK( v4.nDisposeCount == 0 );
149
150                 pv = q.pop();
151                 Queue::gc::scan();
152                 CPPUNIT_ASSERT( pv != nullptr );
153                 CPPUNIT_ASSERT( pv->nVal == 4 );
154                 CPPUNIT_ASSERT( q.empty() );
155                 CPPUNIT_CHECK( v1.nDisposeCount == 1 );
156                 CPPUNIT_CHECK( v2.nDisposeCount == 1 );
157                 CPPUNIT_CHECK( v3.nDisposeCount == 1 );
158                 CPPUNIT_CHECK( v4.nDisposeCount == 0 );
159
160                 pv = q.pop();
161                 Queue::gc::scan();
162                 CPPUNIT_CHECK( pv == nullptr );
163                 CPPUNIT_CHECK( v1.nDisposeCount == 1 );
164                 CPPUNIT_CHECK( v2.nDisposeCount == 1 );
165                 CPPUNIT_CHECK( v3.nDisposeCount == 1 );
166                 CPPUNIT_CHECK( v4.nDisposeCount == 0 );
167             }
168
169             Queue::gc::scan();
170             CPPUNIT_CHECK( v1.nDisposeCount == 1 );
171             CPPUNIT_CHECK( v2.nDisposeCount == 1 );
172             CPPUNIT_CHECK( v3.nDisposeCount == 1 );
173             CPPUNIT_CHECK( v4.nDisposeCount == 1 );
174         }
175
176         // Test for a queue in what dequeued item should be manually disposed
177         template <class Queue>
178         void test2()
179         {
180             typedef typename Queue::value_type value_type;
181             value_type v1, v2, v3;
182             Queue q;
183             CPPUNIT_ASSERT( q.empty() );
184
185             v1.nVal = 1;
186             v2.nVal = 2;
187             v3.nVal = 3;
188             CPPUNIT_ASSERT( q.push(v1));
189             CPPUNIT_ASSERT( !q.empty() );
190             CPPUNIT_ASSERT( q.push(v2));
191             CPPUNIT_ASSERT( !q.empty() );
192             CPPUNIT_ASSERT( q.push(v3));
193             CPPUNIT_ASSERT( !q.empty() );
194
195             CPPUNIT_CHECK( v1.nDisposeCount == 0 );
196             CPPUNIT_CHECK( v2.nDisposeCount == 0 );
197             CPPUNIT_CHECK( v3.nDisposeCount == 0 );
198
199             value_type * pv;
200             pv = q.pop();
201             CPPUNIT_ASSERT( pv != nullptr );
202             CPPUNIT_ASSERT( pv->nVal == 1 );
203             CPPUNIT_ASSERT( !q.empty() );
204             CPPUNIT_CHECK( v1.nDisposeCount == 0 );
205             CPPUNIT_CHECK( v2.nDisposeCount == 0 );
206             CPPUNIT_CHECK( v3.nDisposeCount == 0 );
207
208             pv = q.pop();
209             CPPUNIT_ASSERT( pv != nullptr );
210             CPPUNIT_ASSERT( pv->nVal == 2 );
211             CPPUNIT_ASSERT( !q.empty() );
212             CPPUNIT_CHECK( v1.nDisposeCount == 0 );
213             CPPUNIT_CHECK( v2.nDisposeCount == 0 );
214             CPPUNIT_CHECK( v3.nDisposeCount == 0 );
215
216             pv = q.pop();
217             CPPUNIT_ASSERT( pv != nullptr );
218             CPPUNIT_ASSERT( pv->nVal == 3 );
219             CPPUNIT_ASSERT( q.empty() );
220             CPPUNIT_CHECK( v1.nDisposeCount == 0 );
221             CPPUNIT_CHECK( v2.nDisposeCount == 0 );
222             CPPUNIT_CHECK( v3.nDisposeCount == 0 );
223
224             pv = q.pop();
225             CPPUNIT_ASSERT( pv == nullptr );
226             CPPUNIT_CHECK( v1.nDisposeCount == 0 );
227             CPPUNIT_CHECK( v2.nDisposeCount == 0 );
228             CPPUNIT_CHECK( v3.nDisposeCount == 0 );
229
230             CPPUNIT_ASSERT( q.push(v1));
231             CPPUNIT_ASSERT( !q.empty() );
232             CPPUNIT_ASSERT( q.push(v2));
233             CPPUNIT_ASSERT( !q.empty() );
234             CPPUNIT_ASSERT( q.push(v3));
235             CPPUNIT_ASSERT( !q.empty() );
236
237             CPPUNIT_CHECK( v1.nDisposeCount == 0 );
238             CPPUNIT_CHECK( v2.nDisposeCount == 0 );
239             CPPUNIT_CHECK( v3.nDisposeCount == 0 );
240             q.clear();
241             CPPUNIT_CHECK( q.empty() );
242             CPPUNIT_CHECK( v1.nDisposeCount == 1 );
243             CPPUNIT_CHECK( v2.nDisposeCount == 1 );
244             CPPUNIT_CHECK( v3.nDisposeCount == 1 );
245         }
246
247
248         void test_MSQueue_HP_default();
249         void test_MSQueue_HP_default_ic();
250         void test_MSQueue_HP_default_stat();
251         void test_MSQueue_HP_base();
252         void test_MSQueue_HP_member();
253         void test_MSQueue_HP_base_ic();
254         void test_MSQueue_HP_member_ic();
255         void test_MSQueue_HP_base_stat();
256         void test_MSQueue_HP_member_stat();
257         void test_MSQueue_HP_base_align();
258         void test_MSQueue_HP_member_align();
259         void test_MSQueue_HP_base_noalign();
260         void test_MSQueue_HP_member_noalign();
261         void test_MSQueue_HP_base_cachealign();
262         void test_MSQueue_HP_member_cachealign();
263         void test_MSQueue_HRC_base();
264         void test_MSQueue_HRC_base_ic();
265         void test_MSQueue_HRC_base_stat();
266         void test_MSQueue_HRC_base_align();
267         void test_MSQueue_PTB_base();
268         void test_MSQueue_PTB_member();
269         void test_MSQueue_PTB_base_ic();
270         void test_MSQueue_PTB_member_ic();
271         void test_MSQueue_PTB_base_stat();
272         void test_MSQueue_PTB_member_stat();
273         void test_MSQueue_PTB_base_align();
274         void test_MSQueue_PTB_member_align();
275         void test_MSQueue_PTB_base_noalign();
276         void test_MSQueue_PTB_member_noalign();
277         void test_MSQueue_PTB_base_cachealign();
278         void test_MSQueue_PTB_member_cachealign();
279
280         void test_MoirQueue_HP_default();
281         void test_MoirQueue_HP_default_ic();
282         void test_MoirQueue_HP_default_stat();
283         void test_MoirQueue_HP_base();
284         void test_MoirQueue_HP_member();
285         void test_MoirQueue_HP_base_ic();
286         void test_MoirQueue_HP_member_ic();
287         void test_MoirQueue_HP_base_stat();
288         void test_MoirQueue_HP_member_stat();
289         void test_MoirQueue_HP_base_align();
290         void test_MoirQueue_HP_member_align();
291         void test_MoirQueue_HP_base_noalign();
292         void test_MoirQueue_HP_member_noalign();
293         void test_MoirQueue_HP_base_cachealign();
294         void test_MoirQueue_HP_member_cachealign();
295         void test_MoirQueue_HRC_base();
296         void test_MoirQueue_HRC_base_ic();
297         void test_MoirQueue_HRC_base_stat();
298         void test_MoirQueue_HRC_base_align();
299         void test_MoirQueue_PTB_base();
300         void test_MoirQueue_PTB_member();
301         void test_MoirQueue_PTB_base_ic();
302         void test_MoirQueue_PTB_member_ic();
303         void test_MoirQueue_PTB_base_stat();
304         void test_MoirQueue_PTB_member_stat();
305         void test_MoirQueue_PTB_base_align();
306         void test_MoirQueue_PTB_member_align();
307         void test_MoirQueue_PTB_base_noalign();
308         void test_MoirQueue_PTB_member_noalign();
309         void test_MoirQueue_PTB_base_cachealign();
310         void test_MoirQueue_PTB_member_cachealign();
311
312         void test_OptimisticQueue_HP_default();
313         void test_OptimisticQueue_HP_default_ic();
314         void test_OptimisticQueue_HP_default_stat();
315         void test_OptimisticQueue_HP_base();
316         void test_OptimisticQueue_HP_member();
317         void test_OptimisticQueue_HP_base_ic();
318         void test_OptimisticQueue_HP_member_ic();
319         void test_OptimisticQueue_HP_base_stat();
320         void test_OptimisticQueue_HP_member_stat();
321         void test_OptimisticQueue_HP_base_align();
322         void test_OptimisticQueue_HP_member_align();
323         void test_OptimisticQueue_HP_base_noalign();
324         void test_OptimisticQueue_HP_member_noalign();
325         void test_OptimisticQueue_HP_base_cachealign();
326         void test_OptimisticQueue_HP_member_cachealign();
327         void test_OptimisticQueue_PTB_base();
328         void test_OptimisticQueue_PTB_member();
329         void test_OptimisticQueue_PTB_base_ic();
330         void test_OptimisticQueue_PTB_member_ic();
331         void test_OptimisticQueue_PTB_base_stat();
332         void test_OptimisticQueue_PTB_member_stat();
333         void test_OptimisticQueue_PTB_base_align();
334         void test_OptimisticQueue_PTB_member_align();
335         void test_OptimisticQueue_PTB_base_noalign();
336         void test_OptimisticQueue_PTB_member_noalign();
337         void test_OptimisticQueue_PTB_base_cachealign();
338         void test_OptimisticQueue_PTB_member_cachealign();
339
340         void test_BasketQueue_HP_default();
341         void test_BasketQueue_HP_default_ic();
342         void test_BasketQueue_HP_default_stat();
343         void test_BasketQueue_HP_base();
344         void test_BasketQueue_HP_member();
345         void test_BasketQueue_HP_base_ic();
346         void test_BasketQueue_HP_member_ic();
347         void test_BasketQueue_HP_base_stat();
348         void test_BasketQueue_HP_member_stat();
349         void test_BasketQueue_HP_base_align();
350         void test_BasketQueue_HP_member_align();
351         void test_BasketQueue_HP_base_noalign();
352         void test_BasketQueue_HP_member_noalign();
353         void test_BasketQueue_HP_base_cachealign();
354         void test_BasketQueue_HP_member_cachealign();
355         void test_BasketQueue_HRC_base();
356         void test_BasketQueue_HRC_base_ic();
357         void test_BasketQueue_HRC_base_stat();
358         void test_BasketQueue_HRC_base_align();
359         void test_BasketQueue_PTB_base();
360         void test_BasketQueue_PTB_member();
361         void test_BasketQueue_PTB_base_ic();
362         void test_BasketQueue_PTB_member_ic();
363         void test_BasketQueue_PTB_base_stat();
364         void test_BasketQueue_PTB_member_stat();
365         void test_BasketQueue_PTB_base_align();
366         void test_BasketQueue_PTB_member_align();
367         void test_BasketQueue_PTB_base_noalign();
368         void test_BasketQueue_PTB_member_noalign();
369         void test_BasketQueue_PTB_base_cachealign();
370         void test_BasketQueue_PTB_member_cachealign();
371
372         void test_TsigasCycleQueue_stat();
373         void test_TsigasCycleQueue_stat_ic();
374         void test_TsigasCycleQueue_dyn();
375         void test_TsigasCycleQueue_dyn_ic();
376
377         void test_VyukovMPMCCycleQueue_stat();
378         void test_VyukovMPMCCycleQueue_stat_ic();
379         void test_VyukovMPMCCycleQueue_dyn();
380         void test_VyukovMPMCCycleQueue_dyn_ic();
381
382         CPPUNIT_TEST_SUITE(IntrusiveQueueHeaderTest)
383             CPPUNIT_TEST(test_MSQueue_HP_default)
384             CPPUNIT_TEST(test_MSQueue_HP_default_ic)
385             CPPUNIT_TEST(test_MSQueue_HP_default_stat)
386             CPPUNIT_TEST(test_MSQueue_HP_base)
387             CPPUNIT_TEST(test_MSQueue_HP_member)
388             CPPUNIT_TEST(test_MSQueue_HP_base_ic)
389             CPPUNIT_TEST(test_MSQueue_HP_member_ic)
390             CPPUNIT_TEST(test_MSQueue_HP_base_stat)
391             CPPUNIT_TEST(test_MSQueue_HP_member_stat)
392             CPPUNIT_TEST(test_MSQueue_HP_base_align)
393             CPPUNIT_TEST(test_MSQueue_HP_member_align)
394             CPPUNIT_TEST(test_MSQueue_HP_base_noalign)
395             CPPUNIT_TEST(test_MSQueue_HP_member_noalign)
396             CPPUNIT_TEST(test_MSQueue_HP_base_cachealign)
397             CPPUNIT_TEST(test_MSQueue_HP_member_cachealign)
398             CPPUNIT_TEST(test_MSQueue_HRC_base)
399             CPPUNIT_TEST(test_MSQueue_HRC_base_ic)
400             CPPUNIT_TEST(test_MSQueue_HRC_base_stat)
401             CPPUNIT_TEST(test_MSQueue_HRC_base_align)
402             CPPUNIT_TEST(test_MSQueue_PTB_base)
403             CPPUNIT_TEST(test_MSQueue_PTB_member)
404             CPPUNIT_TEST(test_MSQueue_PTB_base_ic)
405             CPPUNIT_TEST(test_MSQueue_PTB_member_ic)
406             CPPUNIT_TEST(test_MSQueue_PTB_base_stat)
407             CPPUNIT_TEST(test_MSQueue_PTB_member_stat)
408             CPPUNIT_TEST(test_MSQueue_PTB_base_align)
409             CPPUNIT_TEST(test_MSQueue_PTB_member_align)
410             CPPUNIT_TEST(test_MSQueue_PTB_base_noalign)
411             CPPUNIT_TEST(test_MSQueue_PTB_member_noalign)
412             CPPUNIT_TEST(test_MSQueue_PTB_base_cachealign)
413             CPPUNIT_TEST(test_MSQueue_PTB_member_cachealign)
414
415             CPPUNIT_TEST(test_MoirQueue_HP_default)
416             CPPUNIT_TEST(test_MoirQueue_HP_default_ic)
417             CPPUNIT_TEST(test_MoirQueue_HP_default_stat)
418             CPPUNIT_TEST(test_MoirQueue_HP_base)
419             CPPUNIT_TEST(test_MoirQueue_HP_member)
420             CPPUNIT_TEST(test_MoirQueue_HP_base_ic)
421             CPPUNIT_TEST(test_MoirQueue_HP_member_ic)
422             CPPUNIT_TEST(test_MoirQueue_HP_base_stat)
423             CPPUNIT_TEST(test_MoirQueue_HP_member_stat)
424             CPPUNIT_TEST(test_MoirQueue_HP_base_align)
425             CPPUNIT_TEST(test_MoirQueue_HP_member_align)
426             CPPUNIT_TEST(test_MoirQueue_HP_base_noalign)
427             CPPUNIT_TEST(test_MoirQueue_HP_member_noalign)
428             CPPUNIT_TEST(test_MoirQueue_HP_base_cachealign)
429             CPPUNIT_TEST(test_MoirQueue_HP_member_cachealign)
430             CPPUNIT_TEST(test_MoirQueue_HRC_base)
431             CPPUNIT_TEST(test_MoirQueue_HRC_base_ic)
432             CPPUNIT_TEST(test_MoirQueue_HRC_base_stat)
433             CPPUNIT_TEST(test_MoirQueue_HRC_base_align)
434             CPPUNIT_TEST(test_MoirQueue_PTB_base)
435             CPPUNIT_TEST(test_MoirQueue_PTB_member)
436             CPPUNIT_TEST(test_MoirQueue_PTB_base_ic)
437             CPPUNIT_TEST(test_MoirQueue_PTB_member_ic)
438             CPPUNIT_TEST(test_MoirQueue_PTB_base_stat)
439             CPPUNIT_TEST(test_MoirQueue_PTB_member_stat)
440             CPPUNIT_TEST(test_MoirQueue_PTB_base_align)
441             CPPUNIT_TEST(test_MoirQueue_PTB_member_align)
442             CPPUNIT_TEST(test_MoirQueue_PTB_base_noalign)
443             CPPUNIT_TEST(test_MoirQueue_PTB_member_noalign)
444             CPPUNIT_TEST(test_MoirQueue_PTB_base_cachealign)
445             CPPUNIT_TEST(test_MoirQueue_PTB_member_cachealign)
446
447             CPPUNIT_TEST(test_OptimisticQueue_HP_default)
448             CPPUNIT_TEST(test_OptimisticQueue_HP_default_ic)
449             CPPUNIT_TEST(test_OptimisticQueue_HP_default_stat)
450             CPPUNIT_TEST(test_OptimisticQueue_HP_base)
451             CPPUNIT_TEST(test_OptimisticQueue_HP_member)
452             CPPUNIT_TEST(test_OptimisticQueue_HP_base_ic)
453             CPPUNIT_TEST(test_OptimisticQueue_HP_member_ic)
454             CPPUNIT_TEST(test_OptimisticQueue_HP_base_stat)
455             CPPUNIT_TEST(test_OptimisticQueue_HP_member_stat)
456             CPPUNIT_TEST(test_OptimisticQueue_HP_base_align)
457             CPPUNIT_TEST(test_OptimisticQueue_HP_member_align)
458             CPPUNIT_TEST(test_OptimisticQueue_HP_base_noalign)
459             CPPUNIT_TEST(test_OptimisticQueue_HP_member_noalign)
460             CPPUNIT_TEST(test_OptimisticQueue_HP_base_cachealign)
461             CPPUNIT_TEST(test_OptimisticQueue_HP_member_cachealign)
462             CPPUNIT_TEST(test_OptimisticQueue_PTB_base)
463             CPPUNIT_TEST(test_OptimisticQueue_PTB_member)
464             CPPUNIT_TEST(test_OptimisticQueue_PTB_base_ic)
465             CPPUNIT_TEST(test_OptimisticQueue_PTB_member_ic)
466             CPPUNIT_TEST(test_OptimisticQueue_PTB_base_stat)
467             CPPUNIT_TEST(test_OptimisticQueue_PTB_member_stat)
468             CPPUNIT_TEST(test_OptimisticQueue_PTB_base_align)
469             CPPUNIT_TEST(test_OptimisticQueue_PTB_member_align)
470             CPPUNIT_TEST(test_OptimisticQueue_PTB_base_noalign)
471             CPPUNIT_TEST(test_OptimisticQueue_PTB_member_noalign)
472             CPPUNIT_TEST(test_OptimisticQueue_PTB_base_cachealign)
473             CPPUNIT_TEST(test_OptimisticQueue_PTB_member_cachealign)
474
475             CPPUNIT_TEST(test_BasketQueue_HP_default)
476             CPPUNIT_TEST(test_BasketQueue_HP_default_ic)
477             CPPUNIT_TEST(test_BasketQueue_HP_default_stat)
478             CPPUNIT_TEST(test_BasketQueue_HP_base)
479             CPPUNIT_TEST(test_BasketQueue_HP_member)
480             CPPUNIT_TEST(test_BasketQueue_HP_base_ic)
481             CPPUNIT_TEST(test_BasketQueue_HP_member_ic)
482             CPPUNIT_TEST(test_BasketQueue_HP_base_stat)
483             CPPUNIT_TEST(test_BasketQueue_HP_member_stat)
484             CPPUNIT_TEST(test_BasketQueue_HP_base_align)
485             CPPUNIT_TEST(test_BasketQueue_HP_member_align)
486             CPPUNIT_TEST(test_BasketQueue_HP_base_noalign)
487             CPPUNIT_TEST(test_BasketQueue_HP_member_noalign)
488             CPPUNIT_TEST(test_BasketQueue_HP_base_cachealign)
489             CPPUNIT_TEST(test_BasketQueue_HP_member_cachealign)
490             CPPUNIT_TEST(test_BasketQueue_HRC_base)
491             CPPUNIT_TEST(test_BasketQueue_HRC_base_ic)
492             CPPUNIT_TEST(test_BasketQueue_HRC_base_stat)
493             CPPUNIT_TEST(test_BasketQueue_HRC_base_align)
494             CPPUNIT_TEST(test_BasketQueue_PTB_base)
495             CPPUNIT_TEST(test_BasketQueue_PTB_member)
496             CPPUNIT_TEST(test_BasketQueue_PTB_base_ic)
497             CPPUNIT_TEST(test_BasketQueue_PTB_member_ic)
498             CPPUNIT_TEST(test_BasketQueue_PTB_base_stat)
499             CPPUNIT_TEST(test_BasketQueue_PTB_member_stat)
500             CPPUNIT_TEST(test_BasketQueue_PTB_base_align)
501             CPPUNIT_TEST(test_BasketQueue_PTB_member_align)
502             CPPUNIT_TEST(test_BasketQueue_PTB_base_noalign)
503             CPPUNIT_TEST(test_BasketQueue_PTB_member_noalign)
504             CPPUNIT_TEST(test_BasketQueue_PTB_base_cachealign)
505             CPPUNIT_TEST(test_BasketQueue_PTB_member_cachealign)
506
507             CPPUNIT_TEST(test_TsigasCycleQueue_stat)
508             CPPUNIT_TEST(test_TsigasCycleQueue_stat_ic)
509             CPPUNIT_TEST(test_TsigasCycleQueue_dyn)
510             CPPUNIT_TEST(test_TsigasCycleQueue_dyn_ic)
511
512             CPPUNIT_TEST(test_VyukovMPMCCycleQueue_stat);
513             CPPUNIT_TEST(test_VyukovMPMCCycleQueue_stat_ic);
514             CPPUNIT_TEST(test_VyukovMPMCCycleQueue_dyn);
515             CPPUNIT_TEST(test_VyukovMPMCCycleQueue_dyn_ic);
516
517         CPPUNIT_TEST_SUITE_END()
518     };
519 }   // namespace queue