58 lines
1.0 KiB
C++
58 lines
1.0 KiB
C++
#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());
|
|
}
|