Add readWithPriority to PriorityMPMCQueue
[folly.git] / folly / test / PriorityMPMCQueueTest.cpp
index a43cca0ba1eb886d0728ce2c6e662b91641a85e8..a129568f7793b5891a00ccd4898f6246c0978fb6 100644 (file)
@@ -73,3 +73,24 @@ TEST(PriorityMPMCQueue, TestPriorities) {
     EXPECT_EQ(6 - i, queue.sizeGuess());
   }
 }
+
+TEST(PriorityMPMCQueue, TestReadWithPriority) {
+  PriorityMPMCQueue<size_t> queue(3, 10);
+  EXPECT_TRUE(queue.isEmpty());
+  EXPECT_EQ(3, queue.getNumPriorities());
+
+  queue.writeWithPriority(2, 2);
+  queue.writeWithPriority(1, 1);
+  queue.writeWithPriority(0, 0);
+
+  EXPECT_FALSE(queue.isEmpty());
+  EXPECT_EQ(3, queue.size());
+  EXPECT_EQ(3, queue.sizeGuess());
+
+  size_t item;
+  for (int i = 0; i < 3; i++) {
+    EXPECT_TRUE(queue.readWithPriority(item, i));
+    EXPECT_EQ(i, item);
+    EXPECT_FALSE(queue.readWithPriority(item, i));
+  }
+}