Jelajahi Sumber

test: code coverage

Michele Caini 5 tahun lalu
induk
melakukan
dfbc92dd3e

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

@@ -15,6 +15,10 @@ TEST(Lib, Registry) {
     for(auto i = 0; i < 3; ++i) {
     for(auto i = 0; i < 3; ++i) {
         const auto entity = registry.create();
         const auto entity = registry.create();
         registry.assign<position>(entity, i, i);
         registry.assign<position>(entity, i, i);
+
+        if(i % 2) {
+            registry.assign<tag>(entity);
+        }
     }
     }
 
 
     cr_plugin ctx;
     cr_plugin ctx;
@@ -23,6 +27,8 @@ TEST(Lib, Registry) {
     cr_plugin_update(ctx);
     cr_plugin_update(ctx);
 
 
     ASSERT_EQ(registry.size<position>(), registry.size<velocity>());
     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) {
     registry.view<position>().each([](auto entity, auto &position) {
         ASSERT_EQ(position.x, entt::to_integral(entity) + 16);
         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]() {
         [ctx]() {
             auto &registry = *static_cast<entt::registry *>(ctx->userdata);
             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) {
             registry.view<position, velocity>().each([](auto &pos, auto &vel) {
                 pos.x += static_cast<int>(16 * vel.dx);
                 pos.x += static_cast<int>(16 * vel.dx);
                 pos.y += static_cast<int>(16 * vel.dy);
                 pos.y += static_cast<int>(16 * vel.dy);
             });
             });
+
+            const auto tag_view = registry.view<tag>();
+            registry.destroy(tag_view.begin(), tag_view.end());
         }();
         }();
         break;
         break;
     case CR_CLOSE:
     case CR_CLOSE:

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

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