Skip to content

Commit fab7d14

Browse files
author
MarcoFalke
committed
test: Check that wait_until returns if time point is in the past
1 parent 3516a31 commit fab7d14

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

src/test/scheduler_tests.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,24 @@ BOOST_AUTO_TEST_CASE(manythreads)
9898
BOOST_CHECK_EQUAL(counterSum, 200);
9999
}
100100

101+
BOOST_AUTO_TEST_CASE(wait_until_past)
102+
{
103+
std::condition_variable condvar;
104+
Mutex mtx;
105+
WAIT_LOCK(mtx, lock);
106+
107+
const auto no_wait= [&](const std::chrono::seconds& d) {
108+
return condvar.wait_until(lock, std::chrono::system_clock::now() - d);
109+
};
110+
111+
BOOST_CHECK(std::cv_status::timeout == no_wait(std::chrono::seconds{1}));
112+
BOOST_CHECK(std::cv_status::timeout == no_wait(std::chrono::minutes{1}));
113+
BOOST_CHECK(std::cv_status::timeout == no_wait(std::chrono::hours{1}));
114+
BOOST_CHECK(std::cv_status::timeout == no_wait(std::chrono::hours{10}));
115+
BOOST_CHECK(std::cv_status::timeout == no_wait(std::chrono::hours{100}));
116+
BOOST_CHECK(std::cv_status::timeout == no_wait(std::chrono::hours{1000}));
117+
}
118+
101119
BOOST_AUTO_TEST_CASE(singlethreadedscheduler_ordered)
102120
{
103121
CScheduler scheduler;

0 commit comments

Comments
 (0)