#include #include #include #include #include #include #include #include "../../../common/boxed_type.h" #include "../../../common/empty.h" ENTT_API void share(const entt::locator::node_type &); ENTT_API void set_up(); ENTT_API void tear_down(); ENTT_API entt::meta_any wrap_int(int); TEST(Lib, Meta) { using namespace entt::literals; ASSERT_FALSE(entt::resolve("boxed_int"_hs)); ASSERT_FALSE(entt::resolve("empty"_hs)); share(entt::locator::handle()); set_up(); ASSERT_TRUE(entt::resolve("boxed_int"_hs)); ASSERT_TRUE(entt::resolve("empty"_hs)); ASSERT_EQ(entt::resolve(), entt::resolve("boxed_int"_hs)); ASSERT_EQ(entt::resolve(), 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); boxed_int.reset(); empty.reset(); ASSERT_EQ(wrap_int(4).type(), entt::resolve()); ASSERT_EQ(wrap_int(4).cast(), 4); tear_down(); ASSERT_FALSE(entt::resolve("boxed_int"_hs)); ASSERT_FALSE(entt::resolve("empty"_hs)); }