From cedebf814563eb99dcd962865fba9782c1f01f9f Mon Sep 17 00:00:00 2001 From: Michele Caini Date: Wed, 10 Jun 2020 15:42:47 +0200 Subject: [PATCH] test: added meta_prop --- src/entt/meta/factory.hpp | 2 +- test/CMakeLists.txt | 1 + test/entt/meta/meta.cpp | 20 ------------------- test/entt/meta/meta_basic.cpp | 1 + test/entt/meta/meta_prop.cpp | 37 +++++++++++++++++++++++++++++++++++ 5 files changed, 40 insertions(+), 21 deletions(-) create mode 100644 test/entt/meta/meta_prop.cpp diff --git a/src/entt/meta/factory.hpp b/src/entt/meta/factory.hpp index 9dab23d00..126a5166d 100644 --- a/src/entt/meta/factory.hpp +++ b/src/entt/meta/factory.hpp @@ -794,7 +794,7 @@ public: * @return A meta factory for the given type. */ template -[[nodiscard]] meta_factory meta() ENTT_NOEXCEPT { +[[nodiscard]] auto meta() ENTT_NOEXCEPT { auto * const node = internal::meta_info::resolve(); // extended meta factory to allow assigning properties to opaque meta types return meta_factory{&node->prop}; diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 6e47fa4b0..49b8c587b 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -180,6 +180,7 @@ SETUP_BASIC_TEST(locator entt/locator/locator.cpp) list(APPEND TEST_META_SOURCES entt/meta/meta.cpp entt/meta/fixture.cpp) SETUP_BASIC_TEST(meta_any entt/meta/meta_any.cpp) SETUP_BASIC_TEST(meta_basic entt/meta/meta_basic.cpp) +SETUP_BASIC_TEST(meta_prop entt/meta/meta_prop.cpp) SETUP_BASIC_TEST(meta "${TEST_META_SOURCES}") # Test process diff --git a/test/entt/meta/meta.cpp b/test/entt/meta/meta.cpp index a48e3b790..d23887ff8 100644 --- a/test/entt/meta/meta.cpp +++ b/test/entt/meta/meta.cpp @@ -9,14 +9,6 @@ #include #include "fixture.h" -TEST_F(Meta, MetaProp) { - auto prop = entt::resolve().prop(props::prop_int); - - ASSERT_TRUE(prop); - ASSERT_EQ(prop.key(), props::prop_int); - ASSERT_EQ(prop.value(), 42); -} - TEST_F(Meta, MetaBase) { auto base = entt::resolve().base("base"_hs); derived_type derived{}; @@ -949,18 +941,6 @@ TEST_F(Meta, MetaFuncFromBase) { ASSERT_EQ(instance.i, -3); } -TEST_F(Meta, MetaPropFromBase) { - auto type = entt::resolve(); - auto prop_bool = type.prop(props::prop_bool); - auto prop_int = type.prop(props::prop_int); - - ASSERT_TRUE(prop_bool); - ASSERT_TRUE(prop_int); - - ASSERT_FALSE(prop_bool.value().cast()); - ASSERT_EQ(prop_int.value().cast(), 42); -} - TEST_F(Meta, AbstractClass) { auto type = entt::resolve(); concrete_type instance; diff --git a/test/entt/meta/meta_basic.cpp b/test/entt/meta/meta_basic.cpp index 4e628b445..720c463e3 100644 --- a/test/entt/meta/meta_basic.cpp +++ b/test/entt/meta/meta_basic.cpp @@ -1,6 +1,7 @@ #include #include #include +#include #include struct Meta: ::testing::Test { diff --git a/test/entt/meta/meta_prop.cpp b/test/entt/meta/meta_prop.cpp new file mode 100644 index 000000000..9d19bc434 --- /dev/null +++ b/test/entt/meta/meta_prop.cpp @@ -0,0 +1,37 @@ +#include +#include +#include +#include +#include + +struct base_1 {}; +struct base_2 {}; +struct derived: base_1, base_2 {}; + +struct Meta: ::testing::Test { + static void SetUpTestCase() { + entt::meta().prop("int"_hs, 42); + entt::meta().prop("bool"_hs, false); + entt::meta().base().base(); + } +}; + +TEST_F(Meta, MetaProp) { + auto prop = entt::resolve().prop("int"_hs); + + ASSERT_TRUE(prop); + ASSERT_EQ(prop.key(), "int"_hs); + ASSERT_EQ(prop.value(), 42); +} + +TEST_F(Meta, MetaPropFromBase) { + auto type = entt::resolve(); + auto prop_bool = type.prop("bool"_hs); + auto prop_int = type.prop("int"_hs); + + ASSERT_TRUE(prop_bool); + ASSERT_TRUE(prop_int); + + ASSERT_FALSE(prop_bool.value().cast()); + ASSERT_EQ(prop_int.value().cast(), 42); +}