This commit is contained in:
Martin Slachta
2026-07-18 14:31:15 +02:00
commit a04f0dc262
3343 changed files with 1140208 additions and 0 deletions
+31
View File
@@ -0,0 +1,31 @@
#define CR_HOST
#include <gtest/gtest.h>
#include <cr.h>
#include <entt/locator/locator.hpp>
#include "../../../common/boxed_type.h"
#include "userdata.h"
TEST(Lib, Locator) {
entt::locator<test::boxed_int>::emplace().value = 4;
ASSERT_EQ(entt::locator<test::boxed_int>::value().value, 4);
userdata ud{entt::locator<test::boxed_int>::handle(), 3};
cr_plugin ctx;
ctx.userdata = &ud;
cr_plugin_load(ctx, PLUGIN);
cr_plugin_update(ctx);
ASSERT_EQ(entt::locator<test::boxed_int>::value().value, ud.value);
// service updates do not propagate across boundaries
entt::locator<test::boxed_int>::emplace().value = 4;
cr_plugin_update(ctx);
ASSERT_NE(entt::locator<test::boxed_int>::value().value, ud.value);
cr_plugin_close(ctx);
}
+20
View File
@@ -0,0 +1,20 @@
#include <cr.h>
#include <entt/locator/locator.hpp>
#include "../../../common/boxed_type.h"
#include "userdata.h"
CR_EXPORT int cr_main(cr_plugin *ctx, cr_op operation) {
switch(operation) {
case CR_LOAD:
entt::locator<test::boxed_int>::reset(static_cast<userdata *>(ctx->userdata)->handle);
break;
case CR_STEP:
entt::locator<test::boxed_int>::value().value = static_cast<userdata *>(ctx->userdata)->value;
break;
case CR_UNLOAD:
case CR_CLOSE:
break;
}
return 0;
}
+12
View File
@@ -0,0 +1,12 @@
#ifndef ENTT_LIB_LOCATOR_PLUGIN_USERDATA_H
#define ENTT_LIB_LOCATOR_PLUGIN_USERDATA_H
#include <entt/locator/locator.hpp>
#include "../../../common/boxed_type.h"
struct userdata {
entt::locator<test::boxed_int>::node_type handle{};
int value{};
};
#endif
+11
View File
@@ -0,0 +1,11 @@
#include <entt/core/attribute.h>
#include <entt/locator/locator.hpp>
#include "../../../common/boxed_type.h"
ENTT_API void set_up(const entt::locator<test::boxed_int>::node_type &handle) {
entt::locator<test::boxed_int>::reset(handle);
}
ENTT_API void use_service(int value) {
entt::locator<test::boxed_int>::value().value = value;
}
+24
View File
@@ -0,0 +1,24 @@
#include <gtest/gtest.h>
#include <entt/core/attribute.h>
#include <entt/locator/locator.hpp>
#include "../../../common/boxed_type.h"
ENTT_API void set_up(const entt::locator<test::boxed_int>::node_type &);
ENTT_API void use_service(int);
TEST(Lib, Locator) {
entt::locator<test::boxed_int>::emplace().value = 4;
ASSERT_EQ(entt::locator<test::boxed_int>::value().value, 4);
set_up(entt::locator<test::boxed_int>::handle());
use_service(3);
ASSERT_EQ(entt::locator<test::boxed_int>::value().value, 3);
// service updates do not propagate across boundaries
entt::locator<test::boxed_int>::emplace().value = 4;
use_service(3);
ASSERT_EQ(entt::locator<test::boxed_int>::value().value, 4);
}