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