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