diff --git a/test/lib/registry_plugin/main.cpp b/test/lib/registry_plugin/main.cpp index d242c6342..0ff70710b 100644 --- a/test/lib/registry_plugin/main.cpp +++ b/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(entity, i, i); + + if(i % 2) { + registry.assign(entity); + } } cr_plugin ctx; @@ -23,6 +27,8 @@ TEST(Lib, Registry) { cr_plugin_update(ctx); ASSERT_EQ(registry.size(), registry.size()); + ASSERT_NE(registry.size(), registry.size()); + ASSERT_TRUE(registry.empty()); registry.view().each([](auto entity, auto &position) { ASSERT_EQ(position.x, entt::to_integral(entity) + 16); diff --git a/test/lib/registry_plugin/plugin.cpp b/test/lib/registry_plugin/plugin.cpp index 902aded02..8e7c7eb90 100644 --- a/test/lib/registry_plugin/plugin.cpp +++ b/test/lib/registry_plugin/plugin.cpp @@ -12,13 +12,16 @@ CR_EXPORT int cr_main(cr_plugin *ctx, cr_op operation) { [ctx]() { auto ®istry = *static_cast(ctx->userdata); - const auto view = registry.view(); - registry.assign(view.begin(), view.end(), velocity{1., 1.}); + const auto position_view = registry.view(entt::exclude); + registry.assign(position_view.begin(), position_view.end(), velocity{1., 1.}); registry.view().each([](auto &pos, auto &vel) { pos.x += static_cast(16 * vel.dx); pos.y += static_cast(16 * vel.dy); }); + + const auto tag_view = registry.view(); + registry.destroy(tag_view.begin(), tag_view.end()); }(); break; case CR_CLOSE: diff --git a/test/lib/registry_plugin/types.h b/test/lib/registry_plugin/types.h index 2e0c14e42..985ad730f 100644 --- a/test/lib/registry_plugin/types.h +++ b/test/lib/registry_plugin/types.h @@ -11,4 +11,6 @@ struct velocity { double dy; }; +struct tag {}; + #endif