BasketQueue refactoring
[libcds.git] / tests / test-hdr / queue / hdr_basketqueue_hp.cpp
diff --git a/tests/test-hdr/queue/hdr_basketqueue_hp.cpp b/tests/test-hdr/queue/hdr_basketqueue_hp.cpp
new file mode 100644 (file)
index 0000000..80b2a5b
--- /dev/null
@@ -0,0 +1,115 @@
+//$$CDS-header$$
+
+#include <cds/gc/hp.h>
+#include <cds/container/basket_queue.h>
+
+#include "queue/hdr_queue_new.h"
+
+namespace queue {
+
+    void HdrTestQueue::BasketQueue_HP()
+    {
+        typedef cds::container::BasketQueue< cds::gc::HP, int > queue_type;
+        test_no_ic< queue_type >();
+    }
+
+    void HdrTestQueue::BasketQueue_HP_Counted()
+    {
+        struct traits : public cds::container::basket_queue::traits
+        {
+            typedef cds::atomicity::item_counter item_counter;
+        };
+        typedef cds::container::BasketQueue< cds::gc::HP, int, traits > queue_type;
+        test_ic< queue_type >();
+    }
+
+    void HdrTestQueue::BasketQueue_HP_relax()
+    {
+        struct traits : public
+            cds::container::basket_queue::make_traits <
+                cds::opt::memory_model< cds::opt::v::relaxed_ordering>
+            > ::type
+        {};
+        typedef cds::container::BasketQueue< cds::gc::HP, int, traits > queue_type;
+        test_no_ic< queue_type >();
+    }
+
+    void HdrTestQueue::BasketQueue_HP_Counted_relax()
+    {
+        typedef cds::container::BasketQueue< cds::gc::HP, int, 
+            typename cds::container::basket_queue::make_traits <
+                cds::opt::item_counter< cds::atomicity::item_counter >
+                ,cds::opt::memory_model< cds::opt::v::relaxed_ordering>
+            >::type
+        > queue_type;
+        test_ic< queue_type >();
+    }
+
+    void HdrTestQueue::BasketQueue_HP_seqcst()
+    {
+        struct traits : public cds::container::basket_queue::traits
+        {
+            typedef cds::opt::v::sequential_consistent memory_model;
+        };
+        typedef cds::container::BasketQueue< cds::gc::HP, int, traits > queue_type;
+        test_no_ic< queue_type >();
+    }
+
+    void HdrTestQueue::BasketQueue_HP_Counted_seqcst()
+    {
+        typedef cds::container::BasketQueue < cds::gc::HP, int,
+            typename cds::container::basket_queue::make_traits <
+                cds::opt::item_counter< cds::atomicity::item_counter >
+                ,cds::opt::memory_model< cds::opt::v::sequential_consistent>
+            >::type
+        > queue_type;
+        test_ic< queue_type >();
+    }
+
+    void HdrTestQueue::BasketQueue_HP_relax_align()
+    {
+        typedef cds::container::BasketQueue < cds::gc::HP, int,
+            typename cds::container::basket_queue::make_traits <
+                cds::opt::memory_model< cds::opt::v::relaxed_ordering>
+                ,cds::opt::alignment< 16 >
+            >::type
+        > queue_type;
+        test_ic< queue_type >();
+    }
+
+    void HdrTestQueue::BasketQueue_HP_Counted_relax_align()
+    {
+        struct traits : public cds::container::basket_queue::traits
+        {
+            typedef cds::atomicity::item_counter item_counter;
+            typedef cds::opt::v::relaxed_ordering memory_model;
+            enum { alignment = 32 };
+        };
+        typedef cds::container::BasketQueue < cds::gc::HP, int, traits > queue_type;
+        test_ic< queue_type >( 0 );
+    }
+
+    void HdrTestQueue::BasketQueue_HP_seqcst_align()
+    {
+        typedef cds::container::BasketQueue < cds::gc::HP, int,
+            typename cds::container::basket_queue::make_traits <
+                cds::opt::memory_model< cds::opt::v::sequential_consistent>
+                , cds::opt::alignment< cds::opt::no_special_alignment >
+            > ::type
+        > queue_type;
+        test_no_ic< queue_type >();
+    }
+
+    void HdrTestQueue::BasketQueue_HP_Counted_seqcst_align()
+    {
+        typedef cds::container::BasketQueue < cds::gc::HP, int,
+            typename cds::container::basket_queue::make_traits <
+                cds::opt::item_counter< cds::atomicity::item_counter >
+                ,cds::opt::memory_model< cds::opt::v::sequential_consistent>
+                ,cds::opt::alignment< cds::opt::cache_line_alignment >
+            > ::type
+        > queue_type;
+        test_no_ic< queue_type >();
+    }
+
+}   // namespace queue