-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathcustom-mutex.cpp
More file actions
46 lines (36 loc) · 1.1 KB
/
custom-mutex.cpp
File metadata and controls
46 lines (36 loc) · 1.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <boost/ut.hpp>
#include <lockpp/lock.hpp>
using namespace boost::ut;
using namespace boost::ut::bdd;
// NOLINTNEXTLINE
suite<"custom-mutex"> custom_mutex_suite = []()
{
"recursive_mutex"_test = []
{
lockpp::lock<int, std::recursive_mutex> test(10);
should("not deadlock") = [&]
{
auto read_1 = test.read();
auto read_2 = test.read();
auto write_1 = test.write();
auto write_2 = test.write();
expect(true);
};
};
"unique_ptr_mutex"_test = []
{
lockpp::lock<int, std::unique_ptr<std::shared_mutex>> test(10);
should("deduce traits") = [&]
{
using lock_t = decltype(test);
using mutex_t = std::shared_mutex;
expect(std::same_as<lock_t::read_lock<mutex_t>, std::shared_lock<mutex_t>>);
expect(std::same_as<lock_t::write_lock<mutex_t>, std::unique_lock<mutex_t>>);
};
should("be movable") = [&]
{
auto test2 = std::move(test);
expect(eq(test2.copy(), 10));
};
};
};