13
13
14
14
namespace
15
15
{
16
+
17
+ TestUtilities* util = nullptr ;
16
18
std::ostringstream result_stream;
17
19
18
20
int foo (int i)
@@ -21,12 +23,6 @@ int foo(int i)
21
23
return 1 ;
22
24
}
23
25
24
- int bar (float i)
25
- {
26
- result_stream << " bar(float " << i << " ) " ;
27
- return 1 ;
28
- }
29
-
30
26
struct A : public sigc ::trackable
31
27
{
32
28
int foo (int i)
@@ -42,21 +38,26 @@ struct A : public sigc::trackable
42
38
}
43
39
};
44
40
45
- } // end anonymous namespace
46
-
47
- int main (int argc, char * argv[])
41
+ void test_empty_signal ()
48
42
{
49
- auto util = TestUtilities::get_instance ();
50
-
51
- if (!util->check_command_args (argc, argv))
52
- return util->get_result_and_delete_instance () ? EXIT_SUCCESS : EXIT_FAILURE;
53
-
54
43
// signal
55
44
sigc::signal<int ,int > sig;
56
45
57
46
// emit empty signal
58
47
sig (0 );
59
48
util->check_result (result_stream, " " );
49
+ }
50
+
51
+ int bar (float i)
52
+ {
53
+ result_stream << " bar(float " << i << " ) " ;
54
+ return 1 ;
55
+ }
56
+
57
+ void test_auto_disconnection ()
58
+ {
59
+ // signal
60
+ sigc::signal<int ,int > sig;
60
61
61
62
// connect some slots before emitting & test auto-disconnection
62
63
{
@@ -73,7 +74,10 @@ int main(int argc, char* argv[])
73
74
sig (2 );
74
75
result_stream << sig.size ();
75
76
util->check_result (result_stream, " foo(int 2) bar(float 2) 2" );
77
+ }
76
78
79
+ void test_reference ()
80
+ {
77
81
// test reference
78
82
A a;
79
83
std::string str (" guest book" );
@@ -82,13 +86,35 @@ int main(int argc, char* argv[])
82
86
sigstr (str);
83
87
result_stream << str;
84
88
util->check_result (result_stream, " A::foo(string 'guest book') foo was here" );
89
+ }
85
90
91
+ void test_make_slot ()
92
+ {
86
93
// test make_slot()
94
+ sigc::signal<int ,int > sig;
87
95
sig.connect (sigc::ptr_fun1 (&foo));
96
+ sig.connect (sigc::ptr_fun (&bar));
97
+ sig.connect (sigc::ptr_fun (&foo));
98
+
88
99
sigc::signal<int ,int > sig2;
89
100
sig2.connect (sig.make_slot ());
90
101
sig2 (3 );
91
102
util->check_result (result_stream, " foo(int 3) bar(float 3) foo(int 3) " );
103
+ }
104
+
105
+ } // end anonymous namespace
106
+
107
+ int main (int argc, char * argv[])
108
+ {
109
+ util = TestUtilities::get_instance ();
110
+
111
+ if (!util->check_command_args (argc, argv))
112
+ return util->get_result_and_delete_instance () ? EXIT_SUCCESS : EXIT_FAILURE;
113
+
114
+ test_empty_signal ();
115
+ test_auto_disconnection ();
116
+ test_reference ();
117
+ test_make_slot ();
92
118
93
119
return util->get_result_and_delete_instance () ? EXIT_SUCCESS : EXIT_FAILURE;
94
120
}
0 commit comments