summaryrefslogtreecommitdiffstats
path: root/tests/core/object/test_object.h
diff options
context:
space:
mode:
Diffstat (limited to 'tests/core/object/test_object.h')
-rw-r--r--tests/core/object/test_object.h23
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