Prechádzať zdrojové kódy

test: filtered registry view

Michele Caini 3 rokov pred
rodič
commit
319dfdb070
1 zmenil súbory, kde vykonal 16 pridanie a 4 odobranie
  1. 16 4
      test/entt/entity/registry.cpp

+ 16 - 4
test/entt/entity/registry.cpp

@@ -950,10 +950,12 @@ TEST(Registry, Orphans) {
 
 TEST(Registry, View) {
     entt::registry registry;
+    entt::entity entities[3u];
+
     auto mview = registry.view<int, char>();
     auto iview = registry.view<int>();
     auto cview = registry.view<char>();
-    entt::entity entities[3u];
+    auto fview = registry.view<int>(entt::exclude<char>);
 
     registry.create(std::begin(entities), std::end(entities));
 
@@ -968,10 +970,20 @@ TEST(Registry, View) {
     ASSERT_EQ(iview.size(), 3u);
     ASSERT_EQ(cview.size(), 2u);
 
-    std::size_t cnt{};
-    mview.each([&cnt](auto...) { ++cnt; });
+    ASSERT_NE(mview.begin(), mview.end());
+    ASSERT_NE(fview.begin(), fview.end());
 
-    ASSERT_EQ(cnt, 2u);
+    ASSERT_EQ(std::distance(mview.begin(), mview.end()), 2);
+    ASSERT_EQ(std::distance(fview.begin(), fview.end()), 1);
+
+    mview.each([&entities, first = true](auto entity, auto &&...) mutable {
+        ASSERT_EQ(entity, entities[2u * first]);
+        first = false;
+    });
+
+    fview.each([&entities](auto entity, auto &&...) {
+        ASSERT_EQ(entity, entities[1u]);
+    });
 }
 
 TEST(Registry, NonOwningGroupInitOnFirstUse) {