2 // tests for connection class
4 // Copyright Frank Mori Hess 2008
5 // Use, modification and
6 // distribution is subject to the Boost Software License, Version
7 // 1.0. (See accompanying file LICENSE_1_0.txt or copy at
8 // http://www.boost.org/LICENSE_1_0.txt)
10 // For more information, see http://www.boost.org
11 #include <boost/signals2.hpp>
12 #define BOOST_TEST_MODULE connection_test
13 #include <boost/test/included/unit_test.hpp>
15 namespace bs2
= boost::signals2
;
17 typedef bs2::signal
<void ()> sig_type
;
27 bs2::connection conn1
= sig
.connect(&myslot
);
28 BOOST_CHECK(conn1
.connected());
29 bs2::connection conn2
;
30 BOOST_CHECK(conn2
.connected() == false);
33 BOOST_CHECK(conn2
.connected());
34 BOOST_CHECK(conn1
.connected() == false);
37 BOOST_CHECK(conn1
.connected());
38 BOOST_CHECK(conn2
.connected() == false);
42 bs2::scoped_connection conn1
;
43 conn1
= sig
.connect(&myslot
);
44 BOOST_CHECK(conn1
.connected());
45 bs2::scoped_connection conn2
;
46 BOOST_CHECK(conn2
.connected() == false);
49 BOOST_CHECK(conn2
.connected());
50 BOOST_CHECK(conn1
.connected() == false);
53 BOOST_CHECK(conn1
.connected());
54 BOOST_CHECK(conn2
.connected() == false);
63 bs2::scoped_connection
scoped(sig
.connect(&myslot
));
64 BOOST_CHECK(scoped
.connected());
65 conn
= scoped
.release();
67 BOOST_CHECK(conn
.connected());
69 bs2::connection conn2
;
71 bs2::scoped_connection
scoped(conn
);
72 BOOST_CHECK(scoped
.connected());
73 conn
= scoped
.release();
74 BOOST_CHECK(conn
.connected());
75 BOOST_CHECK(scoped
.connected() == false);
78 // earlier release shouldn't affect new connection
79 conn2
= sig
.connect(&myslot
);
82 BOOST_CHECK(conn2
.connected() == false);
87 #if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
90 // test move assignment from scoped_connection to connection
92 bs2::scoped_connection
scoped(sig
.connect(&myslot
));
93 BOOST_CHECK(scoped
.connected());
94 conn
= std::move(scoped
);
95 BOOST_CHECK(scoped
.connected() == false);
97 BOOST_CHECK(conn
.connected());
99 // test move construction from scoped to scoped
101 bs2::scoped_connection
scoped2(conn
);
102 BOOST_CHECK(scoped2
.connected());
103 bs2::scoped_connection
scoped3(std::move(scoped2
));
104 BOOST_CHECK(scoped2
.connected() == false);
105 BOOST_CHECK(scoped3
.connected() == true);
106 BOOST_CHECK(conn
.connected() == true);
108 BOOST_CHECK(conn
.connected() == false);
110 // test move assignment from scoped to scoped
111 conn
= sig
.connect(&myslot
);
113 bs2::scoped_connection scoped3
;
114 bs2::scoped_connection
scoped2(conn
);
115 BOOST_CHECK(scoped2
.connected());
116 scoped3
= std::move(scoped2
);
117 BOOST_CHECK(scoped2
.connected() == false);
118 BOOST_CHECK(scoped3
.connected() == true);
119 BOOST_CHECK(conn
.connected() == true);
121 BOOST_CHECK(conn
.connected() == false);
122 #endif // !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
125 BOOST_AUTO_TEST_CASE(test_main
)