diff options
Diffstat (limited to 'tests/core/object/test_object.h')
-rw-r--r-- | tests/core/object/test_object.h | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/tests/core/object/test_object.h b/tests/core/object/test_object.h index 98f9b3da65..8ab6221a1c 100644 --- a/tests/core/object/test_object.h +++ b/tests/core/object/test_object.h @@ -399,6 +399,29 @@ TEST_CASE("[Object] Signals") { SIGNAL_CHECK("my_custom_signal", empty_signal_args); SIGNAL_UNWATCH(&object, "my_custom_signal"); } + + SUBCASE("Connecting and then disconnecting many signals should not leave anything behind") { + List<Object::Connection> signal_connections; + Object targets[100]; + + for (int i = 0; i < 10; i++) { + ERR_PRINT_OFF; + for (Object &target : targets) { + object.connect("my_custom_signal", callable_mp(&target, &Object::notify_property_list_changed)); + } + ERR_PRINT_ON; + signal_connections.clear(); + object.get_all_signal_connections(&signal_connections); + CHECK(signal_connections.size() == 100); + } + + for (Object &target : targets) { + object.disconnect("my_custom_signal", callable_mp(&target, &Object::notify_property_list_changed)); + } + signal_connections.clear(); + object.get_all_signal_connections(&signal_connections); + CHECK(signal_connections.size() == 0); + } } } // namespace TestObject |