Fixed priority inversion bug in MSPriorityQueue
[libcds.git] / test / unit / pqueue / fcpqueue_deque.cpp
index 0f7e0b9369fbfb8bd515e6b82ddeec08c3159f87..1da9be981e3c99449bc7b9d5f3f2524660de855b 100644 (file)
@@ -67,6 +67,63 @@ namespace cds_test {
         test( pq );
     }
 
+    TEST_F( FCPQueue, deque_stat_single_mutex_single_condvar )
+    {
+        typedef cds::container::FCPriorityQueue<
+            value_type
+            ,std::priority_queue<
+                value_type
+                ,std::deque<value_type>
+                ,less
+            >
+            ,cds::container::fcpqueue::make_traits<
+                cds::opt::stat< cds::container::fcpqueue::stat<> >
+                , cds::opt::wait_strategy< cds::algo::flat_combining::wait_strategy::single_mutex_single_condvar<>>
+            >::type
+        > pqueue_type;
+
+        pqueue_type pq;
+        test( pq );
+    }
+
+    TEST_F( FCPQueue, deque_empty_wait_strategy )
+    {
+        typedef cds::container::FCPriorityQueue<
+            value_type
+            ,std::priority_queue<
+                value_type
+                ,std::deque<value_type>
+                ,less
+            >
+            ,cds::container::fcpqueue::make_traits<
+                cds::opt::stat< cds::container::fcpqueue::stat<> >
+                , cds::opt::wait_strategy< cds::algo::flat_combining::wait_strategy::empty >
+            >::type
+        > pqueue_type;
+
+        pqueue_type pq;
+        test( pq );
+    }
+
+    TEST_F( FCPQueue, deque_single_mutex_multi_condvar )
+    {
+        typedef cds::container::FCPriorityQueue<
+            value_type
+            ,std::priority_queue<
+                value_type
+                ,std::deque<value_type>
+                ,less
+            >
+            ,cds::container::fcpqueue::make_traits<
+                cds::opt::stat< cds::container::fcpqueue::stat<> >
+                , cds::opt::wait_strategy< cds::algo::flat_combining::wait_strategy::single_mutex_multi_condvar<2>>
+            >::type
+        > pqueue_type;
+
+        pqueue_type pq;
+        test( pq );
+    }
+
     TEST_F( FCPQueue, deque_mutex )
     {
         typedef cds::container::FCPriorityQueue<
@@ -84,4 +141,22 @@ namespace cds_test {
         test( pq );
     }
 
+    TEST_F( FCPQueue, deque_multi_mutex_multi_condvar )
+    {
+        typedef cds::container::FCPriorityQueue<
+            value_type
+            ,std::priority_queue<
+                value_type
+                ,std::deque<value_type>
+            >
+            ,cds::container::fcpqueue::make_traits<
+                cds::opt::lock_type< std::mutex >
+                , cds::opt::wait_strategy< cds::algo::flat_combining::wait_strategy::multi_mutex_multi_condvar<1000>>
+            >::type
+        > pqueue_type;
+
+        pqueue_type pq;
+        test( pq );
+    }
+
 } // namespace cds_test