diff options
| author | MarcoFalke <[email protected]> | 2020-02-29 15:56:22 -0500 |
|---|---|---|
| committer | MarcoFalke <[email protected]> | 2020-03-06 16:08:12 -0500 |
| commit | fab7d14ea5a4305317d66f35beb3225a07823d42 (patch) | |
| tree | 8a4cd461857310c1b6fa5587b88336d2b55dc265 /src | |
| parent | Merge #18234: refactor: Replace boost::mutex,condition_var,chrono with std eq... (diff) | |
| download | discoin-fab7d14ea5a4305317d66f35beb3225a07823d42.tar.xz discoin-fab7d14ea5a4305317d66f35beb3225a07823d42.zip | |
test: Check that wait_until returns if time point is in the past
Diffstat (limited to 'src')
| -rw-r--r-- | src/test/scheduler_tests.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/test/scheduler_tests.cpp b/src/test/scheduler_tests.cpp index 7d26840b7..caf9be5bd 100644 --- a/src/test/scheduler_tests.cpp +++ b/src/test/scheduler_tests.cpp @@ -98,6 +98,24 @@ BOOST_AUTO_TEST_CASE(manythreads) BOOST_CHECK_EQUAL(counterSum, 200); } +BOOST_AUTO_TEST_CASE(wait_until_past) +{ + std::condition_variable condvar; + Mutex mtx; + WAIT_LOCK(mtx, lock); + + const auto no_wait= [&](const std::chrono::seconds& d) { + return condvar.wait_until(lock, std::chrono::system_clock::now() - d); + }; + + BOOST_CHECK(std::cv_status::timeout == no_wait(std::chrono::seconds{1})); + BOOST_CHECK(std::cv_status::timeout == no_wait(std::chrono::minutes{1})); + BOOST_CHECK(std::cv_status::timeout == no_wait(std::chrono::hours{1})); + BOOST_CHECK(std::cv_status::timeout == no_wait(std::chrono::hours{10})); + BOOST_CHECK(std::cv_status::timeout == no_wait(std::chrono::hours{100})); + BOOST_CHECK(std::cv_status::timeout == no_wait(std::chrono::hours{1000})); +} + BOOST_AUTO_TEST_CASE(singlethreadedscheduler_ordered) { CScheduler scheduler; |