diff options
author | vadim-xd <vadim-xd@yandex-team.com> | 2024-08-21 00:41:57 +0300 |
---|---|---|
committer | vadim-xd <vadim-xd@yandex-team.com> | 2024-08-21 00:52:38 +0300 |
commit | 9960bc359ba411fc8799627e470458da4e6a92a2 (patch) | |
tree | a63f6af522a6c6899e260bfee984ceb4cc3a2d58 /util/generic/queue_ut.cpp | |
parent | e03d614bb6add85427781e85448b33f57584d866 (diff) | |
download | ydb-9960bc359ba411fc8799627e470458da4e6a92a2.tar.gz |
Add TPriorityQueue::PopValue
ce37597283b1508bdba021056c149fe16feb1c69
Diffstat (limited to 'util/generic/queue_ut.cpp')
-rw-r--r-- | util/generic/queue_ut.cpp | 38 |
1 files changed, 37 insertions, 1 deletions
diff --git a/util/generic/queue_ut.cpp b/util/generic/queue_ut.cpp index a33399e104..43ba89559a 100644 --- a/util/generic/queue_ut.cpp +++ b/util/generic/queue_ut.cpp @@ -1,6 +1,7 @@ #include "queue.h" +#include "deque.h" #include "list.h" -#include "vector.h" +#include "ptr.h" #include <library/cpp/testing/unittest/registar.h> @@ -152,6 +153,41 @@ Y_UNIT_TEST_SUITE(TYQueueTest) { UNIT_ASSERT(q.empty()); } + struct THolderWithPriority { + THolderWithPriority(const TString& value, int priority) + : Value(MakeHolder<TString>(value)) + , Priority(priority) + { + } + + THolder<TString> Value; // THolder to test move-ctor + int Priority; + + std::weak_ordering operator<=>(const THolderWithPriority& other) const noexcept { + return Priority <=> other.Priority; + } + }; + + Y_UNIT_TEST(pqueue5) { + // Test move-and-pop + TPriorityQueue<THolderWithPriority> q; + + UNIT_ASSERT(q.empty()); + q.emplace("min", 1); + q.emplace("max", 3); + q.emplace("middle", 2); + + auto value = q.PopValue().Value; + UNIT_ASSERT(*value == "max"); + + value = q.PopValue().Value; + UNIT_ASSERT(*value == "middle"); + + value = q.PopValue().Value; + UNIT_ASSERT(*value == "min"); + UNIT_ASSERT(q.empty()); + } + Y_UNIT_TEST(queue1) { TQueue<int, TList<int>> q; |