From 3f2c49572bc630bd87704950052750910bfd9eb0 Mon Sep 17 00:00:00 2001 From: Stephen Seo Date: Fri, 12 Jan 2024 13:55:28 +0900 Subject: [PATCH] Add UnitTest file for CXX11_shared_spin_lock --- CMakeLists.txt | 1 + src/test/TestSharedSpinLock.cpp | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) create mode 100644 src/test/TestSharedSpinLock.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index a504c7b..589d533 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -67,6 +67,7 @@ if(CMAKE_BUILD_TYPE MATCHES "Debug") src/test/UDPC_UnitTest.cpp src/test/TestTSLQueue.cpp src/test/TestUDPC.cpp + src/test/TestSharedSpinLock.cpp ) add_executable(UnitTest ${UDPC_UnitTest_SOURCES}) target_compile_features(UnitTest PUBLIC cxx_std_11) diff --git a/src/test/TestSharedSpinLock.cpp b/src/test/TestSharedSpinLock.cpp new file mode 100644 index 0000000..dda0e4e --- /dev/null +++ b/src/test/TestSharedSpinLock.cpp @@ -0,0 +1,18 @@ +#include + +#include "CXX11_shared_spin_lock.hpp" + +TEST(CXX11_shared_spin_lock, simple) { + UDPC::SharedSpinLock::Ptr spinLockPtr = UDPC::SharedSpinLock::newInstance(); + + auto readLock = spinLockPtr->spin_read_lock(); + EXPECT_TRUE(readLock.isValid()); + EXPECT_TRUE(spinLockPtr->spin_read_lock().isValid()); + EXPECT_FALSE(spinLockPtr->try_spin_write_lock().isValid()); + + auto writeLock = spinLockPtr->trade_read_for_write_lock(readLock); + EXPECT_TRUE(writeLock.isValid()); + EXPECT_FALSE(readLock.isValid()); + EXPECT_FALSE(spinLockPtr->try_spin_read_lock().isValid()); + EXPECT_FALSE(spinLockPtr->try_spin_write_lock().isValid()); +}