|
@@ -444,3 +444,37 @@ TYPED_TEST(RuntimeView, SameStorageTypes) {
|
|
|
ASSERT_EQ(entt, entity[0u]);
|
|
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]);
|
|
|
|
|
+ });
|
|
|
|
|
+}
|