1
0
Michele Caini 1 жил өмнө
parent
commit
a5a03de483

+ 31 - 10
test/entt/meta/meta_custom.cpp

@@ -9,11 +9,16 @@
 #include "../../common/config.h"
 
 struct clazz {
-    int i{0};
-    char j{1};
+    int i{2};
+    char j{'c'};
 
-    void f(int) {}
-    void g(char) {}
+    int f(int) const {
+        return i;
+    }
+
+    char g(char) const {
+        return j;
+    }
 };
 
 struct MetaCustom: ::testing::Test {
@@ -24,10 +29,10 @@ struct MetaCustom: ::testing::Test {
             .type("clazz"_hs)
             .custom<char>('c')
             .data<&clazz::i>("i"_hs)
-            .custom<int>(2)
+            .custom<int>(0)
             .data<&clazz::j>("j"_hs)
             .func<&clazz::f>("f"_hs)
-            .custom<int>(3)
+            .custom<int>(1)
             .func<&clazz::g>("g"_hs);
     }
 
@@ -73,9 +78,17 @@ TEST_F(MetaCustom, Type) {
 TEST_F(MetaCustom, Data) {
     using namespace entt::literals;
 
+    const clazz instance{};
+
+    ASSERT_TRUE(entt::resolve<clazz>().data("i"_hs));
+    ASSERT_EQ(entt::resolve<clazz>().get("i"_hs, instance).cast<int>(), 2);
+
+    ASSERT_TRUE(entt::resolve<clazz>().data("j"_hs));
+    ASSERT_EQ(entt::resolve<clazz>().get("j"_hs, instance).cast<char>(), 'c');
+
     ASSERT_NE(static_cast<const int *>(entt::resolve<clazz>().data("i"_hs).custom()), nullptr);
-    ASSERT_EQ(*static_cast<const int *>(entt::resolve<clazz>().data("i"_hs).custom()), 2);
-    ASSERT_EQ(static_cast<const int &>(entt::resolve<clazz>().data("i"_hs).custom()), 2);
+    ASSERT_EQ(*static_cast<const int *>(entt::resolve<clazz>().data("i"_hs).custom()), 0);
+    ASSERT_EQ(static_cast<const int &>(entt::resolve<clazz>().data("i"_hs).custom()), 0);
 
     ASSERT_EQ(static_cast<const char *>(entt::resolve<clazz>().data("i"_hs).custom()), nullptr);
     ASSERT_EQ(static_cast<const int *>(entt::resolve<clazz>().data("j"_hs).custom()), nullptr);
@@ -84,9 +97,17 @@ TEST_F(MetaCustom, Data) {
 TEST_F(MetaCustom, Func) {
     using namespace entt::literals;
 
+    const clazz instance{};
+
+    ASSERT_TRUE(entt::resolve<clazz>().func("f"_hs));
+    ASSERT_EQ(entt::resolve<clazz>().invoke("f"_hs, instance, 0).cast<int>(), 2);
+
+    ASSERT_TRUE(entt::resolve<clazz>().func("g"_hs));
+    ASSERT_EQ(entt::resolve<clazz>().invoke("g"_hs, instance, 'c').cast<char>(), 'c');
+
     ASSERT_NE(static_cast<const int *>(entt::resolve<clazz>().func("f"_hs).custom()), nullptr);
-    ASSERT_EQ(*static_cast<const int *>(entt::resolve<clazz>().func("f"_hs).custom()), 3);
-    ASSERT_EQ(static_cast<const int &>(entt::resolve<clazz>().func("f"_hs).custom()), 3);
+    ASSERT_EQ(*static_cast<const int *>(entt::resolve<clazz>().func("f"_hs).custom()), 1);
+    ASSERT_EQ(static_cast<const int &>(entt::resolve<clazz>().func("f"_hs).custom()), 1);
 
     ASSERT_EQ(static_cast<const char *>(entt::resolve<clazz>().func("f"_hs).custom()), nullptr);
     ASSERT_EQ(static_cast<const int *>(entt::resolve<clazz>().func("g"_hs).custom()), nullptr);