Renamed test-hdr/ordered_list dir to test-hdr/list, added unordered LazyList<nogc...
[libcds.git] / tests / test-hdr / list / hdr_intrusive_michael_dhp.cpp
diff --git a/tests/test-hdr/list/hdr_intrusive_michael_dhp.cpp b/tests/test-hdr/list/hdr_intrusive_michael_dhp.cpp
new file mode 100644 (file)
index 0000000..cbeb779
--- /dev/null
@@ -0,0 +1,127 @@
+//$$CDS-header$$
+
+#include "list/hdr_intrusive_michael.h"
+#include <cds/intrusive/michael_list_dhp.h>
+
+namespace ordlist {
+    void IntrusiveMichaelListHeaderTest::DHP_base_cmp()
+    {
+        typedef base_int_item< cds::gc::DHP > item;
+        struct traits : public ci::michael_list::traits {
+            typedef ci::michael_list::base_hook< co::gc<cds::gc::DHP> > hook;
+            typedef cmp<item> compare;
+            typedef faked_disposer disposer;
+        };
+        typedef ci::MichaelList< cds::gc::DHP, item, traits > list;
+        test_int<list>();
+    }
+    void IntrusiveMichaelListHeaderTest::DHP_base_less()
+    {
+        typedef base_int_item< cds::gc::DHP > item;
+        typedef ci::MichaelList< cds::gc::DHP
+            ,item
+            ,ci::michael_list::make_traits<
+                ci::opt::hook< ci::michael_list::base_hook< co::gc<cds::gc::DHP> > >
+                ,co::less< less<item> >
+                ,ci::opt::disposer< faked_disposer >
+            >::type
+        >    list;
+        test_int<list>();
+    }
+    void IntrusiveMichaelListHeaderTest::DHP_base_cmpmix()
+    {
+        typedef base_int_item< cds::gc::DHP > item;
+        typedef ci::MichaelList< cds::gc::DHP
+            ,item
+            ,ci::michael_list::make_traits<
+                ci::opt::hook< ci::michael_list::base_hook< co::gc<cds::gc::DHP> > >
+                ,co::less< less<item> >
+                ,co::compare< cmp<item> >
+                ,ci::opt::disposer< faked_disposer >
+            >::type
+        >    list;
+        test_int<list>();
+    }
+    void IntrusiveMichaelListHeaderTest::DHP_base_ic()
+    {
+        typedef base_int_item< cds::gc::DHP > item;
+        typedef ci::MichaelList< cds::gc::DHP
+            ,item
+            ,ci::michael_list::make_traits<
+                ci::opt::hook< ci::michael_list::base_hook< co::gc<cds::gc::DHP> > >
+                ,co::less< less<item> >
+                ,co::compare< cmp<item> >
+                ,ci::opt::disposer< faked_disposer >
+                ,co::item_counter< cds::atomicity::item_counter >
+            >::type
+        >    list;
+        test_int<list>();
+    }
+    void IntrusiveMichaelListHeaderTest::DHP_member_cmp()
+    {
+        typedef member_int_item< cds::gc::DHP > item;
+        typedef ci::MichaelList< cds::gc::DHP
+            ,item
+            ,ci::michael_list::make_traits<
+                ci::opt::hook< ci::michael_list::member_hook<
+                    offsetof( item, hMember ),
+                    co::gc<cds::gc::DHP>
+                > >
+                ,co::compare< cmp<item> >
+                ,ci::opt::disposer< faked_disposer >
+            >::type
+        >    list;
+        test_int<list>();
+    }
+    void IntrusiveMichaelListHeaderTest::DHP_member_less()
+    {
+        typedef member_int_item< cds::gc::DHP > item;
+        typedef ci::MichaelList< cds::gc::DHP
+            ,item
+            ,ci::michael_list::make_traits<
+                ci::opt::hook< ci::michael_list::member_hook<
+                    offsetof( item, hMember ),
+                    co::gc<cds::gc::DHP>
+                > >
+                ,co::less< less<item> >
+                ,ci::opt::disposer< faked_disposer >
+            >::type
+        >    list;
+        test_int<list>();
+    }
+    void IntrusiveMichaelListHeaderTest::DHP_member_cmpmix()
+    {
+        typedef member_int_item< cds::gc::DHP > item;
+        typedef ci::MichaelList< cds::gc::DHP
+            ,item
+            ,ci::michael_list::make_traits<
+                ci::opt::hook< ci::michael_list::member_hook<
+                    offsetof( item, hMember ),
+                    co::gc<cds::gc::DHP>
+                > >
+                ,co::less< less<item> >
+                ,co::compare< cmp<item> >
+                ,ci::opt::disposer< faked_disposer >
+            >::type
+        >    list;
+        test_int<list>();
+    }
+    void IntrusiveMichaelListHeaderTest::DHP_member_ic()
+    {
+        typedef member_int_item< cds::gc::DHP > item;
+        typedef ci::MichaelList< cds::gc::DHP
+            ,item
+            ,ci::michael_list::make_traits<
+                ci::opt::hook< ci::michael_list::member_hook<
+                    offsetof( item, hMember ),
+                    co::gc<cds::gc::DHP>
+                > >
+                ,co::compare< cmp<item> >
+                ,ci::opt::disposer< faked_disposer >
+                ,co::item_counter< cds::atomicity::item_counter >
+            >::type
+        >    list;
+        test_int<list>();
+    }
+
+} // namespace ordlist