Browse Source

test: runtime view and storage entity

skypjack 10 months ago
parent
commit
d7232dcf56
1 changed files with 34 additions and 0 deletions
  1. 34 0
      test/entt/entity/runtime_view.cpp

+ 34 - 0
test/entt/entity/runtime_view.cpp

@@ -444,3 +444,37 @@ TYPED_TEST(RuntimeView, SameStorageTypes) {
         ASSERT_EQ(entt, entity[0u]);
     });
 }
+
+TYPED_TEST(RuntimeView, StorageEntity) {
+    using runtime_view_type = typename TestFixture::type;
+
+    std::tuple<entt::storage<entt::entity>, entt::storage<char>> storage{};
+    const std::array entity{std::get<0>(storage).generate(), std::get<0>(storage).generate()};
+    runtime_view_type view{};
+
+    std::get<1>(storage).emplace(entity[0u]);
+    std::get<1>(storage).emplace(entity[1u]);
+
+    std::get<1>(storage).erase(entity[0u]);
+    std::get<0>(storage).erase(entity[0u]);
+    std::get<0>(storage).bump(entity[0u]);
+
+    view.iterate(std::get<0>(storage)).iterate(std::get<1>(storage));
+
+    ASSERT_FALSE(view.contains(entity[0u]));
+    ASSERT_TRUE(view.contains(entity[1u]));
+
+    ASSERT_EQ(view.size_hint(), 1u);
+    ASSERT_NE(view.begin(), view.end());
+
+    ASSERT_EQ(std::distance(view.begin(), view.end()), 1);
+    ASSERT_EQ(*view.begin(), entity[1u]);
+
+    for(auto entt: view) {
+        ASSERT_EQ(entt, entity[1u]);
+    }
+
+    view.each([&entity](auto entt) {
+        ASSERT_EQ(entt, entity[1u]);
+    });
+}