1#include <xrpl/basics/Mutex.hpp>
3#include <gtest/gtest.h>
19 auto m = Mutex<int>::make();
26 auto m = Mutex<int>::make(42);
33 auto m = Mutex<std::string>::make(
"test");
35 EXPECT_EQ(*lock,
"test");
42 EXPECT_NE(
lock->get(),
nullptr);
43 EXPECT_EQ(**lock, 100);
56 EXPECT_TRUE(lock->empty());
77 EXPECT_EQ(*lock,
"hello");
100 auto lock = m.lock();
101 EXPECT_EQ(
lock.get(), 10);
104 auto lock = m.lock();
105 EXPECT_EQ(
lock.get(), 30);
112 auto lock = m.lock();
113 EXPECT_EQ(
lock->size(), 4);
114 lock->append(
" string");
116 auto lock = m.lock();
117 EXPECT_EQ(*lock,
"test string");
124 auto lock = m.lock();
128 auto lock = m.lock();
129 EXPECT_EQ(
lock.get(), 20);
133 auto lock = m.lock();
134 EXPECT_EQ(*lock, 30);
144 Mutex<int>
const m(42);
145 auto lock = m.lock();
147 EXPECT_EQ(*lock, 42);
152 Mutex<int>
const m(42);
153 auto lock = m.lock();
155 EXPECT_EQ(
lock.get(), 42);
161 auto lock = m.lock();
163 EXPECT_EQ(
lock->size(), 4);
164 EXPECT_EQ(
lock->at(0),
't');
173 Mutex<std::vector<int>> m({1, 2, 3, 4, 5});
175 auto lock = m.lock();
176 EXPECT_EQ(
lock->size(), 5);
179 auto lock = m.lock();
180 EXPECT_EQ(
lock->size(), 6);
181 EXPECT_EQ(
lock->back(), 6);
186 Mutex<std::vector<int>>
const m({1, 2, 3, 4, 5, 6});
187 Mutex<std::vector<int>>
const& const_ref = m;
188 auto lock = const_ref.lock();
190 EXPECT_EQ(
lock->size(), 6);
191 EXPECT_EQ(
lock->at(5), 6);
202 auto lock = m.lock();
205 auto lock = m.lock();
228 Mutex<int, std::shared_mutex>
const m(100);
229 Mutex<int, std::shared_mutex>
const& const_ref = m;
231 EXPECT_EQ(*lock, 100);
236 Mutex<int, std::shared_mutex> m(100);
242 EXPECT_EQ(*lock, 200);
260 auto m = Mutex<Data>::make(42,
"hello");
261 auto lock = m.lock();
262 EXPECT_EQ(
lock->x, 42);
263 EXPECT_EQ(
lock->y,
"hello");
268 auto m = Mutex<Data>::make(42,
"hello");
270 auto lock = m.lock();
275 auto lock = m.lock();
276 EXPECT_EQ(
lock->x, 100);
277 EXPECT_EQ(
lock->y,
"world");
283 auto const m = Mutex<Data>::make(42,
"hello");
284 auto lock = m.lock();
286 EXPECT_EQ(
lock->x, 42);
287 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_)