test: use common types for lib tests (emitter)

This commit is contained in:
Michele Caini
2024-02-13 08:29:14 +01:00
parent b7622a373b
commit 4cc5745346
5 changed files with 26 additions and 35 deletions

View File

@@ -1,15 +0,0 @@
#ifndef ENTT_LIB_EMITTER_COMMON_TYPES_H
#define ENTT_LIB_EMITTER_COMMON_TYPES_H
#include <entt/signal/emitter.hpp>
struct test_emitter
: entt::emitter<test_emitter> {};
struct message {
int payload{};
};
struct event {};
#endif

View File

@@ -1,18 +1,19 @@
#define CR_HOST
#include <gtest/gtest.h>
#include <common/boxed_type.h>
#include <common/emitter.h>
#include <cr.h>
#include "../common/types.h"
TEST(Lib, Emitter) {
test_emitter emitter;
test::emitter emitter;
int value{};
ASSERT_EQ(value, 0);
emitter.on<message>([&](message msg, test_emitter &owner) {
value = msg.payload;
owner.erase<message>();
emitter.on<test::boxed_int>([&](test::boxed_int msg, test::emitter &owner) {
value = msg.value;
owner.erase<test::boxed_int>();
});
cr_plugin ctx;

View File

@@ -1,12 +1,14 @@
#include <common/boxed_type.h>
#include <common/emitter.h>
#include <common/empty.h>
#include <cr.h>
#include "../common/types.h"
CR_EXPORT int cr_main(cr_plugin *ctx, cr_op operation) {
switch(operation) {
case CR_STEP:
static_cast<test_emitter *>(ctx->userdata)->publish(event{});
static_cast<test_emitter *>(ctx->userdata)->publish(message{4});
static_cast<test_emitter *>(ctx->userdata)->publish(message{3});
static_cast<test::emitter *>(ctx->userdata)->publish(test::empty{});
static_cast<test::emitter *>(ctx->userdata)->publish(test::boxed_int{4});
static_cast<test::emitter *>(ctx->userdata)->publish(test::boxed_int{3});
break;
case CR_CLOSE:
case CR_LOAD:

View File

@@ -1,8 +1,10 @@
#include <common/boxed_type.h>
#include <common/emitter.h>
#include <common/empty.h>
#include <entt/core/attribute.h>
#include "../common/types.h"
ENTT_API void emit(test_emitter &emitter) {
emitter.publish(event{});
emitter.publish(message{2});
emitter.publish(message{3});
ENTT_API void emit(test::emitter &emitter) {
emitter.publish(test::empty{});
emitter.publish(test::boxed_int{2});
emitter.publish(test::boxed_int{3});
}

View File

@@ -1,18 +1,19 @@
#include <gtest/gtest.h>
#include <common/boxed_type.h>
#include <common/emitter.h>
#include <entt/core/attribute.h>
#include "../common/types.h"
ENTT_API void emit(test_emitter &);
ENTT_API void emit(test::emitter &);
TEST(Lib, Emitter) {
test_emitter emitter;
test::emitter emitter;
int value{};
ASSERT_EQ(value, 0);
emitter.on<message>([&](message msg, test_emitter &owner) {
value = msg.payload;
owner.erase<message>();
emitter.on<test::boxed_int>([&](test::boxed_int msg, test::emitter &owner) {
value = msg.value;
owner.erase<test::boxed_int>();
});
emit(emitter);