8#include <boost/test/unit_test.hpp>
16 MoveOnlyData(
int data) : m_data(
data) {}
17 MoveOnlyData(MoveOnlyData&&) =
default;
19 MoveOnlyData& operator=(MoveOnlyData&&) =
delete;
20 MoveOnlyData(
const MoveOnlyData&) =
delete;
21 MoveOnlyData& operator=(
const MoveOnlyData&) =
delete;
26MoveOnlyData MoveOnlyReturnCallback(
int val)
31void IncrementCallback(
int& val)
35void SquareCallback(
int& val)
58 sig0.
connect(IncrementCallback);
69 auto conn0 = sig0.
connect(IncrementCallback);
70 auto conn1 = sig0.
connect(SquareCallback);
83 conn0 = sig0.
connect(IncrementCallback);
84 conn1 = sig0.
connect(IncrementCallback);
105 sig0.
connect(MoveOnlyReturnCallback);
117 decltype(sig0)::result_type
ret;
151 std::atomic<uint32_t> val{0};
152 auto conn0 = sig0.
connect([&val] {
156 std::thread incrementor([&conn0, &sig0] {
157 for (
int i = 0; i < 1000; i++) {
164 assert(conn0.connected());
167 std::thread extra_increment_injector([&conn0, &sig0, &val] {
168 static constexpr size_t num_extra_conns{1000};
169 std::vector<btcsignals::scoped_connection> extra_conns;
170 extra_conns.reserve(num_extra_conns);
171 for (
size_t i = 0; i < num_extra_conns; i++) {
174 extra_conns.emplace_back(sig0.
connect([&val] {
181 extra_increment_injector.join();
188 BOOST_CHECK_GE(val.load(), 3000);
198 bool nonrecursive_callback_ran{
false};
199 bool recursive_callback_ran{
false};
203 nonrecursive_callback_ran =
true;
210 nonrecursive_callback_ran =
false;
212 nonrecursive_callback_ran =
true;
223 nonrecursive_callback_ran =
false;
227 recursive_callback_ran =
true;
231 nonrecursive_callback_ran =
true;
258 std::binary_semaphore done1{0};
259 std::binary_semaphore done2{0};
262 conn0 = sig0.
connect([&](
int&) {
267 conn1 = sig0.
connect(IncrementCallback);
268 conn2 = sig0.
connect(IncrementCallback);
269 std::thread thr([&] {
BOOST_AUTO_TEST_CASE(callback_order)
void disconnect()
If a callback is associated with this connection, prevent it from being called in the future.
bool connected() const
Returns true if this connection was created by a signal and has not been disabled.
connection connect(Callable &&func) EXCLUSIVE_LOCKS_REQUIRED(!m_mutex)
bool empty() const EXCLUSIVE_LOCKS_REQUIRED(!m_mutex)
BOOST_FIXTURE_TEST_SUITE(cuckoocache_tests, BasicTestingSetup)
Test Suite for CuckooCache.
BOOST_AUTO_TEST_SUITE_END()
#define BOOST_CHECK_EQUAL(v1, v2)
#define BOOST_CHECK(expr)