#include "piconditionvar.h" #include "pithread.h" #include "testutil.h" #include "gmock/gmock.h" #include "gtest/gtest.h" class ConditionLock : public ::testing::Test , public TestUtil { public: PIMutex * m = new PIMutex(); bool isProtect; bool isReleased; }; TEST_F(ConditionLock, DISABLED_lock_is_protect) { m->lock(); isProtect = true; createThread([&]() { m->lock(); isProtect = false; }); EXPECT_FALSE(thread->waitForFinish(WAIT_THREAD_TIME_MS)); ASSERT_TRUE(isProtect); } TEST_F(ConditionLock, DISABLED_unlock_is_release) { m->lock(); isReleased = false; m->unlock(); createThread([&]() { m->lock(); isReleased = true; m->unlock(); }); ASSERT_TRUE(isReleased); } TEST_F(ConditionLock, tryLock_is_false_when_locked) { createThread([&]() { m->lock(); piMSleep(WAIT_THREAD_TIME_MS); }); ASSERT_FALSE(m->tryLock()); } TEST_F(ConditionLock, tryLock_is_true_when_unlocked) { ASSERT_TRUE(m->tryLock()); } TEST_F(ConditionLock, tryLock_is_recursive_lock_enable) { m->lock(); ASSERT_TRUE(m->tryLock()); }