#define CR_HOST #include #include #include #include #include #include #include #include "userdata.h" TEST(Lib, Meta) { using namespace entt::literals; ASSERT_FALSE(entt::resolve("boxed_int"_hs)); userdata ud{}; ud.ctx = entt::locator::handle(); cr_plugin ctx; ctx.userdata = &ud; cr_plugin_load(ctx, PLUGIN); cr_plugin_update(ctx); ASSERT_TRUE(entt::resolve("boxed_int"_hs)); ASSERT_TRUE(entt::resolve("empty"_hs)); auto boxed_int = entt::resolve("boxed_int"_hs).construct(4.); auto empty = entt::resolve("empty"_hs).construct(); ASSERT_TRUE(boxed_int); ASSERT_TRUE(empty); ASSERT_EQ(boxed_int.type().data("value"_hs).type(), entt::resolve()); ASSERT_NE(boxed_int.get("value"_hs).try_cast(), nullptr); ASSERT_EQ(boxed_int.get("value"_hs).cast(), 4); ASSERT_EQ(ud.any.type(), entt::resolve()); ASSERT_EQ(ud.any.cast(), 4); // these objects have been initialized from a different context boxed_int.emplace(); empty.emplace(); ud.any.emplace(); cr_plugin_close(ctx); ASSERT_FALSE(entt::resolve("boxed_int"_hs)); ASSERT_FALSE(entt::resolve("empty"_hs)); }