aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp/threading/future/future_ut.cpp
diff options
context:
space:
mode:
authorilnurkh <ilnurkh@yandex-team.com>2024-07-26 15:19:25 +0300
committerilnurkh <ilnurkh@yandex-team.com>2024-07-26 15:31:14 +0300
commit696e048df66bace916e830df8fc37349098d22cf (patch)
treef23871493d3a95d3a2b96ea58e7591118277fbd2 /library/cpp/threading/future/future_ut.cpp
parent43c64f9b535d8e793a95647872127d2843ac0f01 (diff)
downloadydb-696e048df66bace916e830df8fc37349098d22cf.tar.gz
TFuture add IsReady method
IsReady returns true if exception or value was set. allows to check readiness without locking cheсker-thread NOTE: returns true even if value was extracted from promise good replace for HasValue() || HasException() b2d64093e25cef5a350dfebe784c449203a5b383
Diffstat (limited to 'library/cpp/threading/future/future_ut.cpp')
-rw-r--r--library/cpp/threading/future/future_ut.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/library/cpp/threading/future/future_ut.cpp b/library/cpp/threading/future/future_ut.cpp
index 26f8fa9e9c..ceb07cae93 100644
--- a/library/cpp/threading/future/future_ut.cpp
+++ b/library/cpp/threading/future/future_ut.cpp
@@ -105,6 +105,7 @@ namespace {
future = MakeFuture(345);
UNIT_ASSERT(future.HasValue());
+ UNIT_ASSERT(future.IsReady());
UNIT_ASSERT_EQUAL(future.GetValue(), 345);
}
@@ -115,6 +116,7 @@ namespace {
TFuture<void> future = promise.GetFuture();
UNIT_ASSERT(future.HasValue());
+ UNIT_ASSERT(future.IsReady());
future = MakeFuture();
UNIT_ASSERT(future.HasValue());
@@ -523,6 +525,7 @@ namespace {
{
auto future1 = MakeErrorFuture<void>(std::make_exception_ptr(TFutureException()));
UNIT_ASSERT(future1.HasException());
+ UNIT_ASSERT(future1.IsReady());
UNIT_CHECK_GENERATED_EXCEPTION(future1.GetValue(), TFutureException);
auto future2 = MakeErrorFuture<int>(std::make_exception_ptr(TFutureException()));
@@ -563,6 +566,7 @@ namespace {
promise2.SetException("foo-exception");
wait.Wait();
UNIT_ASSERT(future2.HasException());
+ UNIT_ASSERT(!future1.IsReady());
UNIT_ASSERT(!future1.HasValue() && !future1.HasException());
}