2 This file is a part of libcds - Concurrent Data Structures library
4 (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
6 Source code repo: http://github.com/khizmax/libcds/
7 Download: http://sourceforge.net/projects/libcds/files/
9 Redistribution and use in source and binary forms, with or without
10 modification, are permitted provided that the following conditions are met:
12 * Redistributions of source code must retain the above copyright notice, this
13 list of conditions and the following disclaimer.
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.
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.
31 #ifndef CDSUNIT_INTRUSIVE_QUEUE_DEFS_H
32 #define CDSUNIT_INTRUSIVE_QUEUE_DEFS_H
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 > )
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)
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 > )
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)
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 > )
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)
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 > )
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)
121 #define CDSUNIT_DECLARE_TsigasCycleQueue \
122 TEST_BOUNDED(TsigasCycleQueue_dyn) \
123 TEST_BOUNDED(TsigasCycleQueue_dyn_ic)
125 #define CDSUNIT_TEST_TsigasCycleQueue \
126 CPPUNIT_TEST(TsigasCycleQueue_dyn) \
127 CPPUNIT_TEST(TsigasCycleQueue_dyn_ic)
130 // VyukovMPMCCycleQueue
131 #define CDSUNIT_DECLARE_VyukovMPMCCycleQueue \
132 TEST_BOUNDED(VyukovMPMCCycleQueue_dyn) \
133 TEST_BOUNDED(VyukovMPMCCycleQueue_dyn_ic)
135 #define CDSUNIT_TEST_VyukovMPMCCycleQueue \
136 CPPUNIT_TEST(VyukovMPMCCycleQueue_dyn) \
137 CPPUNIT_TEST(VyukovMPMCCycleQueue_dyn_ic)
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<> )
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)
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 )
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 )
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<> )
190 #define CDSUNIT_TEST_BoostSList \
191 CPPUNIT_TEST( BoostSList_mutex ) \
192 CPPUNIT_TEST( BoostSList_spin )
194 #endif // #ifndef CDSUNIT_INTRUSIVE_QUEUE_DEFS_H