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

test: view ::use and ::refresh

Michele Caini 2 лет назад
Родитель
Сommit
1df40ada5c
1 измененных файлов с 30 добавлено и 0 удалено
  1. 30 0
      test/entt/entity/view.cpp

+ 30 - 0
test/entt/entity/view.cpp

@@ -851,6 +851,36 @@ TEST(MultiComponentView, SizeHint) {
     ASSERT_EQ(view.begin(), view.end());
     ASSERT_EQ(view.begin(), view.end());
 }
 }
 
 
+TEST(MultiComponentView, UseAndRefresh) {
+    entt::registry registry;
+    entt::entity entity[3]{registry.create(), registry.create(), registry.create()};
+
+    registry.emplace<int>(entity[0u]);
+    registry.emplace<int>(entity[1u]);
+
+    registry.emplace<char>(entity[1u]);
+    registry.emplace<char>(entity[0u]);
+    registry.emplace<char>(entity[2u]);
+
+    auto view = registry.view<int, char>(entt::exclude<double>);
+
+    view.use<int>();
+
+    ASSERT_EQ(view.handle()->type(), entt::type_id<int>());
+    ASSERT_EQ(view.front(), entity[1u]);
+    ASSERT_EQ(view.back(), entity[0u]);
+
+    view.use<char>();
+
+    ASSERT_EQ(view.handle()->type(), entt::type_id<char>());
+    ASSERT_EQ(view.front(), entity[0u]);
+    ASSERT_EQ(view.back(), entity[1u]);
+
+    view.refresh();
+
+    ASSERT_EQ(view.handle()->type(), entt::type_id<int>());
+}
+
 TEST(MultiComponentView, Each) {
 TEST(MultiComponentView, Each) {
     entt::registry registry;
     entt::registry registry;
     entt::entity entity[2]{registry.create(), registry.create()};
     entt::entity entity[2]{registry.create(), registry.create()};