|
@@ -70,7 +70,8 @@ TEST(SigH, Lifetime) {
|
|
|
ASSERT_NO_THROW(delete new signal{});
|
|
ASSERT_NO_THROW(delete new signal{});
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-TEST(SigH, Clear) {
|
|
|
|
|
|
|
+TEST(SigH, Disconnect) {
|
|
|
|
|
+ sigh_listener listener;
|
|
|
entt::sigh<void(int &)> sigh;
|
|
entt::sigh<void(int &)> sigh;
|
|
|
entt::sink sink{sigh};
|
|
entt::sink sink{sigh};
|
|
|
|
|
|
|
@@ -79,7 +80,32 @@ TEST(SigH, Clear) {
|
|
|
ASSERT_FALSE(sink.empty());
|
|
ASSERT_FALSE(sink.empty());
|
|
|
ASSERT_FALSE(sigh.empty());
|
|
ASSERT_FALSE(sigh.empty());
|
|
|
|
|
|
|
|
- sink.disconnect(static_cast<const void *>(nullptr));
|
|
|
|
|
|
|
+ sink.disconnect<&sigh_listener::f>();
|
|
|
|
|
+
|
|
|
|
|
+ ASSERT_TRUE(sink.empty());
|
|
|
|
|
+ ASSERT_TRUE(sigh.empty());
|
|
|
|
|
+
|
|
|
|
|
+ sink.connect<&sigh_listener::g>(listener);
|
|
|
|
|
+
|
|
|
|
|
+ ASSERT_FALSE(sink.empty());
|
|
|
|
|
+ ASSERT_FALSE(sigh.empty());
|
|
|
|
|
+
|
|
|
|
|
+ sink.disconnect<&sigh_listener::g>(listener);
|
|
|
|
|
+
|
|
|
|
|
+ ASSERT_TRUE(sink.empty());
|
|
|
|
|
+ ASSERT_TRUE(sigh.empty());
|
|
|
|
|
+
|
|
|
|
|
+ sink.connect<&sigh_listener::g>(listener);
|
|
|
|
|
+
|
|
|
|
|
+ ASSERT_FALSE(sink.empty());
|
|
|
|
|
+ ASSERT_FALSE(sigh.empty());
|
|
|
|
|
+
|
|
|
|
|
+ sink.disconnect(&listener);
|
|
|
|
|
+
|
|
|
|
|
+ ASSERT_TRUE(sink.empty());
|
|
|
|
|
+ ASSERT_TRUE(sigh.empty());
|
|
|
|
|
+
|
|
|
|
|
+ sink.connect<&sigh_listener::f>();
|
|
|
|
|
|
|
|
ASSERT_FALSE(sink.empty());
|
|
ASSERT_FALSE(sink.empty());
|
|
|
ASSERT_FALSE(sigh.empty());
|
|
ASSERT_FALSE(sigh.empty());
|
|
@@ -186,11 +212,6 @@ TEST(SigH, Members) {
|
|
|
ASSERT_FALSE(sigh.empty());
|
|
ASSERT_FALSE(sigh.empty());
|
|
|
ASSERT_EQ(sigh.size(), 2u);
|
|
ASSERT_EQ(sigh.size(), 2u);
|
|
|
|
|
|
|
|
- sink.disconnect(static_cast<const void *>(nullptr));
|
|
|
|
|
-
|
|
|
|
|
- ASSERT_FALSE(sigh.empty());
|
|
|
|
|
- ASSERT_EQ(sigh.size(), 2u);
|
|
|
|
|
-
|
|
|
|
|
sink.disconnect(&l1);
|
|
sink.disconnect(&l1);
|
|
|
|
|
|
|
|
ASSERT_FALSE(sigh.empty());
|
|
ASSERT_FALSE(sigh.empty());
|