d519e602e489713a6bfdb4087f7185f26d905fbf
[libcds.git] / tests / test-hdr / unordered_list / hdr_intrusive_lazy_nogc.cpp
1 //$$CDS-header$$
2
3 #include "unordered_list/hdr_intrusive_lazy.h"
4 #include <cds/intrusive/lazy_list_nogc.h>
5
6 namespace unordlist {
7     namespace {
8         typedef base_int_item< cds::gc::nogc > base_item;
9         typedef member_int_item< cds::gc::nogc > member_item;
10
11         struct cmp_traits : public ci::lazy_list::traits {
12             typedef ci::lazy_list::base_hook< co::gc<cds::gc::nogc> > hook;
13             typedef unordlist::cmp<base_item> compare;
14             typedef faked_disposer disposer;
15             static const bool sort = false;
16         };
17
18         struct less_traits: public ci::lazy_list::traits {
19             typedef ci::lazy_list::base_hook< co::gc<cds::gc::nogc> > hook;
20             typedef unordlist::less<base_item> less;
21             typedef faked_disposer disposer;
22             static const bool sort = false;
23         };
24
25         struct equal_to_traits: public ci::lazy_list::traits {
26             typedef ci::lazy_list::base_hook< co::gc<cds::gc::nogc> > hook;
27             typedef unordlist::equal_to<base_item> equal_to;
28             typedef faked_disposer disposer;
29             static const bool sort = false;
30         };
31
32         typedef typename ci::lazy_list::make_traits<
33             ci::opt::hook< ci::lazy_list::base_hook< co::gc<cds::gc::nogc> > >
34             ,co::less< less<base_item> >
35             ,co::compare< cmp<base_item> >
36             ,ci::opt::disposer< faked_disposer >
37             ,co::sort< false > >::type cmpmix_traits;
38
39         typedef typename ci::lazy_list::make_traits<
40             ci::opt::hook< ci::lazy_list::base_hook< co::gc<cds::gc::nogc> > >
41             ,co::compare< cmp<base_item> >
42             ,co::equal_to< equal_to<base_item> >
43             ,ci::opt::disposer< faked_disposer >
44             ,co::sort< false > >::type equal_to_mix_traits;
45
46         typedef typename ci::lazy_list::make_traits<
47             ci::opt::hook< ci::lazy_list::base_hook< co::gc<cds::gc::nogc> > >
48             ,co::equal_to< equal_to<base_item> >
49             ,ci::opt::disposer< faked_disposer >
50             ,co::item_counter< cds::atomicity::item_counter >
51             ,co::sort< false > >::type ic_traits;
52
53         typedef typename ci::lazy_list::make_traits<
54             ci::opt::hook< ci::lazy_list::member_hook<
55                 offsetof( member_item, hMember )
56                 ,co::gc<cds::gc::nogc> > >
57             ,co::compare< cmp<member_item> >
58             ,ci::opt::disposer< faked_disposer >
59             ,co::sort< false > >::type member_cmp_traits;
60
61         typedef typename ci::lazy_list::make_traits<
62             ci::opt::hook< ci::lazy_list::member_hook<
63                 offsetof( member_item, hMember )
64                 ,co::gc<cds::gc::nogc> > >
65             ,co::less< less<member_item> >
66             ,ci::opt::disposer< faked_disposer >
67             ,co::sort< false > >::type member_less_traits;
68
69         typedef typename ci::lazy_list::make_traits<
70             ci::opt::hook< ci::lazy_list::member_hook<
71                 offsetof( member_item, hMember )
72                 ,co::gc<cds::gc::nogc> > >
73             ,co::equal_to< equal_to<member_item> >
74             ,ci::opt::disposer< faked_disposer >
75             ,co::sort< false > >::type member_equal_to_traits;
76
77         typedef typename ci::lazy_list::make_traits<
78             ci::opt::hook< ci::lazy_list::member_hook<
79                 offsetof( member_item, hMember )
80                 ,co::gc<cds::gc::nogc> > >
81             ,co::less< less<member_item> >
82             ,co::compare< cmp<member_item> >
83             ,ci::opt::disposer< faked_disposer >
84             ,co::sort< false > >::type member_cmpmix_traits;
85
86         typedef typename ci::lazy_list::make_traits<
87             ci::opt::hook< ci::lazy_list::member_hook<
88                 offsetof( member_item, hMember )
89                 ,co::gc<cds::gc::nogc> > >
90             ,co::compare< cmp<member_item> >
91             ,co::equal_to< equal_to<member_item> >
92             ,ci::opt::disposer< faked_disposer >
93             ,co::sort< false > >::type member_equal_to_mix_traits;
94
95         typedef typename ci::lazy_list::make_traits<
96             ci::opt::hook< ci::lazy_list::member_hook<
97                 offsetof( member_item, hMember ),
98                 co::gc<cds::gc::nogc> > >
99             ,co::equal_to< equal_to<member_item> >
100             ,ci::opt::disposer< faked_disposer >
101             ,co::item_counter< cds::atomicity::item_counter >
102             ,co::sort< false > >::type member_ic_traits;
103
104     }
105     void UnorderedIntrusiveLazyListHeaderTest::nogc_base_cmp()
106     {
107         typedef ci::LazyList< cds::gc::nogc, base_item, cmp_traits > list;
108         test_nogc_int<list>();
109     }
110     void UnorderedIntrusiveLazyListHeaderTest::nogc_base_less()
111     {
112         typedef ci::LazyList< cds::gc::nogc, base_item, less_traits > list;
113         test_nogc_int<list>();
114     }
115     void UnorderedIntrusiveLazyListHeaderTest::nogc_base_equal_to()
116     {
117         typedef ci::LazyList< cds::gc::nogc, base_item, equal_to_traits > list;
118         test_nogc_int<list>();
119     }
120     void UnorderedIntrusiveLazyListHeaderTest::nogc_base_cmpmix()
121     {
122         typedef ci::LazyList< cds::gc::nogc, base_item, cmpmix_traits > list;
123         test_nogc_int<list>();
124     }
125     void UnorderedIntrusiveLazyListHeaderTest::nogc_base_equal_to_mix()
126     {
127         typedef ci::LazyList< cds::gc::nogc, base_item, equal_to_mix_traits > list;
128         test_nogc_int<list>();
129     }
130     void UnorderedIntrusiveLazyListHeaderTest::nogc_base_ic()
131     {
132         typedef ci::LazyList< cds::gc::nogc, base_item, ic_traits > list;
133         test_nogc_int<list>();
134     }
135     void UnorderedIntrusiveLazyListHeaderTest::nogc_member_cmp()
136     {
137         typedef ci::LazyList< cds::gc::nogc, member_item, member_cmp_traits > list;
138         test_nogc_int<list>();
139     }
140     void UnorderedIntrusiveLazyListHeaderTest::nogc_member_less()
141     {
142         typedef ci::LazyList< cds::gc::nogc, member_item, member_less_traits > list;
143         test_nogc_int<list>();
144     }
145     void UnorderedIntrusiveLazyListHeaderTest::nogc_member_equal_to()
146     {
147         typedef ci::LazyList< cds::gc::nogc, member_item, member_equal_to_traits > list;
148         test_nogc_int<list>();
149     }
150     void UnorderedIntrusiveLazyListHeaderTest::nogc_member_cmpmix()
151     {
152         typedef ci::LazyList< cds::gc::nogc, member_item, member_cmpmix_traits > list;
153         test_nogc_int<list>();
154     }
155     void UnorderedIntrusiveLazyListHeaderTest::nogc_member_equal_to_mix()
156     {
157         typedef ci::LazyList< cds::gc::nogc, member_item, member_equal_to_mix_traits > list;
158         test_nogc_int<list>();
159     }
160     void UnorderedIntrusiveLazyListHeaderTest::nogc_member_ic()
161     {
162         typedef ci::LazyList< cds::gc::nogc, member_item, member_ic_traits > list;
163         test_nogc_int<list>();
164     }
165
166 } // namespace unordlist
167
168 CPPUNIT_TEST_SUITE_REGISTRATION(unordlist::UnorderedIntrusiveLazyListHeaderTest);