#include "doctest.h" #include #include #include using namespace tt; TEST_CASE("withLock() locks correctly on Semaphore") { auto semaphore = std::make_shared(2U); semaphore->withLock([semaphore](){ CHECK_EQ(semaphore->getAvailable(), 1); }); } TEST_CASE("withLock() unlocks correctly on Semaphore") { auto semaphore = std::make_shared(2U); semaphore->withLock([=](){ // NO-OP }); CHECK_EQ(semaphore->getAvailable(), 2); } TEST_CASE("withLock() locks correctly on Mutex") { auto mutex = std::make_shared(); mutex->withLock([mutex](){ CHECK_EQ(mutex->lock(1), false); }); } TEST_CASE("withLock() unlocks correctly on Mutex") { auto mutex = std::make_shared(); mutex->withLock([=](){ // NO-OP }); CHECK_EQ(mutex->lock(1), true); CHECK_EQ(mutex->unlock(), true); }