meta_range.cpp 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #include <type_traits>
  2. #include <gtest/gtest.h>
  3. #include <entt/core/hashed_string.hpp>
  4. #include <entt/meta/factory.hpp>
  5. #include <entt/meta/meta.hpp>
  6. #include <entt/meta/range.hpp>
  7. #include <entt/meta/resolve.hpp>
  8. struct MetaRange: ::testing::Test {
  9. void SetUp() override {
  10. using namespace entt::literals;
  11. entt::meta<int>().type("int"_hs);
  12. entt::meta<double>().type("double"_hs);
  13. }
  14. void TearDown() override {
  15. entt::meta_reset();
  16. }
  17. };
  18. TEST_F(MetaRange, Range) {
  19. using namespace entt::literals;
  20. entt::meta_range<entt::meta_type> range{entt::internal::meta_context::local(), nullptr};
  21. auto it = range.begin();
  22. ASSERT_NE(it, range.end());
  23. ASSERT_TRUE(it != range.end());
  24. ASSERT_FALSE(it == range.end());
  25. ASSERT_EQ(it->info(), entt::resolve<double>().info());
  26. ASSERT_EQ((++it)->info(), entt::resolve("int"_hs).info());
  27. ASSERT_EQ((it++)->info(), entt::resolve<int>().info());
  28. ASSERT_EQ(it, range.end());
  29. }
  30. TEST_F(MetaRange, EmptyRange) {
  31. entt::meta_range<entt::meta_data> range{};
  32. ASSERT_EQ(range.begin(), range.end());
  33. }