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