test: use common types for lib tests (emitter)
This commit is contained in:
@@ -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
|
||||
@@ -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;
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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});
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user