|
|
@@ -559,7 +559,7 @@ TEST(SparseSet, StableErase) {
|
|
|
set.erase(entity[1u]);
|
|
|
|
|
|
ASSERT_EQ(set.size(), 3u);
|
|
|
- ASSERT_EQ(set.free_list(), traits_type::entity_mask);
|
|
|
+ ASSERT_EQ(set.free_list(), 1u);
|
|
|
ASSERT_EQ(set.current(entity[0u]), traits_type::to_version(entt::tombstone));
|
|
|
ASSERT_EQ(set.current(entity[1u]), traits_type::to_version(entt::tombstone));
|
|
|
ASSERT_EQ(set.current(entity[2u]), traits_type::to_version(entt::tombstone));
|
|
|
@@ -705,17 +705,20 @@ TEST(SparseSet, Remove) {
|
|
|
entt::entity entity[3u]{entt::entity{3}, entt::entity{42}, traits_type::construct(9, 3)};
|
|
|
|
|
|
ASSERT_EQ(set.policy(), entt::deletion_policy::swap_and_pop);
|
|
|
+ ASSERT_EQ(set.free_list(), traits_type::entity_mask);
|
|
|
ASSERT_TRUE(set.empty());
|
|
|
|
|
|
ASSERT_EQ(set.remove(std::begin(entity), std::end(entity)), 0u);
|
|
|
ASSERT_FALSE(set.remove(entity[1u]));
|
|
|
|
|
|
ASSERT_TRUE(set.empty());
|
|
|
+ ASSERT_EQ(set.free_list(), traits_type::entity_mask);
|
|
|
|
|
|
set.push(std::begin(entity), std::end(entity));
|
|
|
|
|
|
ASSERT_EQ(set.remove(set.begin(), set.end()), 3u);
|
|
|
ASSERT_TRUE(set.empty());
|
|
|
+ ASSERT_EQ(set.free_list(), traits_type::entity_mask);
|
|
|
ASSERT_EQ(set.current(entity[0u]), traits_type::to_version(entt::tombstone));
|
|
|
ASSERT_EQ(set.current(entity[1u]), traits_type::to_version(entt::tombstone));
|
|
|
ASSERT_EQ(set.current(entity[2u]), traits_type::to_version(entt::tombstone));
|
|
|
@@ -724,6 +727,7 @@ TEST(SparseSet, Remove) {
|
|
|
|
|
|
ASSERT_EQ(set.remove(entity, entity + 2u), 2u);
|
|
|
ASSERT_FALSE(set.empty());
|
|
|
+ ASSERT_EQ(set.free_list(), traits_type::entity_mask);
|
|
|
ASSERT_EQ(set.current(entity[0u]), traits_type::to_version(entt::tombstone));
|
|
|
ASSERT_EQ(set.current(entity[1u]), traits_type::to_version(entt::tombstone));
|
|
|
ASSERT_EQ(set.current(entity[2u]), traits_type::to_version(entity[2u]));
|
|
|
@@ -741,6 +745,7 @@ TEST(SparseSet, Remove) {
|
|
|
ASSERT_EQ(set.current(entity[1u]), traits_type::to_version(entt::tombstone));
|
|
|
ASSERT_EQ(set.current(entity[2u]), traits_type::to_version(entt::tombstone));
|
|
|
ASSERT_TRUE(set.empty());
|
|
|
+ ASSERT_EQ(set.free_list(), traits_type::entity_mask);
|
|
|
|
|
|
set.push(std::begin(entity), std::end(entity));
|
|
|
std::swap(entity[1u], entity[2u]);
|
|
|
@@ -748,6 +753,7 @@ TEST(SparseSet, Remove) {
|
|
|
ASSERT_EQ(set.remove(entity, entity + 2u), 2u);
|
|
|
ASSERT_EQ(set.current(entity[2u]), traits_type::to_version(entity[2u]));
|
|
|
ASSERT_FALSE(set.empty());
|
|
|
+ ASSERT_EQ(set.free_list(), traits_type::entity_mask);
|
|
|
ASSERT_EQ(*set.begin(), entity[2u]);
|
|
|
|
|
|
ASSERT_FALSE(set.remove(traits_type::construct(9, 0)));
|
|
|
@@ -776,6 +782,7 @@ TEST(SparseSet, StableRemove) {
|
|
|
entt::entity entity[3u]{entt::entity{3}, entt::entity{42}, traits_type::construct(9, 3)};
|
|
|
|
|
|
ASSERT_EQ(set.policy(), entt::deletion_policy::in_place);
|
|
|
+ ASSERT_EQ(set.free_list(), traits_type::entity_mask);
|
|
|
ASSERT_TRUE(set.empty());
|
|
|
ASSERT_EQ(set.size(), 0u);
|
|
|
|
|
|
@@ -784,6 +791,7 @@ TEST(SparseSet, StableRemove) {
|
|
|
|
|
|
ASSERT_TRUE(set.empty());
|
|
|
ASSERT_EQ(set.size(), 0u);
|
|
|
+ ASSERT_EQ(set.free_list(), traits_type::entity_mask);
|
|
|
|
|
|
set.push(entity[0u]);
|
|
|
set.push(entity[1u]);
|
|
|
@@ -794,6 +802,7 @@ TEST(SparseSet, StableRemove) {
|
|
|
|
|
|
ASSERT_FALSE(set.empty());
|
|
|
ASSERT_EQ(set.size(), 3u);
|
|
|
+ ASSERT_EQ(set.free_list(), 0u);
|
|
|
ASSERT_EQ(set.current(entity[0u]), traits_type::to_version(entt::tombstone));
|
|
|
ASSERT_EQ(set.current(entity[1u]), traits_type::to_version(entt::tombstone));
|
|
|
ASSERT_EQ(set.current(entity[2u]), traits_type::to_version(entt::tombstone));
|
|
|
@@ -810,6 +819,7 @@ TEST(SparseSet, StableRemove) {
|
|
|
|
|
|
ASSERT_FALSE(set.empty());
|
|
|
ASSERT_EQ(set.size(), 3u);
|
|
|
+ ASSERT_EQ(set.free_list(), 1u);
|
|
|
ASSERT_EQ(set.current(entity[0u]), traits_type::to_version(entt::tombstone));
|
|
|
ASSERT_EQ(set.current(entity[1u]), traits_type::to_version(entt::tombstone));
|
|
|
ASSERT_EQ(set.current(entity[2u]), traits_type::to_version(entity[2u]));
|
|
|
@@ -822,6 +832,7 @@ TEST(SparseSet, StableRemove) {
|
|
|
|
|
|
ASSERT_FALSE(set.empty());
|
|
|
ASSERT_EQ(set.size(), 3u);
|
|
|
+ ASSERT_EQ(set.free_list(), 2u);
|
|
|
ASSERT_EQ(set.current(entity[2u]), traits_type::to_version(entt::tombstone));
|
|
|
|
|
|
set.push(entity[0u]);
|
|
|
@@ -835,6 +846,7 @@ TEST(SparseSet, StableRemove) {
|
|
|
|
|
|
ASSERT_FALSE(set.empty());
|
|
|
ASSERT_EQ(set.size(), 3u);
|
|
|
+ ASSERT_EQ(set.free_list(), 0u);
|
|
|
ASSERT_EQ(set.current(entity[2u]), traits_type::to_version(entity[2u]));
|
|
|
ASSERT_TRUE(set.at(0u) == entt::tombstone);
|
|
|
ASSERT_EQ(set.at(1u), entity[2u]);
|
|
|
@@ -845,6 +857,7 @@ TEST(SparseSet, StableRemove) {
|
|
|
|
|
|
ASSERT_FALSE(set.empty());
|
|
|
ASSERT_EQ(set.size(), 1u);
|
|
|
+ ASSERT_EQ(set.free_list(), traits_type::entity_mask);
|
|
|
ASSERT_EQ(set.current(entity[0u]), traits_type::to_version(entt::tombstone));
|
|
|
ASSERT_EQ(set.current(entity[1u]), traits_type::to_version(entt::tombstone));
|
|
|
ASSERT_EQ(set.current(entity[2u]), traits_type::to_version(entity[2u]));
|
|
|
@@ -854,6 +867,7 @@ TEST(SparseSet, StableRemove) {
|
|
|
set.clear();
|
|
|
|
|
|
ASSERT_EQ(set.size(), 0u);
|
|
|
+ ASSERT_EQ(set.free_list(), traits_type::entity_mask);
|
|
|
ASSERT_EQ(set.current(entity[2u]), traits_type::to_version(entt::tombstone));
|
|
|
|
|
|
set.push(entity[0u]);
|
|
|
@@ -872,6 +886,7 @@ TEST(SparseSet, StableRemove) {
|
|
|
ASSERT_EQ(set.remove(entity, entity + 2u), 0u);
|
|
|
|
|
|
ASSERT_EQ(set.size(), 3u);
|
|
|
+ ASSERT_EQ(set.free_list(), 1u);
|
|
|
ASSERT_EQ(set.current(entity[0u]), traits_type::to_version(entt::tombstone));
|
|
|
ASSERT_EQ(set.current(entity[1u]), traits_type::to_version(entt::tombstone));
|
|
|
ASSERT_EQ(set.current(entity[2u]), traits_type::to_version(entt::tombstone));
|
|
|
@@ -886,6 +901,7 @@ TEST(SparseSet, StableRemove) {
|
|
|
set.push(entt::entity{0});
|
|
|
|
|
|
ASSERT_EQ(set.size(), 4u);
|
|
|
+ ASSERT_EQ(set.free_list(), traits_type::entity_mask);
|
|
|
ASSERT_EQ(*set.begin(), entt::entity{0});
|
|
|
ASSERT_EQ(set.at(0u), entity[1u]);
|
|
|
ASSERT_EQ(set.at(1u), entity[0u]);
|
|
|
@@ -920,17 +936,20 @@ TEST(SparseSet, SwapOnlyRemove) {
|
|
|
entt::entity entity[3u]{entt::entity{3}, entt::entity{42}, traits_type::construct(9, 3)};
|
|
|
|
|
|
ASSERT_EQ(set.policy(), entt::deletion_policy::swap_only);
|
|
|
+ ASSERT_EQ(set.free_list(), 0u);
|
|
|
ASSERT_TRUE(set.empty());
|
|
|
|
|
|
ASSERT_EQ(set.remove(std::begin(entity), std::end(entity)), 0u);
|
|
|
ASSERT_FALSE(set.remove(entity[1u]));
|
|
|
|
|
|
ASSERT_TRUE(set.empty());
|
|
|
+ ASSERT_EQ(set.free_list(), 0u);
|
|
|
|
|
|
set.push(std::begin(entity), std::end(entity));
|
|
|
|
|
|
ASSERT_EQ(set.remove(set.begin(), set.end()), 3u);
|
|
|
ASSERT_FALSE(set.empty());
|
|
|
+ ASSERT_EQ(set.free_list(), 0u);
|
|
|
|
|
|
entity[0u] = traits_type::next(entity[0u]);
|
|
|
entity[1u] = traits_type::next(entity[1u]);
|
|
|
@@ -944,6 +963,7 @@ TEST(SparseSet, SwapOnlyRemove) {
|
|
|
|
|
|
ASSERT_EQ(set.remove(entity, entity + 2u), 2u);
|
|
|
ASSERT_FALSE(set.empty());
|
|
|
+ ASSERT_EQ(set.free_list(), 1u);
|
|
|
|
|
|
entity[0u] = traits_type::next(entity[0u]);
|
|
|
entity[1u] = traits_type::next(entity[1u]);
|
|
|
@@ -961,6 +981,7 @@ TEST(SparseSet, SwapOnlyRemove) {
|
|
|
ASSERT_TRUE(set.remove(entity[2u]));
|
|
|
ASSERT_FALSE(set.remove(entity[2u]));
|
|
|
ASSERT_FALSE(set.empty());
|
|
|
+ ASSERT_EQ(set.free_list(), 0u);
|
|
|
ASSERT_EQ(set.current(entity[2u]), traits_type::to_version(traits_type::next(entity[2u])));
|
|
|
|
|
|
set.push(entity, entity + 2u);
|
|
|
@@ -975,6 +996,7 @@ TEST(SparseSet, SwapOnlyRemove) {
|
|
|
ASSERT_EQ(set.current(entity[1u]), traits_type::to_version(entity[1u]));
|
|
|
ASSERT_EQ(set.current(entity[2u]), traits_type::to_version(entity[2u]));
|
|
|
ASSERT_FALSE(set.empty());
|
|
|
+ ASSERT_EQ(set.free_list(), 0u);
|
|
|
|
|
|
set.push(std::begin(entity), std::end(entity));
|
|
|
std::swap(entity[1u], entity[2u]);
|
|
|
@@ -986,6 +1008,7 @@ TEST(SparseSet, SwapOnlyRemove) {
|
|
|
|
|
|
ASSERT_EQ(set.current(entity[2u]), traits_type::to_version(entity[2u]));
|
|
|
ASSERT_FALSE(set.empty());
|
|
|
+ ASSERT_EQ(set.free_list(), 1u);
|
|
|
ASSERT_EQ(*set.begin(), entity[0u]);
|
|
|
|
|
|
ASSERT_FALSE(set.remove(traits_type::construct(9, 0)));
|