1#include <xrpl/basics/Mutex.hpp>
3#include <gtest/gtest.h>
21 auto m = Mutex<int>::make();
28 auto m = Mutex<int>::make(42);
35 auto m = Mutex<std::string>::make(
"test");
37 EXPECT_EQ(*lock,
"test");
44 EXPECT_NE(
lock->get(),
nullptr);
45 EXPECT_EQ(**lock, 100);
58 EXPECT_TRUE(lock->empty());
79 EXPECT_EQ(*lock,
"hello");
102 auto lock = m.lock();
103 EXPECT_EQ(
lock.get(), 10);
106 auto lock = m.lock();
107 EXPECT_EQ(
lock.get(), 30);
114 auto lock = m.lock();
115 EXPECT_EQ(
lock->size(), 4);
116 lock->append(
" string");
118 auto lock = m.lock();
119 EXPECT_EQ(*lock,
"test string");
126 auto lock = m.lock();
130 auto lock = m.lock();
131 EXPECT_EQ(
lock.get(), 20);
135 auto lock = m.lock();
136 EXPECT_EQ(*lock, 30);
146 Mutex<int>
const m(42);
147 auto lock = m.lock();
149 EXPECT_EQ(*lock, 42);
154 Mutex<int>
const m(42);
155 auto lock = m.lock();
157 EXPECT_EQ(
lock.get(), 42);
163 auto lock = m.lock();
165 EXPECT_EQ(
lock->size(), 4);
166 EXPECT_EQ(
lock->at(0),
't');
175 Mutex<std::vector<int>> m({1, 2, 3, 4, 5});
177 auto lock = m.lock();
178 EXPECT_EQ(
lock->size(), 5);
181 auto lock = m.lock();
182 EXPECT_EQ(
lock->size(), 6);
183 EXPECT_EQ(
lock->back(), 6);
188 Mutex<std::vector<int>>
const m({1, 2, 3, 4, 5, 6});
189 Mutex<std::vector<int>>
const& constRef = m;
190 auto lock = constRef.lock();
192 EXPECT_EQ(
lock->size(), 6);
193 EXPECT_EQ(
lock->at(5), 6);
204 auto lock = m.lock();
207 auto lock = m.lock();
230 Mutex<int, std::shared_mutex>
const m(100);
231 Mutex<int, std::shared_mutex>
const& constRef = m;
233 EXPECT_EQ(*lock, 100);
238 Mutex<int, std::shared_mutex> m(100);
244 EXPECT_EQ(*lock, 200);
262 auto m = Mutex<Data>::make(42,
"hello");
263 auto lock = m.lock();
264 EXPECT_EQ(
lock->x, 42);
265 EXPECT_EQ(
lock->y,
"hello");
270 auto m = Mutex<Data>::make(42,
"hello");
272 auto lock = m.lock();
277 auto lock = m.lock();
278 EXPECT_EQ(
lock->x, 100);
279 EXPECT_EQ(
lock->y,
"world");
285 auto const m = Mutex<Data>::make(42,
"hello");
286 auto lock = m.lock();
288 EXPECT_EQ(
lock->x, 42);
289 EXPECT_EQ(
lock->y,
"hello");
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Data(int x, std::string y)