Renamed test-hdr/ordered_list dir to test-hdr/list, added unordered LazyList<nogc...
[libcds.git] / tests / test-hdr / unordered_list / hdr_lazy_nogc.cpp
1 //$$CDS-header$$
2
3 #include "unordered_list/hdr_lazy.h"
4 #include <cds/container/lazy_list_nogc.h>
5
6 namespace unordlist {
7     namespace {
8         struct NOGC_cmp_traits : public cc::lazy_list::traits
9         {
10             typedef UnorderedLazyListTestHeader::cmp<UnorderedLazyListTestHeader::item>   compare;
11             static const bool sort = false;
12         };
13     }
14     void UnorderedLazyListTestHeader::NOGC_cmp()
15     {
16         // traits-based version
17         typedef cc::LazyList< cds::gc::nogc, item, NOGC_cmp_traits > list;
18         nogc_test< list >();
19
20         // option-based version
21         typedef cc::LazyList< cds::gc::nogc, item,
22             cc::lazy_list::make_traits<
23                 cc::opt::compare< cmp<item> >
24                 ,cc::opt::sort<false>
25             >::type
26         > opt_list;
27         nogc_test< opt_list >();
28     }
29
30     namespace {
31         struct NOGC_less_traits : public cc::lazy_list::traits
32         {
33             typedef UnorderedLazyListTestHeader::lt<UnorderedLazyListTestHeader::item>   less;
34             static const bool sort = false;
35         };
36     }
37     void UnorderedLazyListTestHeader::NOGC_less()
38     {
39         // traits-based version
40         typedef cc::LazyList< cds::gc::nogc, item, NOGC_less_traits > list;
41         nogc_test< list >();
42
43         // option-based version
44         typedef cc::LazyList< cds::gc::nogc, item,
45             cc::lazy_list::make_traits<
46                 cc::opt::less< lt<item> >
47                 ,cc::opt::sort<false>
48             >::type
49         > opt_list;
50         nogc_test< opt_list >();
51     }
52
53     namespace {
54         struct NOGC_equal_to_traits : public cc::lazy_list::traits
55         {
56             typedef UnorderedLazyListTestHeader::equal_to<UnorderedLazyListTestHeader::item> equal_to;
57             static const bool sort = false;
58         };
59     }
60     void UnorderedLazyListTestHeader::NOGC_equal_to()
61     {
62         // traits-based version
63         typedef cc::LazyList< cds::gc::nogc, item, NOGC_equal_to_traits > list;
64         nogc_test< list >();
65
66         // option-based version
67         typedef cc::LazyList< cds::gc::nogc, item,
68             cc::lazy_list::make_traits<
69                 cc::opt::equal_to< equal_to<item> >
70                 ,cc::opt::sort<false>
71             >::type
72         > opt_list;
73         nogc_test< opt_list >();
74     }
75
76     namespace {
77         struct NOGC_cmpmix_traits : public cc::lazy_list::traits
78         {
79             typedef UnorderedLazyListTestHeader::cmp<UnorderedLazyListTestHeader::item>   compare;
80             typedef UnorderedLazyListTestHeader::lt<UnorderedLazyListTestHeader::item>  less;
81             static const bool sort = false;
82         };
83     }
84     void UnorderedLazyListTestHeader::NOGC_cmpmix()
85     {
86         // traits-based version
87         typedef cc::LazyList< cds::gc::nogc, item, NOGC_cmpmix_traits > list;
88         nogc_test< list >();
89
90         // option-based version
91         typedef cc::LazyList< cds::gc::nogc, item,
92             cc::lazy_list::make_traits<
93                 cc::opt::compare< cmp<item> >
94                 ,cc::opt::less< lt<item> >
95                 ,cc::opt::sort<false>
96             >::type
97         > opt_list;
98         nogc_test< opt_list >();
99     }
100
101     namespace {
102         struct NOGC_equal_to_mix_traits : public cc::lazy_list::traits
103         {
104             typedef UnorderedLazyListTestHeader::cmp<UnorderedLazyListTestHeader::item> compare;
105             typedef UnorderedLazyListTestHeader::lt<UnorderedLazyListTestHeader::item> less;
106             typedef UnorderedLazyListTestHeader::equal_to<UnorderedLazyListTestHeader::item> equal_to;
107             static const bool sort = false;
108         };
109     }
110     void UnorderedLazyListTestHeader::NOGC_equal_to_mix()
111     {
112         // traits-based version
113         typedef cc::LazyList< cds::gc::nogc, item, NOGC_equal_to_mix_traits > list;
114         nogc_test< list >();
115
116         // option-based version
117         typedef cc::LazyList< cds::gc::nogc, item,
118             cc::lazy_list::make_traits<
119                 cc::opt::compare< cmp<item> >
120                 ,cc::opt::less< lt<item> >
121                 ,cc::opt::equal_to< equal_to<item> >
122                 ,cc::opt::sort<false>
123             >::type
124         > opt_list;
125         nogc_test< opt_list >();
126     }
127     namespace {
128         struct NOGC_ic_traits : public cc::lazy_list::traits
129         {
130             typedef UnorderedLazyListTestHeader::equal_to<UnorderedLazyListTestHeader::item> equal_to;
131             typedef cds::atomicity::item_counter item_counter;
132             static const bool sort = false;
133         };
134     }
135     void UnorderedLazyListTestHeader::NOGC_ic()
136     {
137         // traits-based version
138         typedef cc::LazyList< cds::gc::nogc, item, NOGC_ic_traits > list;
139         nogc_test< list >();
140
141         // option-based version
142         typedef cc::LazyList< cds::gc::nogc, item,
143             cc::lazy_list::make_traits<
144                 cc::opt::equal_to< equal_to<item> >
145                 ,cc::opt::item_counter< cds::atomicity::item_counter >
146                 ,cc::opt::sort<false>
147             >::type
148         > opt_list;
149         nogc_test< opt_list >();
150     }
151
152 }   // namespace unordlist
153 CPPUNIT_TEST_SUITE_REGISTRATION(unordlist::UnorderedLazyListTestHeader);