diff --git a/tests/signal/tst_signal.cpp b/tests/signal/tst_signal.cpp index bb6b505..074c815 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;