summaryrefslogtreecommitdiff
path: root/tests/test_signal.cc
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_signal.cc')
-rw-r--r--tests/test_signal.cc12
1 files changed, 12 insertions, 0 deletions
diff --git a/tests/test_signal.cc b/tests/test_signal.cc
index d050558..34a8c7d 100644
--- a/tests/test_signal.cc
+++ b/tests/test_signal.cc
@@ -5,6 +5,7 @@
#include "testutilities.h"
#include <sigc++/trackable.h>
#include <sigc++/signal.h>
+#include <memory>
namespace
{
@@ -110,6 +111,17 @@ test_make_slot()
sig2.connect(sig.make_slot());
sig2(3);
util->check_result(result_stream, "foo(int 3) bar(float 3) foo(int 3) ");
+
+ // Delete a signal that has been connected to sig2.
+ sig2.clear();
+ sig2.connect(sigc::ptr_fun(&bar));
+ auto sig3 = std::make_unique<sigc::signal<int(int)>>();
+ sig3->connect(sigc::ptr_fun(&foo));
+ sig2.connect(sig3->make_slot());
+ sig2(2);
+ sig3.reset();
+ sig2(42);
+ util->check_result(result_stream, "bar(float 2) foo(int 2) bar(float 42) ");
}
void