1 /* Copyright 2002, The libsigc++ Development Team
2 * Assigned to public domain. Use as you wish without restriction.
5 #include "testutilities.h"
6 #include <sigc++/trackable.h>
7 #include <sigc++/signal.h>
8 #include <sigc++/connection.h>
9 #include <sigc++/functors/ptr_fun.h>
10 #include <sigc++/functors/mem_fun.h>
16 std::ostringstream result_stream;
18 sigc::connection connection;
20 class HandlerClass : public sigc::trackable
25 result_stream << "handler called";
26 connection.disconnect();
30 } // end anonymous namespace
32 int main(int argc, char* argv[])
34 auto util = TestUtilities::get_instance();
36 if (!util->check_command_args(argc, argv))
37 return util->get_result_and_delete_instance() ? EXIT_SUCCESS : EXIT_FAILURE;
39 HandlerClass instance;
41 sigc::signal<void> signal_test;
42 connection = signal_test.connect(sigc::mem_fun(instance, &HandlerClass::handler));
43 result_stream << "Number of signal handlers before signal emission: " << signal_test.size();
44 util->check_result(result_stream, "Number of signal handlers before signal emission: 1");
46 util->check_result(result_stream, "handler called");
47 result_stream << "Number of signal handlers after signal emission: " << signal_test.size();
48 util->check_result(result_stream, "Number of signal handlers after signal emission: 0");
50 return util->get_result_and_delete_instance() ? EXIT_SUCCESS : EXIT_FAILURE;