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)
--- /dev/null
+#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());
+}