Просмотр исходного кода

meta: refine type label impl and tests

skypjack 10 месяцев назад
Родитель
Сommit
9536039932
2 измененных файлов с 15 добавлено и 6 удалено
  1. 4 4
      src/entt/meta/factory.hpp
  2. 11 2
      test/entt/meta/meta_type.cpp

+ 4 - 4
src/entt/meta/factory.hpp

@@ -183,17 +183,17 @@ public:
      * @return A meta factory for the given type.
      */
     meta_factory type(const hashed_string id) noexcept {
-        base_type::type(id.value(), id.data());
-        return *this;
+        return type(id.value(), id.data());
     }
 
     /**
      * @brief Assigns a custom unique identifier to a meta type.
      * @param id A custom unique identifier.
+     * @param label An optional custom name for the type.
      * @return A meta factory for the given type.
      */
-    meta_factory type(const id_type id) noexcept {
-        base_type::type(id, nullptr);
+    meta_factory type(const id_type id, const char *label = nullptr) noexcept {
+        base_type::type(id, label);
         return *this;
     }
 

+ 11 - 2
test/entt/meta/meta_type.cpp

@@ -304,8 +304,17 @@ TEST_F(MetaType, IdAndInfo) {
 TEST_F(MetaType, Label) {
     using namespace entt::literals;
 
-    ASSERT_EQ(entt::resolve<clazz>().label(), std::string_view{"class"});
-    ASSERT_NE(entt::resolve<double>().label(), nullptr);
+    entt::meta_reset();
+
+    entt::meta_factory<base>().type("base");
+    entt::meta_factory<derived>().type("derived"_hs);
+    entt::meta_factory<double>().type(entt::hashed_string::value("double"));
+    entt::meta_factory<unsigned int>().type("unsigned int"_hs, "uint");
+
+    ASSERT_EQ(entt::resolve<base>().label(), std::string_view{"base"});
+    ASSERT_EQ(entt::resolve<derived>().label(), std::string_view{"derived"});
+    ASSERT_STREQ(entt::resolve<unsigned int>().label(), "uint");
+    ASSERT_STREQ(entt::resolve<double>().label(), nullptr);
     ASSERT_EQ(entt::resolve<int>().label(), nullptr);
 }