sparse_set/registry: avoids UB with sparse_set::clear and component-less registry::clear

This commit is contained in:
Michele Caini
2021-02-03 16:18:25 +01:00
parent 1377b51341
commit e5fa67850b
3 changed files with 19 additions and 9 deletions

View File

@@ -152,7 +152,7 @@ TEST(SparseSet, Remove) {
ASSERT_TRUE(set.empty());
set.insert(std::begin(entities), std::end(entities));
set.remove(set.rbegin(), set.rend());
set.remove(set.begin(), set.end());
ASSERT_TRUE(set.empty());
@@ -171,6 +171,20 @@ TEST(SparseSet, Remove) {
ASSERT_EQ(*set.begin(), entt::entity{42});
}
TEST(SparseSet, Clear) {
entt::sparse_set set;
set.emplace(entt::entity{3});
set.emplace(entt::entity{42});
set.emplace(entt::entity{9});
ASSERT_FALSE(set.empty());
set.clear();
ASSERT_TRUE(set.empty());
}
TEST(SparseSet, Iterator) {
using iterator = typename entt::sparse_set::iterator;