intrusive::LazyList refactoring
[libcds.git] / tests / test-hdr / ordered_list / hdr_intrusive_lazy_hp.cpp
1 //$$CDS-header$$
2
3 #include "ordered_list/hdr_intrusive_lazy.h"
4 #include <cds/intrusive/lazy_list_hp.h>
5
6 namespace ordlist {
7     void IntrusiveLazyListHeaderTest::HP_base_cmp()
8     {
9         typedef base_int_item< cds::gc::HP > item;
10         struct traits : public ci::lazy_list::traits
11         {
12             typedef ci::lazy_list::base_hook< co::gc<cds::gc::HP> > hook;
13             typedef cmp<item> compare;
14             typedef faked_disposer disposer;
15         };
16         typedef ci::LazyList< cds::gc::HP, item, traits > list;
17         test_int<list>();
18     }
19     void IntrusiveLazyListHeaderTest::HP_base_less()
20     {
21         typedef base_int_item< cds::gc::HP > item;
22         typedef ci::LazyList< cds::gc::HP
23             ,item
24             ,ci::lazy_list::make_traits<
25                 ci::opt::hook< ci::lazy_list::base_hook< co::gc<cds::gc::HP> > >
26                 ,co::less< less<item> >
27                 ,ci::opt::disposer< faked_disposer >
28             >::type
29         >    list;
30         test_int<list>();
31     }
32     void IntrusiveLazyListHeaderTest::HP_base_cmpmix()
33     {
34         typedef base_int_item< cds::gc::HP > item;
35         typedef ci::LazyList< cds::gc::HP
36             ,item
37             ,ci::lazy_list::make_traits<
38                 ci::opt::hook< ci::lazy_list::base_hook< co::gc<cds::gc::HP> > >
39                 ,co::less< less<item> >
40                 ,co::compare< cmp<item> >
41                 ,ci::opt::disposer< faked_disposer >
42             >::type
43         >    list;
44         test_int<list>();
45     }
46     void IntrusiveLazyListHeaderTest::HP_base_ic()
47     {
48         typedef base_int_item< cds::gc::HP > item;
49         typedef ci::LazyList< cds::gc::HP
50             ,item
51             ,ci::lazy_list::make_traits<
52                 ci::opt::hook< ci::lazy_list::base_hook< co::gc<cds::gc::HP> > >
53                 ,co::less< less<item> >
54                 ,co::compare< cmp<item> >
55                 ,ci::opt::disposer< faked_disposer >
56                 ,co::item_counter< cds::atomicity::item_counter >
57             >::type
58         >    list;
59         test_int<list>();
60     }
61     void IntrusiveLazyListHeaderTest::HP_member_cmp()
62     {
63         typedef member_int_item< cds::gc::HP > item;
64         typedef ci::LazyList< cds::gc::HP
65             ,item
66             ,ci::lazy_list::make_traits<
67                 ci::opt::hook< ci::lazy_list::member_hook<
68                     offsetof( item, hMember ),
69                     co::gc<cds::gc::HP>
70                 > >
71                 ,co::compare< cmp<item> >
72                 ,ci::opt::disposer< faked_disposer >
73             >::type
74         >    list;
75         test_int<list>();
76     }
77     void IntrusiveLazyListHeaderTest::HP_member_less()
78     {
79         typedef member_int_item< cds::gc::HP > item;
80         struct traits : public ci::lazy_list::traits
81         {
82             typedef ci::lazy_list::member_hook< offsetof( item, hMember ), co::gc<cds::gc::HP>> hook;
83             typedef IntrusiveLazyListHeaderTest::less<item> less;
84             typedef faked_disposer disposer;
85         };
86         typedef ci::LazyList< cds::gc::HP, item, traits > list;
87         test_int<list>();
88     }
89     void IntrusiveLazyListHeaderTest::HP_member_cmpmix()
90     {
91         typedef member_int_item< cds::gc::HP > item;
92         typedef ci::LazyList< cds::gc::HP
93             ,item
94             ,ci::lazy_list::make_traits<
95                 ci::opt::hook< ci::lazy_list::member_hook<
96                     offsetof( item, hMember ),
97                     co::gc<cds::gc::HP>
98                 > >
99                 ,co::less< less<item> >
100                 ,co::compare< cmp<item> >
101                 ,ci::opt::disposer< faked_disposer >
102             >::type
103         >    list;
104         test_int<list>();
105     }
106     void IntrusiveLazyListHeaderTest::HP_member_ic()
107     {
108         typedef member_int_item< cds::gc::HP > item;
109         typedef ci::LazyList< cds::gc::HP
110             ,item
111             ,ci::lazy_list::make_traits<
112                 ci::opt::hook< ci::lazy_list::member_hook<
113                     offsetof( item, hMember ),
114                     co::gc<cds::gc::HP>
115                 > >
116                 ,co::compare< cmp<item> >
117                 ,ci::opt::disposer< faked_disposer >
118                 ,co::item_counter< cds::atomicity::item_counter >
119             >::type
120         >    list;
121         test_int<list>();
122     }
123 }   // namespace ordlist
124
125 CPPUNIT_TEST_SUITE_REGISTRATION(ordlist::IntrusiveLazyListHeaderTest);