|
|
@@ -48,8 +48,6 @@ TEST(SparseSet, Functionalities) {
|
|
|
ASSERT_EQ(set.at(0u), entt::entity{42});
|
|
|
ASSERT_EQ(set.at(1u), static_cast<entt::entity>(entt::null));
|
|
|
ASSERT_EQ(set[0u], entt::entity{42});
|
|
|
-
|
|
|
- ASSERT_DEATH(set.get(entt::entity{0}), "");
|
|
|
ASSERT_EQ(set.get(entt::entity{42}), nullptr);
|
|
|
|
|
|
set.erase(entt::entity{42});
|
|
|
@@ -164,6 +162,13 @@ TEST(SparseSet, Index) {
|
|
|
set.erase(traits_type::construct(0, 0));
|
|
|
|
|
|
ASSERT_EQ(set.index(traits_type::construct(3, 3)), 0u);
|
|
|
+}
|
|
|
+
|
|
|
+TEST(SparseSetDeathTest, Index) {
|
|
|
+ using traits_type = entt::entt_traits<entt::entity>;
|
|
|
+
|
|
|
+ entt::sparse_set set{};
|
|
|
+
|
|
|
ASSERT_DEATH(static_cast<void>(set.index(traits_type::construct(3, 0))), "");
|
|
|
ASSERT_DEATH(static_cast<void>(set.index(entt::null)), "");
|
|
|
}
|
|
|
@@ -270,9 +275,6 @@ TEST(SparseSet, Emplace) {
|
|
|
ASSERT_NE(set.emplace(entities[1u]), set.end());
|
|
|
ASSERT_NE(set.emplace(entities[0u]), set.end());
|
|
|
|
|
|
- ASSERT_DEATH(set.emplace(traits_type::combine(3, 1)), "");
|
|
|
- ASSERT_DEATH(set.emplace(entities[1u]), "");
|
|
|
-
|
|
|
ASSERT_EQ(set.at(0u), entities[1u]);
|
|
|
ASSERT_EQ(set.at(1u), entities[0u]);
|
|
|
ASSERT_EQ(set.index(entities[0u]), 1u);
|
|
|
@@ -289,6 +291,13 @@ TEST(SparseSet, Emplace) {
|
|
|
ASSERT_EQ(set.index(entities[1u]), 0u);
|
|
|
}
|
|
|
|
|
|
+TEST(SparseSetDeathTest, Emplace) {
|
|
|
+ entt::sparse_set set{entt::deletion_policy::in_place};
|
|
|
+ set.emplace(entt::entity{42});
|
|
|
+
|
|
|
+ ASSERT_DEATH(set.emplace(entt::entity{42}), "");
|
|
|
+}
|
|
|
+
|
|
|
TEST(SparseSet, EmplaceOutOfBounds) {
|
|
|
entt::sparse_set set{entt::deletion_policy::in_place};
|
|
|
entt::entity entities[2u]{entt::entity{0}, entt::entity{ENTT_SPARSE_PAGE}};
|
|
|
@@ -353,11 +362,6 @@ TEST(SparseSet, Erase) {
|
|
|
ASSERT_EQ(set.policy(), entt::deletion_policy::swap_and_pop);
|
|
|
ASSERT_TRUE(set.empty());
|
|
|
|
|
|
- ASSERT_DEATH(set.erase(std::begin(entities), std::end(entities)), "");
|
|
|
- ASSERT_DEATH(set.erase(entities[1u]), "");
|
|
|
-
|
|
|
- ASSERT_TRUE(set.empty());
|
|
|
-
|
|
|
set.insert(std::begin(entities), std::end(entities));
|
|
|
set.erase(set.begin(), set.end());
|
|
|
|
|
|
@@ -377,7 +381,6 @@ TEST(SparseSet, Erase) {
|
|
|
|
|
|
set.erase(entities[2u]);
|
|
|
|
|
|
- ASSERT_DEATH(set.erase(entities[2u]), "");
|
|
|
ASSERT_TRUE(set.empty());
|
|
|
ASSERT_EQ(set.current(entities[2u]), traits_type::to_version(entt::tombstone));
|
|
|
|
|
|
@@ -388,8 +391,15 @@ TEST(SparseSet, Erase) {
|
|
|
ASSERT_FALSE(set.empty());
|
|
|
ASSERT_EQ(set.current(entities[2u]), traits_type::to_version(entities[2u]));
|
|
|
ASSERT_EQ(*set.begin(), entities[2u]);
|
|
|
+}
|
|
|
|
|
|
- ASSERT_DEATH(set.erase(traits_type::construct(9, 0)), "");
|
|
|
+TEST(SparseSetDeathTest, Erase) {
|
|
|
+ using traits_type = entt::entt_traits<entt::entity>;
|
|
|
+
|
|
|
+ entt::sparse_set set;
|
|
|
+ entt::entity entities[2u]{entt::entity{42}, traits_type::construct(9, 3)};
|
|
|
+
|
|
|
+ ASSERT_DEATH(set.erase(std::begin(entities), std::end(entities)), "");
|
|
|
ASSERT_DEATH(set.erase(entt::null), "");
|
|
|
}
|
|
|
|
|
|
@@ -403,12 +413,6 @@ TEST(SparseSet, StableErase) {
|
|
|
ASSERT_TRUE(set.empty());
|
|
|
ASSERT_EQ(set.size(), 0u);
|
|
|
|
|
|
- ASSERT_DEATH(set.erase(std::begin(entities), std::end(entities)), "");
|
|
|
- ASSERT_DEATH(set.erase(entities[1u]), "");
|
|
|
-
|
|
|
- ASSERT_TRUE(set.empty());
|
|
|
- ASSERT_EQ(set.size(), 0u);
|
|
|
-
|
|
|
set.emplace(entities[0u]);
|
|
|
set.emplace(entities[1u]);
|
|
|
set.emplace(entities[2u]);
|
|
|
@@ -441,7 +445,6 @@ TEST(SparseSet, StableErase) {
|
|
|
|
|
|
set.erase(entities[2u]);
|
|
|
|
|
|
- ASSERT_DEATH(set.erase(entities[2u]), "");
|
|
|
ASSERT_FALSE(set.empty());
|
|
|
ASSERT_EQ(set.size(), 3u);
|
|
|
ASSERT_EQ(set.current(entities[2u]), traits_type::to_version(entt::tombstone));
|
|
|
@@ -482,7 +485,6 @@ TEST(SparseSet, StableErase) {
|
|
|
|
|
|
set.erase(entities[2u]);
|
|
|
|
|
|
- ASSERT_DEATH(set.erase(entities[2u]), "");
|
|
|
ASSERT_NE(set.current(entities[0u]), traits_type::to_version(entt::tombstone));
|
|
|
ASSERT_NE(set.current(entities[1u]), traits_type::to_version(entt::tombstone));
|
|
|
ASSERT_EQ(set.current(entities[2u]), traits_type::to_version(entt::tombstone));
|
|
|
@@ -490,7 +492,6 @@ TEST(SparseSet, StableErase) {
|
|
|
set.erase(entities[0u]);
|
|
|
set.erase(entities[1u]);
|
|
|
|
|
|
- ASSERT_DEATH(set.erase(entities, entities + 2u), "");
|
|
|
ASSERT_EQ(set.size(), 3u);
|
|
|
ASSERT_EQ(set.current(entities[0u]), traits_type::to_version(entt::tombstone));
|
|
|
ASSERT_EQ(set.current(entities[1u]), traits_type::to_version(entt::tombstone));
|
|
|
@@ -514,8 +515,15 @@ TEST(SparseSet, StableErase) {
|
|
|
ASSERT_NE(set.current(entities[0u]), traits_type::to_version(entt::tombstone));
|
|
|
ASSERT_NE(set.current(entities[1u]), traits_type::to_version(entt::tombstone));
|
|
|
ASSERT_NE(set.current(entities[2u]), traits_type::to_version(entt::tombstone));
|
|
|
+}
|
|
|
+
|
|
|
+TEST(SparseSetDeathTest, StableErase) {
|
|
|
+ using traits_type = entt::entt_traits<entt::entity>;
|
|
|
+
|
|
|
+ entt::sparse_set set{entt::deletion_policy::in_place};
|
|
|
+ entt::entity entities[2u]{entt::entity{42}, traits_type::construct(9, 3)};
|
|
|
|
|
|
- ASSERT_DEATH(set.erase(traits_type::construct(9, 0)), "");
|
|
|
+ ASSERT_DEATH(set.erase(std::begin(entities), std::end(entities)), "");
|
|
|
ASSERT_DEATH(set.erase(entt::null), "");
|
|
|
}
|
|
|
|
|
|
@@ -759,9 +767,6 @@ TEST(SparseSet, SwapEntity) {
|
|
|
ASSERT_EQ(set.index(traits_type::construct(3, 5)), 0u);
|
|
|
ASSERT_EQ(set.index(traits_type::construct(42, 99)), 1u);
|
|
|
|
|
|
- ASSERT_DEATH(set.swap_elements(traits_type::construct(3, 5), traits_type::construct(42, 98)), "");
|
|
|
- ASSERT_DEATH(set.swap_elements(traits_type::construct(3, 6), traits_type::construct(42, 99)), "");
|
|
|
-
|
|
|
set.swap_elements(traits_type::construct(3, 5), traits_type::construct(42, 99));
|
|
|
|
|
|
ASSERT_EQ(set.index(traits_type::construct(3, 5)), 1u);
|
|
|
@@ -773,6 +778,13 @@ TEST(SparseSet, SwapEntity) {
|
|
|
ASSERT_EQ(set.index(traits_type::construct(42, 99)), 1u);
|
|
|
}
|
|
|
|
|
|
+TEST(SparseSetDeathTest, SwapEntity) {
|
|
|
+ entt::sparse_set set;
|
|
|
+
|
|
|
+ ASSERT_TRUE(set.empty());
|
|
|
+ ASSERT_DEATH(set.swap_elements(entt::entity{0}, entt::entity{1}), "");
|
|
|
+}
|
|
|
+
|
|
|
TEST(SparseSet, Clear) {
|
|
|
auto test = [](auto set) {
|
|
|
set.emplace(entt::entity{3});
|
|
|
@@ -1010,7 +1022,6 @@ TEST(SparseSet, SortRange) {
|
|
|
set.insert(std::begin(entities), std::end(entities));
|
|
|
set.erase(entities[0u]);
|
|
|
|
|
|
- ASSERT_DEATH(set.sort_n(0u, std::less{});, "");
|
|
|
ASSERT_EQ(set.size(), 5u);
|
|
|
|
|
|
set.sort(std::less{});
|
|
|
@@ -1047,6 +1058,17 @@ TEST(SparseSet, SortRange) {
|
|
|
ASSERT_EQ(begin, end);
|
|
|
}
|
|
|
|
|
|
+TEST(SparseSetDeathTest, SortRange) {
|
|
|
+ entt::sparse_set set{entt::deletion_policy::in_place};
|
|
|
+ entt::entity entity{42};
|
|
|
+
|
|
|
+ set.emplace(entity);
|
|
|
+ set.erase(entity);
|
|
|
+
|
|
|
+ ASSERT_DEATH(set.sort_n(0u, std::less{});, "");
|
|
|
+ ASSERT_DEATH(set.sort_n(3u, std::less{});, "");
|
|
|
+}
|
|
|
+
|
|
|
TEST(SparseSet, RespectDisjoint) {
|
|
|
entt::sparse_set lhs;
|
|
|
entt::sparse_set rhs;
|