From 1110808a9d39d4b808aef724c861a2e1a38d2a69 Mon Sep 17 00:00:00 2001
From: Devtools Arcadia <arcadia-devtools@yandex-team.ru>
Date: Mon, 7 Feb 2022 18:08:42 +0300
Subject: intermediate changes ref:cde9a383711a11544ce7e107a78147fb96cc4029

---
 library/cpp/messagebus/lfqueue_batch_ut.cpp | 56 +++++++++++++++++++++++++++++
 1 file changed, 56 insertions(+)
 create mode 100644 library/cpp/messagebus/lfqueue_batch_ut.cpp

(limited to 'library/cpp/messagebus/lfqueue_batch_ut.cpp')

diff --git a/library/cpp/messagebus/lfqueue_batch_ut.cpp b/library/cpp/messagebus/lfqueue_batch_ut.cpp
new file mode 100644
index 0000000000..f80434c0d4
--- /dev/null
+++ b/library/cpp/messagebus/lfqueue_batch_ut.cpp
@@ -0,0 +1,56 @@
+#include <library/cpp/testing/unittest/registar.h>
+
+#include "lfqueue_batch.h"
+
+Y_UNIT_TEST_SUITE(TLockFreeQueueBatch) {
+    Y_UNIT_TEST(Order1) {
+        TLockFreeQueueBatch<unsigned> q;
+        {
+            TAutoPtr<TVector<unsigned>> v(new TVector<unsigned>);
+            v->push_back(0);
+            v->push_back(1);
+            q.EnqueueAll(v);
+        }
+
+        TVector<unsigned> r;
+        q.DequeueAllSingleConsumer(&r);
+
+        UNIT_ASSERT_VALUES_EQUAL(2u, r.size());
+        for (unsigned i = 0; i < 2; ++i) {
+            UNIT_ASSERT_VALUES_EQUAL(i, r[i]);
+        }
+
+        r.clear();
+        q.DequeueAllSingleConsumer(&r);
+        UNIT_ASSERT_VALUES_EQUAL(0u, r.size());
+    }
+
+    Y_UNIT_TEST(Order2) {
+        TLockFreeQueueBatch<unsigned> q;
+        {
+            TAutoPtr<TVector<unsigned>> v(new TVector<unsigned>);
+            v->push_back(0);
+            v->push_back(1);
+            q.EnqueueAll(v);
+        }
+        {
+            TAutoPtr<TVector<unsigned>> v(new TVector<unsigned>);
+            v->push_back(2);
+            v->push_back(3);
+            v->push_back(4);
+            q.EnqueueAll(v);
+        }
+
+        TVector<unsigned> r;
+        q.DequeueAllSingleConsumer(&r);
+
+        UNIT_ASSERT_VALUES_EQUAL(5u, r.size());
+        for (unsigned i = 0; i < 5; ++i) {
+            UNIT_ASSERT_VALUES_EQUAL(i, r[i]);
+        }
+
+        r.clear();
+        q.DequeueAllSingleConsumer(&r);
+        UNIT_ASSERT_VALUES_EQUAL(0u, r.size());
+    }
+}
-- 
cgit v1.2.3