42 lines
702 B
C++
42 lines
702 B
C++
|
|
#include <gtest/gtest.h>
|
||
|
|
#include <XCEngine/Threading/Mutex.h>
|
||
|
|
|
||
|
|
using namespace XCEngine::Threading;
|
||
|
|
|
||
|
|
namespace {
|
||
|
|
|
||
|
|
TEST(Threading_Mutex, LockUnlock) {
|
||
|
|
Mutex mutex;
|
||
|
|
|
||
|
|
mutex.Lock();
|
||
|
|
mutex.Unlock();
|
||
|
|
}
|
||
|
|
|
||
|
|
TEST(Threading_Mutex, TryLock_Success) {
|
||
|
|
Mutex mutex;
|
||
|
|
|
||
|
|
bool result = mutex.TryLock();
|
||
|
|
EXPECT_TRUE(result);
|
||
|
|
mutex.Unlock();
|
||
|
|
}
|
||
|
|
|
||
|
|
TEST(Threading_Mutex, TryLock_AlreadyLocked) {
|
||
|
|
Mutex mutex;
|
||
|
|
|
||
|
|
mutex.Lock();
|
||
|
|
bool result = mutex.TryLock();
|
||
|
|
EXPECT_FALSE(result);
|
||
|
|
mutex.Unlock();
|
||
|
|
}
|
||
|
|
|
||
|
|
TEST(Threading_Mutex, MultipleLockUnlock) {
|
||
|
|
Mutex mutex;
|
||
|
|
|
||
|
|
for (int i = 0; i < 10; ++i) {
|
||
|
|
mutex.Lock();
|
||
|
|
mutex.Unlock();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
} // namespace
|