test: Check that wait_until returns if time point is in the past

This commit is contained in:
MarcoFalke 2020-02-29 15:56:22 -05:00
parent 3516a31eaa
commit fab7d14ea5
No known key found for this signature in database
GPG Key ID: CE2B75697E69A548

View File

@ -98,6 +98,24 @@ BOOST_AUTO_TEST_CASE(manythreads)
BOOST_CHECK_EQUAL(counterSum, 200); 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) BOOST_AUTO_TEST_CASE(singlethreadedscheduler_ordered)
{ {
CScheduler scheduler; CScheduler scheduler;