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

test: context aware meta bases

Michele Caini 3 лет назад
Родитель
Сommit
4bad4f3067
1 измененных файлов с 17 добавлено и 3 удалено
  1. 17 3
      test/entt/meta/meta_context.cpp

+ 17 - 3
test/entt/meta/meta_context.cpp

@@ -3,7 +3,8 @@
 #include <entt/meta/context.hpp>
 #include <entt/meta/factory.hpp>
 
-struct clazz {};
+struct base {};
+struct clazz: base {};
 struct local_only {};
 
 struct MetaContext: ::testing::Test {
@@ -21,7 +22,8 @@ struct MetaContext: ::testing::Test {
             .type("quux"_hs);
 
         entt::meta<clazz>(context)
-            .type("bar"_hs);
+            .type("bar"_hs)
+            .base<base>();
     }
 
     void TearDown() override {
@@ -81,7 +83,19 @@ TEST_F(MetaContext, MetaType) {
 TEST_F(MetaContext, MetaBase) {
     using namespace entt::literals;
 
-    // TODO
+    const auto global = entt::resolve<clazz>();
+    const auto local = entt::resolve<clazz>(context);
+
+    ASSERT_TRUE(global);
+    ASSERT_TRUE(local);
+
+    ASSERT_EQ((std::distance(global.base().cbegin(), global.base().cend())), 0);
+    ASSERT_EQ((std::distance(local.base().cbegin(), local.base().cend())), 1);
+
+    ASSERT_EQ(local.base().cbegin()->second.info(), entt::type_id<base>());
+
+    ASSERT_FALSE(entt::resolve(entt::type_id<base>()));
+    ASSERT_FALSE(entt::resolve(context, entt::type_id<base>()));
 }
 
 TEST_F(MetaContext, MetaData) {