Prechádzať zdrojové kódy

test: context aware meta resolve

Michele Caini 3 rokov pred
rodič
commit
49c2ae0e77
1 zmenil súbory, kde vykonal 61 pridanie a 0 odobranie
  1. 61 0
      test/entt/meta/meta_context.cpp

+ 61 - 0
test/entt/meta/meta_context.cpp

@@ -0,0 +1,61 @@
+#include <gtest/gtest.h>
+#include <entt/core/hashed_string.hpp>
+#include <entt/meta/context.hpp>
+#include <entt/meta/factory.hpp>
+
+struct clazz {};
+struct local_only {};
+
+struct MetaContext: ::testing::Test {
+    void SetUp() override {
+        using namespace entt::literals;
+
+        // global context
+
+        entt::meta<clazz>()
+            .type("foo"_hs);
+
+        // local context
+
+        entt::meta<local_only>(context)
+            .type("quux"_hs);
+
+        entt::meta<clazz>(context)
+            .type("bar"_hs);
+    }
+
+    void TearDown() override {
+        entt::meta_reset(context);
+        entt::meta_reset();
+    }
+
+    entt::meta_ctx context{};
+};
+
+TEST_F(MetaContext, Resolve) {
+    using namespace entt::literals;
+
+    ASSERT_TRUE(entt::resolve<clazz>());
+    ASSERT_TRUE(entt::resolve<clazz>(context));
+
+    ASSERT_TRUE(entt::resolve<local_only>());
+    ASSERT_TRUE(entt::resolve<local_only>(context));
+
+    ASSERT_TRUE(entt::resolve(entt::type_id<clazz>()));
+    ASSERT_TRUE(entt::resolve(context, entt::type_id<clazz>()));
+
+    ASSERT_FALSE(entt::resolve(entt::type_id<local_only>()));
+    ASSERT_TRUE(entt::resolve(context, entt::type_id<local_only>()));
+
+    ASSERT_TRUE(entt::resolve("foo"_hs));
+    ASSERT_FALSE(entt::resolve(context, "foo"_hs));
+
+    ASSERT_FALSE(entt::resolve("bar"_hs));
+    ASSERT_TRUE(entt::resolve(context, "bar"_hs));
+
+    ASSERT_FALSE(entt::resolve("quux"_hs));
+    ASSERT_TRUE(entt::resolve(context, "quux"_hs));
+
+    ASSERT_EQ((std::distance(entt::resolve().cbegin(), entt::resolve().cend())), 1);
+    ASSERT_EQ((std::distance(entt::resolve(context).cbegin(), entt::resolve(context).cend())), 2);
+}