Przeglądaj źródła

dispatcher: updated tests (lib)

Michele Caini 6 lat temu
rodzic
commit
afcd9285e6

+ 0 - 2
test/CMakeLists.txt

@@ -115,7 +115,6 @@ if(BUILD_LIB)
     SETUP_LIB_TEST(meta)
     SETUP_LIB_TEST(registry)
 
-    SETUP_LIB_TEST(dispatcher_std ENTT_STANDARD_CPP)
     SETUP_LIB_TEST(emitter_std ENTT_STANDARD_CPP)
     SETUP_LIB_TEST(meta_std ENTT_STANDARD_CPP)
     SETUP_LIB_TEST(registry_std ENTT_STANDARD_CPP)
@@ -125,7 +124,6 @@ if(BUILD_LIB)
     SETUP_PLUGIN_TEST(meta_plugin)
     SETUP_PLUGIN_TEST(registry_plugin)
 
-    SETUP_PLUGIN_TEST(dispatcher_plugin_std ENTT_STANDARD_CPP)
     SETUP_PLUGIN_TEST(emitter_plugin_std ENTT_STANDARD_CPP)
     SETUP_PLUGIN_TEST(meta_plugin_std ENTT_STANDARD_CPP)
     SETUP_PLUGIN_TEST(registry_plugin_std ENTT_STANDARD_CPP)

+ 4 - 2
test/lib/dispatcher/types.h

@@ -1,10 +1,12 @@
 #ifndef ENTT_LIB_DISPATCHER_TYPES_H
 #define ENTT_LIB_DISPATCHER_TYPES_H
 
-struct message {
+#include <entt/core/attribute.h>
+
+struct ENTT_API message {
     int payload;
 };
 
-struct event {};
+struct ENTT_API event {};
 
 #endif

+ 5 - 14
test/lib/dispatcher_plugin/main.cpp

@@ -2,21 +2,12 @@
 
 #include <cr.h>
 #include <gtest/gtest.h>
+#include <entt/core/type_info.hpp>
 #include <entt/signal/dispatcher.hpp>
-#include "proxy.h"
 #include "types.h"
 
-proxy::proxy(entt::dispatcher &ref)
-    : dispatcher{&ref}
-{}
-
-void proxy::trigger(message msg) {
-    dispatcher->trigger(msg);
-}
-
-void proxy::trigger(event ev) {
-    dispatcher->trigger(ev);
-}
+template<typename Type>
+struct entt::type_index<Type> {};
 
 struct listener {
     void on(message msg) { value = msg.payload; }
@@ -25,7 +16,6 @@ struct listener {
 
 TEST(Lib, Dispatcher) {
     entt::dispatcher dispatcher;
-    proxy handler{dispatcher};
     listener listener;
 
     ASSERT_EQ(listener.value, 0);
@@ -33,11 +23,12 @@ TEST(Lib, Dispatcher) {
     dispatcher.sink<message>().connect<&listener::on>(listener);
 
     cr_plugin ctx;
-    ctx.userdata = &handler;
+    ctx.userdata = &dispatcher;
     cr_plugin_load(ctx, PLUGIN);
     cr_plugin_update(ctx);
 
     ASSERT_EQ(listener.value, 42);
 
+    dispatcher = {};
     cr_plugin_close(ctx);
 }

+ 7 - 2
test/lib/dispatcher_plugin/plugin.cpp

@@ -1,11 +1,16 @@
 #include <cr.h>
+#include <entt/core/type_info.hpp>
+#include <entt/signal/dispatcher.hpp>
 #include "types.h"
 
+template<typename Type>
+struct entt::type_index<Type> {};
+
 CR_EXPORT int cr_main(cr_plugin *ctx, cr_op operation) {
     switch (operation) {
     case CR_STEP:
-        static_cast<dispatcher_proxy *>(ctx->userdata)->trigger(event{});
-        static_cast<dispatcher_proxy *>(ctx->userdata)->trigger(message{42});
+        static_cast<entt::dispatcher *>(ctx->userdata)->trigger<event>();
+        static_cast<entt::dispatcher *>(ctx->userdata)->trigger<message>(42);
         break;
     case CR_CLOSE:
     case CR_LOAD:

+ 0 - 16
test/lib/dispatcher_plugin/proxy.h

@@ -1,16 +0,0 @@
-#ifndef ENTT_LIB_DISPATCHER_PLUGIN_PROXY_H
-#define ENTT_LIB_DISPATCHER_PLUGIN_PROXY_H
-
-#include <entt/signal/fwd.hpp>
-#include "types.h"
-
-struct proxy: dispatcher_proxy {
-    proxy(entt::dispatcher &);
-    void trigger(message) override;
-    void trigger(event) override;
-
-private:
-    entt::dispatcher *dispatcher;
-};
-
-#endif

+ 0 - 6
test/lib/dispatcher_plugin/types.h

@@ -7,10 +7,4 @@ struct message {
 
 struct event {};
 
-struct dispatcher_proxy {
-    virtual ~dispatcher_proxy() = default;
-    virtual void trigger(message) = 0;
-    virtual void trigger(event) = 0;
-};
-
 #endif

+ 0 - 43
test/lib/dispatcher_plugin_std/main.cpp

@@ -1,43 +0,0 @@
-#define CR_HOST
-
-#include <cr.h>
-#include <gtest/gtest.h>
-#include <entt/signal/dispatcher.hpp>
-#include "proxy.h"
-#include "types.h"
-
-proxy::proxy(entt::dispatcher &ref)
-    : dispatcher{&ref}
-{}
-
-void proxy::trigger(message msg) {
-    dispatcher->trigger(msg);
-}
-
-void proxy::trigger(event ev) {
-    dispatcher->trigger(ev);
-}
-
-struct listener {
-    void on(message msg) { value = msg.payload; }
-    int value{};
-};
-
-TEST(Lib, Dispatcher) {
-    entt::dispatcher dispatcher;
-    proxy handler{dispatcher};
-    listener listener;
-
-    ASSERT_EQ(listener.value, 0);
-
-    dispatcher.sink<message>().connect<&listener::on>(listener);
-
-    cr_plugin ctx;
-    ctx.userdata = &handler;
-    cr_plugin_load(ctx, PLUGIN);
-    cr_plugin_update(ctx);
-
-    ASSERT_EQ(listener.value, 42);
-
-    cr_plugin_close(ctx);
-}

+ 0 - 18
test/lib/dispatcher_plugin_std/plugin.cpp

@@ -1,18 +0,0 @@
-#include <cr.h>
-#include "types.h"
-
-CR_EXPORT int cr_main(cr_plugin *ctx, cr_op operation) {
-    switch (operation) {
-    case CR_STEP:
-        static_cast<dispatcher_proxy *>(ctx->userdata)->trigger(event{});
-        static_cast<dispatcher_proxy *>(ctx->userdata)->trigger(message{42});
-        break;
-    case CR_CLOSE:
-    case CR_LOAD:
-    case CR_UNLOAD:
-        // nothing to do here, this is only a test.
-        break;
-    }
-
-    return 0;
-}

+ 0 - 16
test/lib/dispatcher_plugin_std/proxy.h

@@ -1,16 +0,0 @@
-#ifndef ENTT_LIB_DISPATCHER_PLUGIN_STD_PROXY_H
-#define ENTT_LIB_DISPATCHER_PLUGIN_STD_PROXY_H
-
-#include <entt/signal/fwd.hpp>
-#include "types.h"
-
-struct proxy: dispatcher_proxy {
-    proxy(entt::dispatcher &);
-    void trigger(message) override;
-    void trigger(event) override;
-
-private:
-    entt::dispatcher *dispatcher;
-};
-
-#endif

+ 0 - 16
test/lib/dispatcher_plugin_std/types.h

@@ -1,16 +0,0 @@
-#ifndef ENTT_LIB_DISPATCHER_PLUGIN_STD_TYPES_H
-#define ENTT_LIB_DISPATCHER_PLUGIN_STD_TYPES_H
-
-struct message {
-    int payload;
-};
-
-struct event {};
-
-struct dispatcher_proxy {
-    virtual ~dispatcher_proxy() = default;
-    virtual void trigger(message) = 0;
-    virtual void trigger(event) = 0;
-};
-
-#endif

+ 0 - 8
test/lib/dispatcher_std/lib.cpp

@@ -1,8 +0,0 @@
-#include <entt/core/attribute.h>
-#include <entt/signal/dispatcher.hpp>
-#include "types.h"
-
-ENTT_API void trigger(entt::dispatcher &dispatcher) {
-    dispatcher.trigger<event>();
-    dispatcher.trigger<message>(42);
-}

+ 0 - 24
test/lib/dispatcher_std/main.cpp

@@ -1,24 +0,0 @@
-#include <gtest/gtest.h>
-#include <entt/core/attribute.h>
-#include <entt/core/utility.hpp>
-#include <entt/signal/dispatcher.hpp>
-#include "types.h"
-
-ENTT_API void trigger(entt::dispatcher &);
-
-struct listener {
-    void on(message msg) { value = msg.payload; }
-    int value{};
-};
-
-TEST(Lib, Dispatcher) {
-    entt::dispatcher dispatcher;
-    listener listener;
-
-    ASSERT_EQ(listener.value, 0);
-
-    dispatcher.sink<message>().connect<entt::overload<void(message)>(&listener::on)>(listener);
-    trigger(dispatcher);
-
-    ASSERT_EQ(listener.value, 42);
-}

+ 0 - 12
test/lib/dispatcher_std/types.h

@@ -1,12 +0,0 @@
-#ifndef ENTT_LIB_DISPATCHER_STD_TYPES_H
-#define ENTT_LIB_DISPATCHER_STD_TYPES_H
-
-#include <entt/core/attribute.h>
-
-struct ENTT_API message {
-    int payload;
-};
-
-struct ENTT_API event {};
-
-#endif