From 93d1e7f1d2f8202bdd7c39e3c13680ce2b20a7b7 Mon Sep 17 00:00:00 2001 From: Leon Matthes Date: Fri, 17 May 2024 18:46:45 +0200 Subject: [PATCH] Add a self-blocking connection test In addition to single-shot connections, add a test for reflective blocking connections. --- tests/signal/tst_signal.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/tests/signal/tst_signal.cpp b/tests/signal/tst_signal.cpp index 044d462..c5b330f 100644 --- a/tests/signal/tst_signal.cpp +++ b/tests/signal/tst_signal.cpp @@ -284,6 +284,29 @@ TEST_CASE("Signal connections") REQUIRE(val == 10); // 'val' was incremented once to 10 by the first emit and should remain at 10 } + SUBCASE("Self-blocking connection") + { + Signal mySignal; + int val = 5; + + auto handle = mySignal.connectReflective([&val](ConnectionHandle &self, int value) { + val += value; + self.block(true); + }); + + REQUIRE_FALSE(handle.isBlocked()); + mySignal.emit(5); + REQUIRE(val == 10); + REQUIRE(handle.isBlocked()); + + mySignal.emit(5); + REQUIRE(val == 10); + + handle.block(false); + mySignal.emit(5); + REQUIRE(val == 15); + } + SUBCASE("A signal with arguments can be connected to a lambda and invoked with l-value args") { Signal signal;