]> git.seodisparate.com - UDPConnection/commitdiff
Add UnitTest file for CXX11_shared_spin_lock
authorStephen Seo <seo.disparate@gmail.com>
Fri, 12 Jan 2024 04:55:28 +0000 (13:55 +0900)
committerStephen Seo <seo.disparate@gmail.com>
Fri, 12 Jan 2024 04:55:28 +0000 (13:55 +0900)
CMakeLists.txt
src/test/TestSharedSpinLock.cpp [new file with mode: 0644]

index a504c7b89bee989ec8777cdb91c1e6ba8e672e22..589d5330374bfdb34a6a77ebae4a36baa0da2ba1 100644 (file)
@@ -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 (file)
index 0000000..dda0e4e
--- /dev/null
@@ -0,0 +1,18 @@
+#include <gtest/gtest.h>
+
+#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());
+}