cds::container::TreiberStack refactoring
[libcds.git] / tests / test-hdr / stack / hdr_treiber_stack_hp.cpp
1 //$$CDS-header$$
2
3 #include "hdr_treiber_stack.h"
4 #include <cds/gc/hp.h>
5 #include <cds/container/treiber_stack.h>
6
7
8 namespace stack {
9 #define TEST(X)     void TestStack::X() { test<defs::X>(); }
10     namespace cs = cds::container;
11
12     namespace defs { namespace {
13
14         typedef cs::TreiberStack< cds::gc::HP, int > Treiber_HP;
15         typedef cs::TreiberStack< cds::gc::HP, int
16             , typename cs::treiber_stack::make_traits<
17                 cds::opt::memory_model<cds::opt::v::relaxed_ordering> 
18             >::type
19         > Treiber_HP_relaxed;
20
21         typedef cs::TreiberStack< cds::gc::HP, int
22             , typename cs::treiber_stack::make_traits<
23                 cds::opt::back_off< cds::backoff::yield> 
24             >::type
25         > Treiber_HP_yield;
26
27         typedef cs::TreiberStack< cds::gc::HP, int
28             , typename cs::treiber_stack::make_traits<
29                 cds::opt::back_off< cds::backoff::yield>
30                 , cds::opt::memory_model<cds::opt::v::relaxed_ordering>
31             >::type
32         > Treiber_HP_yield_relaxed;
33
34         typedef cs::TreiberStack< cds::gc::HP, int
35             , typename cs::treiber_stack::make_traits<
36                 cds::opt::back_off< cds::backoff::pause>
37                 ,cds::opt::allocator< std::allocator< bool * > >
38             >::type
39         > Treiber_HP_pause_alloc;
40
41         typedef cs::TreiberStack< cds::gc::HP, int
42             , typename cs::treiber_stack::make_traits<
43                 cds::opt::back_off< cds::backoff::pause>
44                 ,cds::opt::memory_model<cds::opt::v::relaxed_ordering>
45                 ,cds::opt::allocator< std::allocator< unsigned long > >
46             >::type
47         > Treiber_HP_pause_alloc_relaxed;
48     }}
49
50     TEST(Treiber_HP)
51     TEST(Treiber_HP_yield)
52     TEST(Treiber_HP_pause_alloc)
53
54     TEST(Treiber_HP_relaxed)
55     TEST(Treiber_HP_yield_relaxed)
56     TEST(Treiber_HP_pause_alloc_relaxed)
57 }
58 CPPUNIT_TEST_SUITE_REGISTRATION(stack::TestStack);