test: sink::before
This commit is contained in:
1
TODO
1
TODO
@@ -33,5 +33,4 @@ TODO
|
||||
* multi component registry::remove and some others?
|
||||
* range based registry::remove and some others?
|
||||
* nested groups: AB/ABC/ABCD/... (hints: sort, check functions)
|
||||
- sink::before and ordered calls
|
||||
* ::size_type - c'mon
|
||||
|
||||
@@ -16,6 +16,22 @@ struct sigh_listener {
|
||||
bool k{false};
|
||||
};
|
||||
|
||||
struct before_after {
|
||||
void add(int v) { value += v; }
|
||||
void mul(int v) { value *= v; }
|
||||
|
||||
static void static_add(int v) { before_after::value += v; }
|
||||
static void static_mul(before_after &instance, int v) { instance.value *= v; }
|
||||
|
||||
static inline int value{};
|
||||
};
|
||||
|
||||
struct SigH: public ::testing::Test {
|
||||
void SetUp() override {
|
||||
before_after::value = 0;
|
||||
}
|
||||
};
|
||||
|
||||
struct const_nonconst_noexcept {
|
||||
void f() { ++cnt; }
|
||||
void g() noexcept { ++cnt; }
|
||||
@@ -24,7 +40,7 @@ struct const_nonconst_noexcept {
|
||||
mutable int cnt{0};
|
||||
};
|
||||
|
||||
TEST(SigH, Lifetime) {
|
||||
TEST_F(SigH, Lifetime) {
|
||||
using signal = entt::sigh<void(void)>;
|
||||
|
||||
ASSERT_NO_THROW(signal{});
|
||||
@@ -39,7 +55,7 @@ TEST(SigH, Lifetime) {
|
||||
ASSERT_NO_THROW(delete new signal{});
|
||||
}
|
||||
|
||||
TEST(SigH, Clear) {
|
||||
TEST_F(SigH, Clear) {
|
||||
entt::sigh<void(int &)> sigh;
|
||||
entt::sink sink{sigh};
|
||||
|
||||
@@ -54,7 +70,7 @@ TEST(SigH, Clear) {
|
||||
ASSERT_TRUE(sigh.empty());
|
||||
}
|
||||
|
||||
TEST(SigH, Swap) {
|
||||
TEST_F(SigH, Swap) {
|
||||
entt::sigh<void(int &)> sigh1;
|
||||
entt::sigh<void(int &)> sigh2;
|
||||
entt::sink sink1{sigh1};
|
||||
@@ -77,7 +93,7 @@ TEST(SigH, Swap) {
|
||||
ASSERT_FALSE(sigh2.empty());
|
||||
}
|
||||
|
||||
TEST(SigH, Functions) {
|
||||
TEST_F(SigH, Functions) {
|
||||
entt::sigh<void(int &)> sigh;
|
||||
entt::sink sink{sigh};
|
||||
int v = 0;
|
||||
@@ -98,7 +114,7 @@ TEST(SigH, Functions) {
|
||||
ASSERT_EQ(v, 0);
|
||||
}
|
||||
|
||||
TEST(SigH, FunctionsWithPayload) {
|
||||
TEST_F(SigH, FunctionsWithPayload) {
|
||||
entt::sigh<void()> sigh;
|
||||
entt::sink sink{sigh};
|
||||
int v = 0;
|
||||
@@ -125,7 +141,7 @@ TEST(SigH, FunctionsWithPayload) {
|
||||
ASSERT_EQ(v, 0);
|
||||
}
|
||||
|
||||
TEST(SigH, Members) {
|
||||
TEST_F(SigH, Members) {
|
||||
sigh_listener l1, l2;
|
||||
entt::sigh<bool(int)> sigh;
|
||||
entt::sink sink{sigh};
|
||||
@@ -156,7 +172,7 @@ TEST(SigH, Members) {
|
||||
ASSERT_EQ(1u, sigh.size());
|
||||
}
|
||||
|
||||
TEST(SigH, Collector) {
|
||||
TEST_F(SigH, Collector) {
|
||||
sigh_listener listener;
|
||||
entt::sigh<bool(int)> sigh;
|
||||
entt::sink sink{sigh};
|
||||
@@ -186,7 +202,7 @@ TEST(SigH, Collector) {
|
||||
ASSERT_EQ(cnt, 1);
|
||||
}
|
||||
|
||||
TEST(SigH, CollectorVoid) {
|
||||
TEST_F(SigH, CollectorVoid) {
|
||||
sigh_listener listener;
|
||||
entt::sigh<void(int)> sigh;
|
||||
entt::sink sink{sigh};
|
||||
@@ -208,7 +224,7 @@ TEST(SigH, CollectorVoid) {
|
||||
ASSERT_EQ(cnt, 1);
|
||||
}
|
||||
|
||||
TEST(SigH, Connection) {
|
||||
TEST_F(SigH, Connection) {
|
||||
entt::sigh<void(int &)> sigh;
|
||||
entt::sink sink{sigh};
|
||||
int v = 0;
|
||||
@@ -229,7 +245,7 @@ TEST(SigH, Connection) {
|
||||
ASSERT_EQ(0, v);
|
||||
}
|
||||
|
||||
TEST(SigH, ScopedConnection) {
|
||||
TEST_F(SigH, ScopedConnection) {
|
||||
sigh_listener listener;
|
||||
entt::sigh<void(int)> sigh;
|
||||
entt::sink sink{sigh};
|
||||
@@ -251,7 +267,7 @@ TEST(SigH, ScopedConnection) {
|
||||
ASSERT_TRUE(listener.k);
|
||||
}
|
||||
|
||||
TEST(SigH, ScopedConnectionConstructorsAndOperators) {
|
||||
TEST_F(SigH, ScopedConnectionConstructorsAndOperators) {
|
||||
sigh_listener listener;
|
||||
entt::sigh<void(int)> sigh;
|
||||
entt::sink sink{sigh};
|
||||
@@ -297,7 +313,7 @@ TEST(SigH, ScopedConnectionConstructorsAndOperators) {
|
||||
ASSERT_FALSE(listener.k);
|
||||
}
|
||||
|
||||
TEST(SigH, ConstNonConstNoExcept) {
|
||||
TEST_F(SigH, ConstNonConstNoExcept) {
|
||||
entt::sigh<void()> sigh;
|
||||
entt::sink sink{sigh};
|
||||
const_nonconst_noexcept functor;
|
||||
@@ -321,3 +337,92 @@ TEST(SigH, ConstNonConstNoExcept) {
|
||||
ASSERT_EQ(functor.cnt, 2);
|
||||
ASSERT_EQ(cfunctor.cnt, 2);
|
||||
}
|
||||
|
||||
TEST_F(SigH, BeforeFunction) {
|
||||
entt::sigh<void(int)> sigh;
|
||||
entt::sink sink{sigh};
|
||||
before_after functor;
|
||||
|
||||
sink.connect<&before_after::add>(functor);
|
||||
sink.connect<&before_after::static_add>();
|
||||
sink.before<&before_after::static_add>().connect<&before_after::mul>(functor);
|
||||
sigh.publish(2);
|
||||
|
||||
ASSERT_EQ(functor.value, 6);
|
||||
}
|
||||
|
||||
TEST_F(SigH, BeforeMemberFunction) {
|
||||
entt::sigh<void(int)> sigh;
|
||||
entt::sink sink{sigh};
|
||||
before_after functor;
|
||||
|
||||
sink.connect<&before_after::static_add>();
|
||||
sink.connect<&before_after::add>(functor);
|
||||
sink.before<&before_after::add>(functor).connect<&before_after::mul>(functor);
|
||||
sigh.publish(2);
|
||||
|
||||
ASSERT_EQ(functor.value, 6);
|
||||
}
|
||||
|
||||
TEST_F(SigH, BeforeFunctionWithPayload) {
|
||||
entt::sigh<void(int)> sigh;
|
||||
entt::sink sink{sigh};
|
||||
before_after functor;
|
||||
|
||||
sink.connect<&before_after::static_add>();
|
||||
sink.connect<&before_after::static_mul>(functor);
|
||||
sink.before<&before_after::static_mul>(functor).connect<&before_after::add>(functor);
|
||||
sigh.publish(2);
|
||||
|
||||
ASSERT_EQ(functor.value, 8);
|
||||
}
|
||||
|
||||
TEST_F(SigH, BeforeInstanceOrPayload) {
|
||||
entt::sigh<void(int)> sigh;
|
||||
entt::sink sink{sigh};
|
||||
before_after functor;
|
||||
|
||||
sink.connect<&before_after::static_mul>(functor);
|
||||
sink.connect<&before_after::add>(functor);
|
||||
sink.before(functor).connect<&before_after::static_add>();
|
||||
sigh.publish(2);
|
||||
|
||||
ASSERT_EQ(functor.value, 6);
|
||||
}
|
||||
|
||||
TEST_F(SigH, BeforeOpaqueInstanceOrPayload) {
|
||||
entt::sigh<void(int)> sigh;
|
||||
entt::sink sink{sigh};
|
||||
before_after functor;
|
||||
|
||||
sink.connect<&before_after::static_mul>(functor);
|
||||
sink.connect<&before_after::add>(functor);
|
||||
sink.before(&functor).connect<&before_after::static_add>();
|
||||
sigh.publish(2);
|
||||
|
||||
ASSERT_EQ(functor.value, 6);
|
||||
}
|
||||
|
||||
TEST_F(SigH, BeforeAnythingElse) {
|
||||
entt::sigh<void(int)> sigh;
|
||||
entt::sink sink{sigh};
|
||||
before_after functor;
|
||||
|
||||
sink.connect<&before_after::add>(functor);
|
||||
sink.before().connect<&before_after::mul>(functor);
|
||||
sigh.publish(2);
|
||||
|
||||
ASSERT_EQ(functor.value, 2);
|
||||
}
|
||||
|
||||
TEST_F(SigH, BeforeListenerNotPresent) {
|
||||
entt::sigh<void(int)> sigh;
|
||||
entt::sink sink{sigh};
|
||||
before_after functor;
|
||||
|
||||
sink.connect<&before_after::mul>(functor);
|
||||
sink.before<&before_after::add>(functor).connect<&before_after::add>(functor);
|
||||
sigh.publish(2);
|
||||
|
||||
ASSERT_EQ(functor.value, 2);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user