test: reuse types if possible

This commit is contained in:
Michele Caini
2024-02-12 14:17:17 +01:00
parent 8c1c899cb8
commit 1962027c80

View File

@@ -2,37 +2,34 @@
#include <memory>
#include <utility>
#include <gtest/gtest.h>
#include <common/boxed_type.h>
#include <common/emitter.h>
#include <common/linter.hpp>
#include <entt/signal/emitter.hpp>
struct foo_event {
int i;
};
struct bar_event {};
struct quux_event {};
TEST(Emitter, Move) {
test::emitter emitter{};
emitter.on<foo_event>([](auto &, const auto &) {});
emitter.on<test::boxed_int>([](auto &, const auto &) {});
ASSERT_FALSE(emitter.empty());
ASSERT_TRUE(emitter.contains<foo_event>());
ASSERT_TRUE(emitter.contains<test::boxed_int>());
test::emitter other{std::move(emitter)};
test::is_initialized(emitter);
ASSERT_FALSE(other.empty());
ASSERT_TRUE(other.contains<foo_event>());
ASSERT_TRUE(other.contains<test::boxed_int>());
ASSERT_TRUE(emitter.empty());
emitter = std::move(other);
test::is_initialized(other);
ASSERT_FALSE(emitter.empty());
ASSERT_TRUE(emitter.contains<foo_event>());
ASSERT_TRUE(emitter.contains<test::boxed_int>());
ASSERT_TRUE(other.empty());
}
@@ -41,21 +38,21 @@ TEST(Emitter, Swap) {
test::emitter other{};
int value{};
emitter.on<foo_event>([&value](auto &event, const auto &) {
value = event.i;
emitter.on<test::boxed_int>([&value](auto &event, const auto &) {
value = event.value;
});
ASSERT_FALSE(emitter.empty());
ASSERT_TRUE(other.empty());
emitter.swap(other);
emitter.publish(foo_event{1});
emitter.publish(test::boxed_int{1});
ASSERT_EQ(value, 0);
ASSERT_TRUE(emitter.empty());
ASSERT_FALSE(other.empty());
other.publish(foo_event{1});
other.publish(test::boxed_int{1});
ASSERT_EQ(value, 1);
}
@@ -65,40 +62,40 @@ TEST(Emitter, Clear) {
ASSERT_TRUE(emitter.empty());
emitter.on<foo_event>([](auto &, const auto &) {});
emitter.on<test::boxed_int>([](auto &, const auto &) {});
emitter.on<quux_event>([](const auto &, const auto &) {});
ASSERT_FALSE(emitter.empty());
ASSERT_TRUE(emitter.contains<foo_event>());
ASSERT_TRUE(emitter.contains<test::boxed_int>());
ASSERT_TRUE(emitter.contains<quux_event>());
ASSERT_FALSE(emitter.contains<bar_event>());
emitter.erase<bar_event>();
ASSERT_FALSE(emitter.empty());
ASSERT_TRUE(emitter.contains<foo_event>());
ASSERT_TRUE(emitter.contains<test::boxed_int>());
ASSERT_TRUE(emitter.contains<quux_event>());
ASSERT_FALSE(emitter.contains<bar_event>());
emitter.erase<foo_event>();
emitter.erase<test::boxed_int>();
ASSERT_FALSE(emitter.empty());
ASSERT_FALSE(emitter.contains<foo_event>());
ASSERT_FALSE(emitter.contains<test::boxed_int>());
ASSERT_TRUE(emitter.contains<quux_event>());
ASSERT_FALSE(emitter.contains<bar_event>());
emitter.on<foo_event>([](auto &, const auto &) {});
emitter.on<test::boxed_int>([](auto &, const auto &) {});
emitter.on<bar_event>([](const auto &, const auto &) {});
ASSERT_FALSE(emitter.empty());
ASSERT_TRUE(emitter.contains<foo_event>());
ASSERT_TRUE(emitter.contains<test::boxed_int>());
ASSERT_TRUE(emitter.contains<quux_event>());
ASSERT_TRUE(emitter.contains<bar_event>());
emitter.clear();
ASSERT_TRUE(emitter.empty());
ASSERT_FALSE(emitter.contains<foo_event>());
ASSERT_FALSE(emitter.contains<test::boxed_int>());
ASSERT_FALSE(emitter.contains<bar_event>());
}
@@ -107,9 +104,9 @@ TEST(Emitter, ClearFromCallback) {
ASSERT_TRUE(emitter.empty());
emitter.on<foo_event>([](auto &, auto &owner) {
owner.template on<foo_event>([](auto &, auto &) {});
owner.template erase<foo_event>();
emitter.on<test::boxed_int>([](auto &, auto &owner) {
owner.template on<test::boxed_int>([](auto &, auto &) {});
owner.template erase<test::boxed_int>();
});
emitter.on<bar_event>([](const auto &, auto &owner) {
@@ -119,7 +116,7 @@ TEST(Emitter, ClearFromCallback) {
ASSERT_FALSE(emitter.empty());
emitter.publish(foo_event{});
emitter.publish(test::boxed_int{});
emitter.publish(bar_event{});
ASSERT_TRUE(emitter.empty());
@@ -129,15 +126,15 @@ TEST(Emitter, On) {
test::emitter emitter{};
int value{};
emitter.on<foo_event>([&value](auto &event, const auto &) {
value = event.i;
emitter.on<test::boxed_int>([&value](auto &event, const auto &) {
value = event.value;
});
ASSERT_FALSE(emitter.empty());
ASSERT_TRUE(emitter.contains<foo_event>());
ASSERT_TRUE(emitter.contains<test::boxed_int>());
ASSERT_EQ(value, 0);
emitter.publish(foo_event{1});
emitter.publish(test::boxed_int{1});
ASSERT_EQ(value, 1);
}
@@ -164,7 +161,7 @@ TEST(Emitter, CustomAllocator) {
ASSERT_EQ(emitter.get_allocator(), allocator);
ASSERT_FALSE(emitter.get_allocator() != allocator);
emitter.on<foo_event>([](auto &, const auto &) {});
emitter.on<test::boxed_int>([](auto &, const auto &) {});
const decltype(emitter) other{std::move(emitter), allocator};
test::is_initialized(emitter);