4a5dca6454395a2b1d887141ffdabfebe86369f6
[libcds.git] / tests / unit / queue / intrusive_queue_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 #ifndef CDSUNIT_INTRUSIVE_QUEUE_DEFS_H
32 #define CDSUNIT_INTRUSIVE_QUEUE_DEFS_H
33
34 // MSQueue
35 #define CDSUNIT_DECLARE_MSQueue \
36     TEST_CASE(MSQueue_HP,               cds::intrusive::msqueue::node< cds::gc::HP > ) \
37     TEST_CASE(MSQueue_HP_ic,            cds::intrusive::msqueue::node< cds::gc::HP > ) \
38     TEST_CASE(MSQueue_HP_stat,          cds::intrusive::msqueue::node< cds::gc::HP > ) \
39     TEST_CASE(MSQueue_HP_seqcst,        cds::intrusive::msqueue::node< cds::gc::HP > ) \
40     TEST_CASE(MSQueue_DHP,              cds::intrusive::msqueue::node< cds::gc::DHP > ) \
41     TEST_CASE(MSQueue_DHP_ic,           cds::intrusive::msqueue::node< cds::gc::DHP > ) \
42     TEST_CASE(MSQueue_DHP_stat,         cds::intrusive::msqueue::node< cds::gc::DHP > ) \
43     TEST_CASE(MSQueue_DHP_seqcst,       cds::intrusive::msqueue::node< cds::gc::DHP > )
44
45 #define CDSUNIT_TEST_MSQueue \
46     CPPUNIT_TEST(MSQueue_HP) \
47     CPPUNIT_TEST(MSQueue_HP_ic) \
48     CPPUNIT_TEST(MSQueue_HP_stat) \
49     CPPUNIT_TEST(MSQueue_HP_seqcst) \
50     CPPUNIT_TEST(MSQueue_DHP) \
51     CPPUNIT_TEST(MSQueue_DHP_ic) \
52     CPPUNIT_TEST(MSQueue_DHP_stat) \
53     CPPUNIT_TEST(MSQueue_DHP_seqcst)
54
55 // MoirQueue
56 #define CDSUNIT_DECLARE_MoirQueue \
57     TEST_CASE(MoirQueue_HP,               cds::intrusive::msqueue::node< cds::gc::HP > ) \
58     TEST_CASE(MoirQueue_HP_ic,            cds::intrusive::msqueue::node< cds::gc::HP > ) \
59     TEST_CASE(MoirQueue_HP_stat,          cds::intrusive::msqueue::node< cds::gc::HP > ) \
60     TEST_CASE(MoirQueue_HP_seqcst,        cds::intrusive::msqueue::node< cds::gc::HP > ) \
61     TEST_CASE(MoirQueue_DHP,              cds::intrusive::msqueue::node< cds::gc::DHP > ) \
62     TEST_CASE(MoirQueue_DHP_ic,           cds::intrusive::msqueue::node< cds::gc::DHP > ) \
63     TEST_CASE(MoirQueue_DHP_stat,         cds::intrusive::msqueue::node< cds::gc::DHP > ) \
64     TEST_CASE(MoirQueue_DHP_seqcst,       cds::intrusive::msqueue::node< cds::gc::DHP > )
65
66 #define CDSUNIT_TEST_MoirQueue \
67     CPPUNIT_TEST(MoirQueue_HP) \
68     CPPUNIT_TEST(MoirQueue_HP_ic) \
69     CPPUNIT_TEST(MoirQueue_HP_stat) \
70     CPPUNIT_TEST(MoirQueue_HP_seqcst) \
71     CPPUNIT_TEST(MoirQueue_DHP) \
72     CPPUNIT_TEST(MoirQueue_DHP_ic) \
73     CPPUNIT_TEST(MoirQueue_DHP_stat) \
74     CPPUNIT_TEST(MoirQueue_DHP_seqcst)
75
76
77 // OptimisticQueue
78 #define CDSUNIT_DECLARE_OptimisticQueue \
79     TEST_CASE(OptimisticQueue_HP,               cds::intrusive::optimistic_queue::node< cds::gc::HP > ) \
80     TEST_CASE(OptimisticQueue_HP_ic,            cds::intrusive::optimistic_queue::node< cds::gc::HP > ) \
81     TEST_CASE(OptimisticQueue_HP_stat,          cds::intrusive::optimistic_queue::node< cds::gc::HP > ) \
82     TEST_CASE(OptimisticQueue_HP_seqcst,        cds::intrusive::optimistic_queue::node< cds::gc::HP > ) \
83     TEST_CASE(OptimisticQueue_DHP,              cds::intrusive::optimistic_queue::node< cds::gc::DHP > ) \
84     TEST_CASE(OptimisticQueue_DHP_ic,           cds::intrusive::optimistic_queue::node< cds::gc::DHP > ) \
85     TEST_CASE(OptimisticQueue_DHP_stat,         cds::intrusive::optimistic_queue::node< cds::gc::DHP > ) \
86     TEST_CASE(OptimisticQueue_DHP_seqcst,       cds::intrusive::optimistic_queue::node< cds::gc::DHP > )
87
88 #define CDSUNIT_TEST_OptimisticQueue \
89     CPPUNIT_TEST(OptimisticQueue_HP) \
90     CPPUNIT_TEST(OptimisticQueue_HP_ic) \
91     CPPUNIT_TEST(OptimisticQueue_HP_stat) \
92     CPPUNIT_TEST(OptimisticQueue_HP_seqcst) \
93     CPPUNIT_TEST(OptimisticQueue_DHP) \
94     CPPUNIT_TEST(OptimisticQueue_DHP_ic) \
95     CPPUNIT_TEST(OptimisticQueue_DHP_stat) \
96     CPPUNIT_TEST(OptimisticQueue_DHP_seqcst)
97
98
99 // BasketQueue
100 #define CDSUNIT_DECLARE_BasketQueue \
101     TEST_CASE(BasketQueue_HP,               cds::intrusive::basket_queue::node< cds::gc::HP > ) \
102     TEST_CASE(BasketQueue_HP_ic,            cds::intrusive::basket_queue::node< cds::gc::HP > ) \
103     TEST_CASE(BasketQueue_HP_stat,          cds::intrusive::basket_queue::node< cds::gc::HP > ) \
104     TEST_CASE(BasketQueue_HP_seqcst,        cds::intrusive::basket_queue::node< cds::gc::HP > ) \
105     TEST_CASE(BasketQueue_DHP,              cds::intrusive::basket_queue::node< cds::gc::DHP > ) \
106     TEST_CASE(BasketQueue_DHP_ic,           cds::intrusive::basket_queue::node< cds::gc::DHP > ) \
107     TEST_CASE(BasketQueue_DHP_stat,         cds::intrusive::basket_queue::node< cds::gc::DHP > ) \
108     TEST_CASE(BasketQueue_DHP_seqcst,       cds::intrusive::basket_queue::node< cds::gc::DHP > )
109
110 #define CDSUNIT_TEST_BasketQueue \
111     CPPUNIT_TEST(BasketQueue_HP) \
112     CPPUNIT_TEST(BasketQueue_HP_ic) \
113     CPPUNIT_TEST(BasketQueue_HP_stat) \
114     CPPUNIT_TEST(BasketQueue_HP_seqcst) \
115     CPPUNIT_TEST(BasketQueue_DHP) \
116     CPPUNIT_TEST(BasketQueue_DHP_ic) \
117     CPPUNIT_TEST(BasketQueue_DHP_stat) \
118     CPPUNIT_TEST(BasketQueue_DHP_seqcst)
119
120 // TsigasCycleQueue
121 #define CDSUNIT_DECLARE_TsigasCycleQueue \
122     TEST_BOUNDED(TsigasCycleQueue_dyn) \
123     TEST_BOUNDED(TsigasCycleQueue_dyn_ic)
124
125 #define CDSUNIT_TEST_TsigasCycleQueue \
126     CPPUNIT_TEST(TsigasCycleQueue_dyn) \
127     CPPUNIT_TEST(TsigasCycleQueue_dyn_ic)
128
129
130 // VyukovMPMCCycleQueue
131 #define CDSUNIT_DECLARE_VyukovMPMCCycleQueue \
132     TEST_BOUNDED(VyukovMPMCCycleQueue_dyn) \
133     TEST_BOUNDED(VyukovMPMCCycleQueue_dyn_ic)
134
135 #define CDSUNIT_TEST_VyukovMPMCCycleQueue \
136     CPPUNIT_TEST(VyukovMPMCCycleQueue_dyn) \
137     CPPUNIT_TEST(VyukovMPMCCycleQueue_dyn_ic)
138
139
140 // FCQueue
141 #define CDSUNIT_DECLARE_FCQueue \
142     TEST_FCQUEUE(FCQueue_list_delay2, boost::intrusive::list_base_hook<> ) \
143     TEST_FCQUEUE(FCQueue_list_delay2_elimination, boost::intrusive::list_base_hook<> ) \
144     TEST_FCQUEUE(FCQueue_list_delay2_elimination_stat, boost::intrusive::list_base_hook<> ) \
145     TEST_FCQUEUE(FCQueue_list_expbackoff_elimination, boost::intrusive::list_base_hook<> ) \
146     TEST_FCQUEUE(FCQueue_list_expbackoff_elimination_stat, boost::intrusive::list_base_hook<> )
147
148 #define CDSUNIT_TEST_FCQueue \
149     CPPUNIT_TEST(FCQueue_list_delay2) \
150     CPPUNIT_TEST(FCQueue_list_delay2_elimination) \
151     CPPUNIT_TEST(FCQueue_list_delay2_elimination_stat) \
152     CPPUNIT_TEST(FCQueue_list_expbackoff_elimination) \
153     CPPUNIT_TEST(FCQueue_list_expbackoff_elimination_stat)
154
155 // SegmentedQueue
156 #define CDSUNIT_DECLARE_SegmentedQueue \
157     TEST_SEGMENTED( SegmentedQueue_HP_spin ) \
158     TEST_SEGMENTED( SegmentedQueue_HP_spin_padding ) \
159     TEST_SEGMENTED( SegmentedQueue_HP_spin_stat ) \
160     TEST_SEGMENTED( SegmentedQueue_HP_mutex ) \
161     TEST_SEGMENTED( SegmentedQueue_HP_mutex_padding ) \
162     TEST_SEGMENTED( SegmentedQueue_HP_mutex_stat ) \
163     TEST_SEGMENTED( SegmentedQueue_DHP_spin ) \
164     TEST_SEGMENTED( SegmentedQueue_DHP_spin_padding ) \
165     TEST_SEGMENTED( SegmentedQueue_DHP_spin_stat ) \
166     TEST_SEGMENTED( SegmentedQueue_DHP_mutex ) \
167     TEST_SEGMENTED( SegmentedQueue_DHP_mutex_padding ) \
168     TEST_SEGMENTED( SegmentedQueue_DHP_mutex_stat )
169
170 #define CDSUNIT_TEST_SegmentedQueue \
171     CPPUNIT_TEST( SegmentedQueue_HP_spin ) \
172     CPPUNIT_TEST( SegmentedQueue_HP_spin_padding ) \
173     CPPUNIT_TEST( SegmentedQueue_HP_spin_stat ) \
174     CPPUNIT_TEST( SegmentedQueue_HP_mutex ) \
175     CPPUNIT_TEST( SegmentedQueue_HP_mutex_padding ) \
176     CPPUNIT_TEST( SegmentedQueue_HP_mutex_stat ) \
177     CPPUNIT_TEST( SegmentedQueue_DHP_spin ) \
178     CPPUNIT_TEST( SegmentedQueue_DHP_spin_padding ) \
179     CPPUNIT_TEST( SegmentedQueue_DHP_spin_stat ) \
180     CPPUNIT_TEST( SegmentedQueue_DHP_mutex ) \
181     CPPUNIT_TEST( SegmentedQueue_DHP_mutex_padding ) \
182     CPPUNIT_TEST( SegmentedQueue_DHP_mutex_stat )
183
184
185 // BoostSList
186 #define CDSUNIT_DECLARE_BoostSList \
187     TEST_BOOST( BoostSList_mutex, boost::intrusive::slist_base_hook<> ) \
188     TEST_BOOST( BoostSList_spin, boost::intrusive::slist_base_hook<> )
189
190 #define CDSUNIT_TEST_BoostSList \
191     CPPUNIT_TEST( BoostSList_mutex ) \
192     CPPUNIT_TEST( BoostSList_spin )
193
194 #endif // #ifndef CDSUNIT_INTRUSIVE_QUEUE_DEFS_H