diff --git a/src/entt/entity/registry.hpp b/src/entt/entity/registry.hpp index 9aa7aa8a7..faaf66200 100644 --- a/src/entt/entity/registry.hpp +++ b/src/entt/entity/registry.hpp @@ -339,61 +339,6 @@ public: return version_type((entities[pos] >> traits_type::entity_shift) & traits_type::version_mask); } - /** - * @brief Returns a new entity initialized with the given components. - * - * There are two kinds of entity identifiers: - * - * * Newly created ones in case no entities have been previously destroyed. - * * Recycled one with updated versions. - * - * Users should not care about the type of the returned entity identifier. - * In case entity identifers are stored around, the `current` member - * function can be used to know if they are still valid or the entity has - * been destroyed and potentially recycled. - * - * The returned entity has fully initialized components assigned. - * - * @tparam Component A list of components to assign to the entity. - * @param components Instances with which to initialize components. - * @return A valid entity identifier. - */ - template - entity_type create(Component &&... components) noexcept { - using accumulator_type = int[]; - const auto entity = create(); - accumulator_type accumulator = { 0, (assure>().construct(entity, std::forward(components)), 0)... }; - (void)accumulator; - return entity; - } - - /** - * @brief Returns a new entity to which the given components are assigned. - * - * There are two kinds of entity identifiers: - * - * * Newly created ones in case no entities have been previously destroyed. - * * Recycled one with updated versions. - * - * Users should not care about the type of the returned entity identifier. - * In case entity identifers are stored around, the `current` member - * function can be used to know if they are still valid or the entity has - * been destroyed and potentially recycled. - * - * The returned entity has default initialized components assigned. - * - * @tparam Component A list of components to assign to the entity. - * @return A valid entity identifier. - */ - template - entity_type create() noexcept { - using accumulator_type = int[]; - const auto entity = create(); - accumulator_type accumulator = { 0, (assure().construct(entity), 0)... }; - (void)accumulator; - return entity; - } - /** * @brief Creates a new entity and returns it. * diff --git a/test/benchmark/benchmark.cpp b/test/benchmark/benchmark.cpp index a7813396d..a2370c322 100644 --- a/test/benchmark/benchmark.cpp +++ b/test/benchmark/benchmark.cpp @@ -73,17 +73,17 @@ TEST(Benchmark, IterateCreateDeleteSingleComponent) { for(int i = 0; i < 10000; i++) { for(int j = 0; j < 10000; j++) { - registry.create(); + const auto entity = registry.create(); + registry.assign(entity); } - for(auto entity: view) { - const auto &position = view.get(entity); + view.each([&](auto entity, auto &position) { (void)position; if(rand() % 2 == 0) { registry.destroy(entity); } - }; + }); } timer.elapsed(); @@ -95,7 +95,8 @@ TEST(Benchmark, IterateSingleComponent1M) { std::cout << "Iterating over 1000000 entities, one component" << std::endl; for(std::uint64_t i = 0; i < 1000000L; i++) { - registry.create(); + const auto entity = registry.create(); + registry.assign(entity); } Timer timer; @@ -109,7 +110,8 @@ TEST(Benchmark, IterateSingleComponentRaw1M) { std::cout << "Iterating over 1000000 entities, one component, raw view" << std::endl; for(std::uint64_t i = 0; i < 1000000L; i++) { - registry.create(); + const auto entity = registry.create(); + registry.assign(entity); } Timer timer; @@ -125,7 +127,9 @@ TEST(Benchmark, IterateTwoComponents1M) { std::cout << "Iterating over 1000000 entities, two components" << std::endl; for(std::uint64_t i = 0; i < 1000000L; i++) { - registry.create(); + const auto entity = registry.create(); + registry.assign(entity); + registry.assign(entity); } Timer timer; @@ -139,8 +143,12 @@ TEST(Benchmark, IterateTwoComponents1MHalf) { std::cout << "Iterating over 1000000 entities, two components, half of the entities have all the components" << std::endl; for(std::uint64_t i = 0; i < 1000000L; i++) { - auto entity = registry.create(); - if(i % 2) { registry.assign(entity); } + const auto entity = registry.create(); + registry.assign(entity); + + if(i % 2) { + registry.assign(entity); + } } Timer timer; @@ -154,8 +162,12 @@ TEST(Benchmark, IterateTwoComponents1MOne) { std::cout << "Iterating over 1000000 entities, two components, only one entity has all the components" << std::endl; for(std::uint64_t i = 0; i < 1000000L; i++) { - auto entity = registry.create(); - if(i == 5000000L) { registry.assign(entity); } + const auto entity = registry.create(); + registry.assign(entity); + + if(i == 5000000L) { + registry.assign(entity); + } } Timer timer; @@ -170,7 +182,9 @@ TEST(Benchmark, IterateTwoComponentsPersistent1M) { std::cout << "Iterating over 1000000 entities, two components, persistent view" << std::endl; for(std::uint64_t i = 0; i < 1000000L; i++) { - registry.create(); + const auto entity = registry.create(); + registry.assign(entity); + registry.assign(entity); } Timer timer; @@ -184,7 +198,12 @@ TEST(Benchmark, IterateFiveComponents1M) { std::cout << "Iterating over 1000000 entities, five components" << std::endl; for(std::uint64_t i = 0; i < 1000000L; i++) { - registry.create, Comp<2>, Comp<3>>(); + const auto entity = registry.create(); + registry.assign(entity); + registry.assign(entity); + registry.assign>(entity); + registry.assign>(entity); + registry.assign>(entity); } Timer timer; @@ -198,8 +217,15 @@ TEST(Benchmark, IterateFiveComponents1MHalf) { std::cout << "Iterating over 1000000 entities, five components, half of the entities have all the components" << std::endl; for(std::uint64_t i = 0; i < 1000000L; i++) { - auto entity = registry.create, Comp<2>, Comp<3>>(); - if(i % 2) { registry.assign(entity); } + const auto entity = registry.create(); + registry.assign(entity); + registry.assign>(entity); + registry.assign>(entity); + registry.assign>(entity); + + if(i % 2) { + registry.assign(entity); + } } Timer timer; @@ -213,8 +239,15 @@ TEST(Benchmark, IterateFiveComponents1MOne) { std::cout << "Iterating over 1000000 entities, five components, only one entity has all the components" << std::endl; for(std::uint64_t i = 0; i < 1000000L; i++) { - auto entity = registry.create, Comp<2>, Comp<3>>(); - if(i == 5000000L) { registry.assign(entity); } + const auto entity = registry.create(); + registry.assign(entity); + registry.assign>(entity); + registry.assign>(entity); + registry.assign>(entity); + + if(i == 5000000L) { + registry.assign(entity); + } } Timer timer; @@ -229,7 +262,12 @@ TEST(Benchmark, IterateFiveComponentsPersistent1M) { std::cout << "Iterating over 1000000 entities, five components, persistent view" << std::endl; for(std::uint64_t i = 0; i < 1000000L; i++) { - registry.create, Comp<2>, Comp<3>>(); + const auto entity = registry.create(); + registry.assign(entity); + registry.assign(entity); + registry.assign>(entity); + registry.assign>(entity); + registry.assign>(entity); } Timer timer; @@ -243,7 +281,17 @@ TEST(Benchmark, IterateTenComponents1M) { std::cout << "Iterating over 1000000 entities, ten components" << std::endl; for(std::uint64_t i = 0; i < 1000000L; i++) { - registry.create, Comp<2>, Comp<3>, Comp<4>, Comp<5>, Comp<6>, Comp<7>, Comp<8>>(); + const auto entity = registry.create(); + registry.assign(entity); + registry.assign(entity); + registry.assign>(entity); + registry.assign>(entity); + registry.assign>(entity); + registry.assign>(entity); + registry.assign>(entity); + registry.assign>(entity); + registry.assign>(entity); + registry.assign>(entity); } Timer timer; @@ -257,8 +305,20 @@ TEST(Benchmark, IterateTenComponents1MHalf) { std::cout << "Iterating over 1000000 entities, ten components, half of the entities have all the components" << std::endl; for(std::uint64_t i = 0; i < 1000000L; i++) { - auto entity = registry.create, Comp<2>, Comp<3>, Comp<4>, Comp<5>, Comp<6>, Comp<7>, Comp<8>>(); - if(i % 2) { registry.assign(entity); } + const auto entity = registry.create(); + registry.assign(entity); + registry.assign>(entity); + registry.assign>(entity); + registry.assign>(entity); + registry.assign>(entity); + registry.assign>(entity); + registry.assign>(entity); + registry.assign>(entity); + registry.assign>(entity); + + if(i % 2) { + registry.assign(entity); + } } Timer timer; @@ -272,8 +332,20 @@ TEST(Benchmark, IterateTenComponents1MOne) { std::cout << "Iterating over 1000000 entities, ten components, only one entity has all the components" << std::endl; for(std::uint64_t i = 0; i < 1000000L; i++) { - auto entity = registry.create, Comp<2>, Comp<3>, Comp<4>, Comp<5>, Comp<6>, Comp<7>, Comp<8>>(); - if(i == 5000000L) { registry.assign(entity); } + const auto entity = registry.create(); + registry.assign(entity); + registry.assign>(entity); + registry.assign>(entity); + registry.assign>(entity); + registry.assign>(entity); + registry.assign>(entity); + registry.assign>(entity); + registry.assign>(entity); + registry.assign>(entity); + + if(i == 5000000L) { + registry.assign(entity); + } } Timer timer; @@ -288,7 +360,17 @@ TEST(Benchmark, IterateTenComponentsPersistent1M) { std::cout << "Iterating over 1000000 entities, ten components, persistent view" << std::endl; for(std::uint64_t i = 0; i < 1000000L; i++) { - registry.create, Comp<2>, Comp<3>, Comp<4>, Comp<5>, Comp<6>, Comp<7>, Comp<8>>(); + const auto entity = registry.create(); + registry.assign(entity); + registry.assign(entity); + registry.assign>(entity); + registry.assign>(entity); + registry.assign>(entity); + registry.assign>(entity); + registry.assign>(entity); + registry.assign>(entity); + registry.assign>(entity); + registry.assign>(entity); } Timer timer; @@ -302,7 +384,8 @@ TEST(Benchmark, SortSingle) { std::cout << "Sort 150000 entities, one component" << std::endl; for(std::uint64_t i = 0; i < 150000L; i++) { - registry.create({ i, i }); + const auto entity = registry.create(); + registry.assign(entity, i, i); } Timer timer; @@ -320,7 +403,9 @@ TEST(Benchmark, SortMulti) { std::cout << "Sort 150000 entities, two components" << std::endl; for(std::uint64_t i = 0; i < 150000L; i++) { - registry.create({ i, i }, { i, i }); + const auto entity = registry.create(); + registry.assign(entity, i, i); + registry.assign(entity, i, i); } registry.sort([](const auto &lhs, const auto &rhs) { diff --git a/test/entt/entity/registry.cpp b/test/entt/entity/registry.cpp index b58eaa483..61ab54042 100644 --- a/test/entt/entity/registry.cpp +++ b/test/entt/entity/registry.cpp @@ -36,8 +36,11 @@ TEST(DefaultRegistry, Functionalities) { ASSERT_TRUE(registry.empty()); ASSERT_TRUE(registry.empty()); - auto e0 = registry.create(); - auto e1 = registry.create(); + const auto e0 = registry.create(); + const auto e1 = registry.create(); + + registry.assign(e1); + registry.assign(e1); ASSERT_TRUE(registry.has<>(e0)); ASSERT_TRUE(registry.has<>(e1)); @@ -69,7 +72,7 @@ TEST(DefaultRegistry, Functionalities) { ASSERT_TRUE((registry.has(e0))); ASSERT_FALSE((registry.has(e1))); - auto e2 = registry.create(); + const auto e2 = registry.create(); registry.accommodate(e2, registry.get(e0)); registry.accommodate(e2, registry.get(e0)); @@ -121,7 +124,10 @@ TEST(DefaultRegistry, Functionalities) { ASSERT_EQ(registry.size(), entt::DefaultRegistry::size_type{0}); ASSERT_TRUE(registry.empty()); - registry.create(); + const auto e3 = registry.create(); + + registry.assign(e3); + registry.assign(e3); ASSERT_EQ(registry.size(), entt::DefaultRegistry::size_type{1}); ASSERT_EQ(registry.size(), entt::DefaultRegistry::size_type{1}); @@ -142,11 +148,13 @@ TEST(DefaultRegistry, Functionalities) { ASSERT_TRUE(registry.empty()); ASSERT_TRUE(registry.empty()); - e0 = registry.create(); - e1 = registry.create(); + const auto e4 = registry.create(); + const auto e5 = registry.create(); - ASSERT_NO_THROW(registry.reset(e0)); - ASSERT_NO_THROW(registry.reset(e1)); + registry.assign(e4); + + ASSERT_NO_THROW(registry.reset(e4)); + ASSERT_NO_THROW(registry.reset(e5)); ASSERT_EQ(registry.size(), entt::DefaultRegistry::size_type{0}); ASSERT_EQ(registry.size(), entt::DefaultRegistry::size_type{0}); @@ -156,8 +164,8 @@ TEST(DefaultRegistry, Functionalities) { TEST(DefaultRegistry, CreateDestroyCornerCase) { entt::DefaultRegistry registry; - auto e0 = registry.create(); - auto e1 = registry.create(); + const auto e0 = registry.create(); + const auto e1 = registry.create(); registry.destroy(e0); registry.destroy(e1); @@ -171,7 +179,7 @@ TEST(DefaultRegistry, CreateDestroyCornerCase) { TEST(DefaultRegistry, VersionOverflow) { entt::DefaultRegistry registry; - auto entity = registry.create(); + const auto entity = registry.create(); registry.destroy(entity); ASSERT_EQ(registry.version(entity), entt::DefaultRegistry::version_type{}); @@ -190,9 +198,9 @@ TEST(DefaultRegistry, Each) { entt::DefaultRegistry::size_type match; registry.create(); - registry.create(); + registry.assign(registry.create()); registry.create(); - registry.create(); + registry.assign(registry.create()); registry.create(); tot = 0u; @@ -241,9 +249,9 @@ TEST(DefaultRegistry, Orphans) { entt::DefaultRegistry registry; entt::DefaultRegistry::size_type tot{}; - registry.create(); + registry.assign(registry.create()); registry.create(); - registry.create(); + registry.assign(registry.create()); registry.create(); registry.attach(registry.create()); @@ -276,20 +284,22 @@ TEST(DefaultRegistry, CreateDestroyEntities) { entt::DefaultRegistry::entity_type pre{}, post{}; for(int i = 0; i < 10; ++i) { - registry.create(); + const auto entity = registry.create(); + registry.assign(entity); } registry.reset(); for(int i = 0; i < 7; ++i) { - auto entity = registry.create(); + const auto entity = registry.create(); + registry.assign(entity); if(i == 3) { pre = entity; } } registry.reset(); for(int i = 0; i < 5; ++i) { - auto entity = registry.create(); + const auto entity = registry.create(); if(i == 3) { post = entity; } } @@ -306,7 +316,7 @@ TEST(DefaultRegistry, AttachSetRemoveTags) { ASSERT_FALSE(registry.has()); - auto entity = registry.create(); + const auto entity = registry.create(); registry.attach(entity, 42); ASSERT_TRUE(registry.has()); @@ -321,7 +331,7 @@ TEST(DefaultRegistry, AttachSetRemoveTags) { ASSERT_EQ(cregistry.get(), 3); ASSERT_EQ(registry.attachee(), entity); - auto other = registry.create(); + const auto other = registry.create(); registry.move(other); ASSERT_TRUE(registry.has()); @@ -345,9 +355,16 @@ TEST(DefaultRegistry, StandardViews) { auto iview = registry.view(); auto cview = registry.view(); - registry.create(0, 'c'); - registry.create(0); - registry.create(0, 'c'); + const auto e0 = registry.create(); + registry.assign(e0, 0); + registry.assign(e0, 'c'); + + const auto e1 = registry.create(); + registry.assign(e1, 0); + + const auto e2 = registry.create(); + registry.assign(e2, 0); + registry.assign(e2, 'c'); ASSERT_EQ(iview.size(), decltype(iview)::size_type{3}); ASSERT_EQ(cview.size(), decltype(cview)::size_type{2}); @@ -373,9 +390,16 @@ TEST(DefaultRegistry, PersistentViews) { ASSERT_FALSE((registry.contains())); - registry.create(0, 'c'); - registry.create(0); - registry.create(0, 'c'); + const auto e0 = registry.create(); + registry.assign(e0, 0); + registry.assign(e0, 'c'); + + const auto e1 = registry.create(); + registry.assign(e1, 0); + + const auto e2 = registry.create(); + registry.assign(e2, 0); + registry.assign(e2, 'c'); decltype(view)::size_type cnt{0}; view.each([&cnt](auto...) { ++cnt; }); @@ -386,7 +410,7 @@ TEST(DefaultRegistry, PersistentViews) { TEST(DefaultRegistry, CleanStandardViewsAfterReset) { entt::DefaultRegistry registry; auto view = registry.view(); - registry.create(0); + registry.assign(registry.create(), 0); ASSERT_EQ(view.size(), entt::DefaultRegistry::size_type{1}); @@ -398,7 +422,10 @@ TEST(DefaultRegistry, CleanStandardViewsAfterReset) { TEST(DefaultRegistry, CleanPersistentViewsAfterReset) { entt::DefaultRegistry registry; auto view = registry.persistent(); - registry.create(0, 'c'); + + const auto entity = registry.create(); + registry.assign(entity, 0); + registry.assign(entity, 'c'); ASSERT_EQ(view.size(), entt::DefaultRegistry::size_type{1}); @@ -409,7 +436,7 @@ TEST(DefaultRegistry, CleanPersistentViewsAfterReset) { TEST(DefaultRegistry, CleanTagsAfterReset) { entt::DefaultRegistry registry; - auto entity = registry.create(); + const auto entity = registry.create(); registry.attach(entity); ASSERT_TRUE(registry.has()); @@ -424,9 +451,9 @@ TEST(DefaultRegistry, SortSingle) { int val = 0; - registry.create(val++); - registry.create(val++); - registry.create(val++); + registry.assign(registry.create(), val++); + registry.assign(registry.create(), val++); + registry.assign(registry.create(), val++); for(auto entity: registry.view()) { ASSERT_EQ(registry.get(entity), --val); @@ -445,9 +472,11 @@ TEST(DefaultRegistry, SortMulti) { unsigned int uval = 0u; int ival = 0; - registry.create(uval++, ival++); - registry.create(uval++, ival++); - registry.create(uval++, ival++); + for(auto i = 0; i < 3; ++i) { + const auto entity = registry.create(); + registry.assign(entity, uval++); + registry.assign(entity, ival++); + } for(auto entity: registry.view()) { ASSERT_EQ(registry.get(entity), --uval); @@ -472,7 +501,7 @@ TEST(DefaultRegistry, SortMulti) { TEST(DefaultRegistry, ComponentsWithTypesFromStandardTemplateLibrary) { // see #37 - the test shouldn't crash, that's all entt::DefaultRegistry registry; - auto entity = registry.create(); + const auto entity = registry.create(); registry.assign>(entity).insert(42); registry.destroy(entity); } @@ -481,7 +510,7 @@ TEST(DefaultRegistry, ConstructWithComponents) { // it should compile, that's all entt::DefaultRegistry registry; const auto value = 0; - registry.create(value); + registry.assign(registry.create(), value); } TEST(DefaultRegistry, MergeTwoRegistries) { @@ -495,7 +524,9 @@ TEST(DefaultRegistry, MergeTwoRegistries) { auto merge = [&ref](const auto &view, auto &dst) { view.each([&](auto entity, const auto &component) { if(ref.find(entity) == ref.cend()) { - ref.emplace(entity, dst.create(component)); + const auto other = dst.create(); + dst.template assign>(other, component); + ref.emplace(entity, other); } else { using component_type = std::decay_t; dst.template assign(ref[entity], component); @@ -503,11 +534,24 @@ TEST(DefaultRegistry, MergeTwoRegistries) { }); }; - src.create(); - src.create(); + auto e0 = src.create(); + src.assign(e0); + src.assign(e0); + src.assign(e0); - dst.create(); - dst.create(); + auto e1 = src.create(); + src.assign(e1); + src.assign(e1); + src.assign(e1); + + auto e2 = dst.create(); + dst.assign(e2); + dst.assign(e2); + dst.assign(e2); + + auto e3 = dst.create(); + dst.assign(e3); + dst.assign(e3); auto eq = [](auto begin, auto end) { ASSERT_EQ(begin, end); }; auto ne = [](auto begin, auto end) { ASSERT_NE(begin, end); }; diff --git a/test/entt/entity/snapshot.cpp b/test/entt/entity/snapshot.cpp index ea9b91b8f..67cd168f1 100644 --- a/test/entt/entity/snapshot.cpp +++ b/test/entt/entity/snapshot.cpp @@ -51,21 +51,21 @@ struct Foo { TEST(Snapshot, Dump) { entt::DefaultRegistry registry; - auto e0 = registry.create(); + const auto e0 = registry.create(); registry.assign(e0, 42); registry.assign(e0, 'c'); registry.assign(e0, .1); - auto e1 = registry.create(); + const auto e1 = registry.create(); - auto e2 = registry.create(); + const auto e2 = registry.create(); registry.assign(e2, 3); - auto e3 = registry.create(); + const auto e3 = registry.create(); registry.assign(e3, '0'); registry.attach(e3, .3f); - auto e4 = registry.create(); + const auto e4 = registry.create(); registry.attach(e4); registry.destroy(e1); @@ -140,21 +140,21 @@ TEST(Snapshot, Dump) { TEST(Snapshot, Partial) { entt::DefaultRegistry registry; - auto e0 = registry.create(); + const auto e0 = registry.create(); registry.assign(e0, 42); registry.assign(e0, 'c'); registry.assign(e0, .1); - auto e1 = registry.create(); + const auto e1 = registry.create(); - auto e2 = registry.create(); + const auto e2 = registry.create(); registry.assign(e2, 3); - auto e3 = registry.create(); + const auto e3 = registry.create(); registry.assign(e3, '0'); registry.attach(e3, .3f); - auto e4 = registry.create(); + const auto e4 = registry.create(); registry.attach(e4); registry.destroy(e1); diff --git a/test/entt/entity/view.cpp b/test/entt/entity/view.cpp index 85ba84cec..d3c15ead4 100644 --- a/test/entt/entity/view.cpp +++ b/test/entt/entity/view.cpp @@ -5,8 +5,11 @@ TEST(View, SingleComponent) { entt::DefaultRegistry registry; - auto e0 = registry.create(); - auto e1 = registry.create(); + const auto e0 = registry.create(); + const auto e1 = registry.create(); + + registry.assign(e1); + registry.assign(e1); ASSERT_NO_THROW(registry.view().begin()++); ASSERT_NO_THROW(++registry.view().begin()); @@ -43,8 +46,11 @@ TEST(View, SingleComponent) { TEST(View, SingleComponentContains) { entt::DefaultRegistry registry; - auto e0 = registry.create(); - auto e1 = registry.create(); + const auto e0 = registry.create(); + registry.assign(e0); + + const auto e1 = registry.create(); + registry.assign(e1); registry.destroy(e0); @@ -57,8 +63,12 @@ TEST(View, SingleComponentContains) { TEST(View, SingleComponentEmpty) { entt::DefaultRegistry registry; - registry.create(); - registry.create(); + const auto e0 = registry.create(); + registry.assign(e0); + registry.assign(e0); + + const auto e1 = registry.create(); + registry.assign(e1); auto view = registry.view(); @@ -73,8 +83,13 @@ TEST(View, SingleComponentEmpty) { TEST(View, SingleComponentEach) { entt::DefaultRegistry registry; - registry.create(); - registry.create(); + const auto e0 = registry.create(); + registry.assign(e0); + registry.assign(e0); + + const auto e1 = registry.create(); + registry.assign(e1); + registry.assign(e1); auto view = registry.view(); const auto &cview = static_cast(view); @@ -92,8 +107,12 @@ TEST(View, SingleComponentEach) { TEST(View, MultipleComponent) { entt::DefaultRegistry registry; - auto e0 = registry.create(); - auto e1 = registry.create(); + const auto e0 = registry.create(); + registry.assign(e0); + + const auto e1 = registry.create(); + registry.assign(e1); + registry.assign(e1); auto it = registry.view().begin(); @@ -131,8 +150,13 @@ TEST(View, MultipleComponent) { TEST(View, MultipleComponentContains) { entt::DefaultRegistry registry; - auto e0 = registry.create(); - auto e1 = registry.create(); + const auto e0 = registry.create(); + registry.assign(e0); + registry.assign(e0); + + const auto e1 = registry.create(); + registry.assign(e1); + registry.assign(e1); registry.destroy(e0); @@ -145,8 +169,14 @@ TEST(View, MultipleComponentContains) { TEST(View, MultipleComponentEmpty) { entt::DefaultRegistry registry; - registry.create(); - registry.create(); + const auto e0 = registry.create(); + registry.assign(e0); + registry.assign(e0); + registry.assign(e0); + + const auto e1 = registry.create(); + registry.assign(e1); + registry.assign(e1); auto view = registry.view(); @@ -159,8 +189,13 @@ TEST(View, MultipleComponentEmpty) { TEST(View, MultipleComponentEach) { entt::DefaultRegistry registry; - registry.create(); - registry.create(); + const auto e0 = registry.create(); + registry.assign(e0); + registry.assign(e0); + + const auto e1 = registry.create(); + registry.assign(e1); + registry.assign(e1); auto view = registry.view(); const auto &cview = static_cast(view); @@ -179,8 +214,12 @@ TEST(PersistentView, Prepare) { entt::DefaultRegistry registry; registry.prepare(); - auto e0 = registry.create(); - auto e1 = registry.create(); + const auto e0 = registry.create(); + registry.assign(e0); + + const auto e1 = registry.create(); + registry.assign(e1); + registry.assign(e1); ASSERT_NO_THROW((registry.persistent().begin()++)); ASSERT_NO_THROW((++registry.persistent().begin())); @@ -220,8 +259,12 @@ TEST(PersistentView, Prepare) { TEST(PersistentView, NoPrepare) { entt::DefaultRegistry registry; - auto e0 = registry.create(); - auto e1 = registry.create(); + const auto e0 = registry.create(); + registry.assign(e0); + + const auto e1 = registry.create(); + registry.assign(e1); + registry.assign(e1); ASSERT_NO_THROW((registry.persistent().begin()++)); ASSERT_NO_THROW((++registry.persistent().begin())); @@ -261,8 +304,13 @@ TEST(PersistentView, NoPrepare) { TEST(PersistentView, Contains) { entt::DefaultRegistry registry; - auto e0 = registry.create(); - auto e1 = registry.create(); + const auto e0 = registry.create(); + registry.assign(e0); + registry.assign(e0); + + const auto e1 = registry.create(); + registry.assign(e1); + registry.assign(e1); registry.destroy(e0); @@ -275,8 +323,14 @@ TEST(PersistentView, Contains) { TEST(PersistentView, Empty) { entt::DefaultRegistry registry; - registry.create(); - registry.create(); + const auto e0 = registry.create(); + registry.assign(e0); + registry.assign(e0); + registry.assign(e0); + + const auto e1 = registry.create(); + registry.assign(e1); + registry.assign(e1); for(auto entity: registry.persistent()) { (void)entity; @@ -293,8 +347,13 @@ TEST(PersistentView, Each) { entt::DefaultRegistry registry; registry.prepare(); - registry.create(); - registry.create(); + const auto e0 = registry.create(); + registry.assign(e0); + registry.assign(e0); + + const auto e1 = registry.create(); + registry.assign(e1); + registry.assign(e1); auto view = registry.persistent(); const auto &cview = static_cast(view); @@ -313,9 +372,9 @@ TEST(PersistentView, Sort) { entt::DefaultRegistry registry; registry.prepare(); - auto e0 = registry.create(); - auto e1 = registry.create(); - auto e2 = registry.create(); + const auto e0 = registry.create(); + const auto e1 = registry.create(); + const auto e2 = registry.create(); auto uval = 0u; auto ival = 0; @@ -347,8 +406,11 @@ TEST(PersistentView, Sort) { TEST(RawView, Functionalities) { entt::DefaultRegistry registry; - auto e0 = registry.create(); - auto e1 = registry.create(); + const auto e0 = registry.create(); + const auto e1 = registry.create(); + + registry.assign(e1); + registry.assign(e1); ASSERT_NO_THROW(registry.raw().begin()++); ASSERT_NO_THROW(++registry.raw().begin()); @@ -393,8 +455,12 @@ TEST(RawView, Functionalities) { TEST(RawView, Empty) { entt::DefaultRegistry registry; - registry.create(); - registry.create(); + const auto e0 = registry.create(); + registry.assign(e0); + registry.assign(e0); + + const auto e1 = registry.create(); + registry.assign(e1); auto view = registry.raw(); diff --git a/test/mod/mod.cpp b/test/mod/mod.cpp index 3131e4e3d..0a4c47101 100644 --- a/test/mod/mod.cpp +++ b/test/mod/mod.cpp @@ -331,8 +331,12 @@ TEST(Mod, Duktape) { FAIL(); } - registry.create(Position{ 0., 0. }, Renderable{}); - registry.create(Position{ 0., 0. }); + const auto e0 = registry.create(); + registry.assign(e0, 0., 0.); + registry.assign(e0); + + const auto e1 = registry.create(); + registry.assign(e1, 0., 0.); const char *s1 = "" "Registry.entities(Types.POSITION, Types.RENDERABLE).forEach(function(entity) {"