فهرست منبع

test: code coverage

Michele Caini 5 سال پیش
والد
کامیت
dfbc92dd3e
3فایلهای تغییر یافته به همراه13 افزوده شده و 2 حذف شده
  1. 6 0
      test/lib/registry_plugin/main.cpp
  2. 5 2
      test/lib/registry_plugin/plugin.cpp
  3. 2 0
      test/lib/registry_plugin/types.h

+ 6 - 0
test/lib/registry_plugin/main.cpp

@@ -15,6 +15,10 @@ TEST(Lib, Registry) {
     for(auto i = 0; i < 3; ++i) {
         const auto entity = registry.create();
         registry.assign<position>(entity, i, i);
+
+        if(i % 2) {
+            registry.assign<tag>(entity);
+        }
     }
 
     cr_plugin ctx;
@@ -23,6 +27,8 @@ TEST(Lib, Registry) {
     cr_plugin_update(ctx);
 
     ASSERT_EQ(registry.size<position>(), registry.size<velocity>());
+    ASSERT_NE(registry.size<position>(), registry.size());
+    ASSERT_TRUE(registry.empty<tag>());
 
     registry.view<position>().each([](auto entity, auto &position) {
         ASSERT_EQ(position.x, entt::to_integral(entity) + 16);

+ 5 - 2
test/lib/registry_plugin/plugin.cpp

@@ -12,13 +12,16 @@ CR_EXPORT int cr_main(cr_plugin *ctx, cr_op operation) {
         [ctx]() {
             auto &registry = *static_cast<entt::registry *>(ctx->userdata);
 
-            const auto view = registry.view<position>();
-            registry.assign(view.begin(), view.end(), velocity{1., 1.});
+            const auto position_view = registry.view<position>(entt::exclude<tag>);
+            registry.assign(position_view.begin(), position_view.end(), velocity{1., 1.});
 
             registry.view<position, velocity>().each([](auto &pos, auto &vel) {
                 pos.x += static_cast<int>(16 * vel.dx);
                 pos.y += static_cast<int>(16 * vel.dy);
             });
+
+            const auto tag_view = registry.view<tag>();
+            registry.destroy(tag_view.begin(), tag_view.end());
         }();
         break;
     case CR_CLOSE:

+ 2 - 0
test/lib/registry_plugin/types.h

@@ -11,4 +11,6 @@ struct velocity {
     double dy;
 };
 
+struct tag {};
+
 #endif