|
@@ -418,6 +418,12 @@ TEST(SparseSet, ArrangOrdered) {
|
|
|
|
|
|
|
|
set.arrange(set.begin(), set.end(), [](auto...) { FAIL(); }, std::less{});
|
|
set.arrange(set.begin(), set.end(), [](auto...) { FAIL(); }, std::less{});
|
|
|
|
|
|
|
|
|
|
+ ASSERT_EQ(set.index(entt::entity{42}), 0u);
|
|
|
|
|
+ ASSERT_EQ(set.index(entt::entity{12}), 1u);
|
|
|
|
|
+ ASSERT_EQ(set.index(entt::entity{9}), 2u);
|
|
|
|
|
+ ASSERT_EQ(set.index(entt::entity{7}), 3u);
|
|
|
|
|
+ ASSERT_EQ(set.index(entt::entity{3}), 4u);
|
|
|
|
|
+
|
|
|
ASSERT_EQ(*(set.data() + 0u), entt::entity{42});
|
|
ASSERT_EQ(*(set.data() + 0u), entt::entity{42});
|
|
|
ASSERT_EQ(*(set.data() + 1u), entt::entity{12});
|
|
ASSERT_EQ(*(set.data() + 1u), entt::entity{12});
|
|
|
ASSERT_EQ(*(set.data() + 2u), entt::entity{9});
|
|
ASSERT_EQ(*(set.data() + 2u), entt::entity{9});
|
|
@@ -436,6 +442,12 @@ TEST(SparseSet, ArrangeReverse) {
|
|
|
std::swap(entities[set.index(lhs)], entities[set.index(rhs)]);
|
|
std::swap(entities[set.index(lhs)], entities[set.index(rhs)]);
|
|
|
}, std::less{});
|
|
}, std::less{});
|
|
|
|
|
|
|
|
|
|
+ ASSERT_EQ(set.index(entt::entity{42}), 0u);
|
|
|
|
|
+ ASSERT_EQ(set.index(entt::entity{12}), 1u);
|
|
|
|
|
+ ASSERT_EQ(set.index(entt::entity{9}), 2u);
|
|
|
|
|
+ ASSERT_EQ(set.index(entt::entity{7}), 3u);
|
|
|
|
|
+ ASSERT_EQ(set.index(entt::entity{3}), 4u);
|
|
|
|
|
+
|
|
|
ASSERT_EQ(*(set.data() + 0u), entt::entity{42});
|
|
ASSERT_EQ(*(set.data() + 0u), entt::entity{42});
|
|
|
ASSERT_EQ(*(set.data() + 1u), entt::entity{12});
|
|
ASSERT_EQ(*(set.data() + 1u), entt::entity{12});
|
|
|
ASSERT_EQ(*(set.data() + 2u), entt::entity{9});
|
|
ASSERT_EQ(*(set.data() + 2u), entt::entity{9});
|
|
@@ -454,6 +466,12 @@ TEST(SparseSet, ArrangeUnordered) {
|
|
|
std::swap(entities[set.index(lhs)], entities[set.index(rhs)]);
|
|
std::swap(entities[set.index(lhs)], entities[set.index(rhs)]);
|
|
|
}, std::less{});
|
|
}, std::less{});
|
|
|
|
|
|
|
|
|
|
+ ASSERT_EQ(set.index(entt::entity{42}), 0u);
|
|
|
|
|
+ ASSERT_EQ(set.index(entt::entity{12}), 1u);
|
|
|
|
|
+ ASSERT_EQ(set.index(entt::entity{9}), 2u);
|
|
|
|
|
+ ASSERT_EQ(set.index(entt::entity{7}), 3u);
|
|
|
|
|
+ ASSERT_EQ(set.index(entt::entity{3}), 4u);
|
|
|
|
|
+
|
|
|
ASSERT_EQ(*(set.data() + 0u), entt::entity{42});
|
|
ASSERT_EQ(*(set.data() + 0u), entt::entity{42});
|
|
|
ASSERT_EQ(*(set.data() + 1u), entt::entity{12});
|
|
ASSERT_EQ(*(set.data() + 1u), entt::entity{12});
|
|
|
ASSERT_EQ(*(set.data() + 2u), entt::entity{9});
|
|
ASSERT_EQ(*(set.data() + 2u), entt::entity{9});
|
|
@@ -502,6 +520,12 @@ TEST(SparseSet, ArrangeRange) {
|
|
|
std::swap(entities[set.index(lhs)], entities[set.index(rhs)]);
|
|
std::swap(entities[set.index(lhs)], entities[set.index(rhs)]);
|
|
|
}, std::less{});
|
|
}, std::less{});
|
|
|
|
|
|
|
|
|
|
+ ASSERT_EQ(set.index(entt::entity{9}), 0u);
|
|
|
|
|
+ ASSERT_EQ(set.index(entt::entity{12}), 1u);
|
|
|
|
|
+ ASSERT_EQ(set.index(entt::entity{7}), 2u);
|
|
|
|
|
+ ASSERT_EQ(set.index(entt::entity{3}), 3u);
|
|
|
|
|
+ ASSERT_EQ(set.index(entt::entity{42}), 4u);
|
|
|
|
|
+
|
|
|
ASSERT_EQ(*(set.data() + 0u), entt::entity{9});
|
|
ASSERT_EQ(*(set.data() + 0u), entt::entity{9});
|
|
|
ASSERT_EQ(*(set.data() + 1u), entt::entity{12});
|
|
ASSERT_EQ(*(set.data() + 1u), entt::entity{12});
|
|
|
ASSERT_EQ(*(set.data() + 2u), entt::entity{7});
|
|
ASSERT_EQ(*(set.data() + 2u), entt::entity{7});
|
|
@@ -509,6 +533,28 @@ TEST(SparseSet, ArrangeRange) {
|
|
|
ASSERT_EQ(*(set.data() + 4u), entt::entity{42});
|
|
ASSERT_EQ(*(set.data() + 4u), entt::entity{42});
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+TEST(SparseSet, ArrangeCornerCase) {
|
|
|
|
|
+ entt::sparse_set<entt::entity> set;
|
|
|
|
|
+ entt::entity entities[5]{entt::entity{0}, entt::entity{1}, entt::entity{4}, entt::entity{3}, entt::entity{2}};
|
|
|
|
|
+ set.batch(std::begin(entities), std::end(entities));
|
|
|
|
|
+
|
|
|
|
|
+ set.arrange(++set.begin(), set.end(), [&set, &entities](const auto lhs, const auto rhs) {
|
|
|
|
|
+ std::swap(entities[set.index(lhs)], entities[set.index(rhs)]);
|
|
|
|
|
+ }, std::less{});
|
|
|
|
|
+
|
|
|
|
|
+ ASSERT_EQ(set.index(entt::entity{4}), 0u);
|
|
|
|
|
+ ASSERT_EQ(set.index(entt::entity{3}), 1u);
|
|
|
|
|
+ ASSERT_EQ(set.index(entt::entity{1}), 2u);
|
|
|
|
|
+ ASSERT_EQ(set.index(entt::entity{0}), 3u);
|
|
|
|
|
+ ASSERT_EQ(set.index(entt::entity{2}), 4u);
|
|
|
|
|
+
|
|
|
|
|
+ ASSERT_EQ(*(set.data() + 0u), entt::entity{4});
|
|
|
|
|
+ ASSERT_EQ(*(set.data() + 1u), entt::entity{3});
|
|
|
|
|
+ ASSERT_EQ(*(set.data() + 2u), entt::entity{1});
|
|
|
|
|
+ ASSERT_EQ(*(set.data() + 3u), entt::entity{0});
|
|
|
|
|
+ ASSERT_EQ(*(set.data() + 4u), entt::entity{2});
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
TEST(SparseSet, RespectDisjoint) {
|
|
TEST(SparseSet, RespectDisjoint) {
|
|
|
entt::sparse_set<entt::entity> lhs;
|
|
entt::sparse_set<entt::entity> lhs;
|
|
|
entt::sparse_set<entt::entity> rhs;
|
|
entt::sparse_set<entt::entity> rhs;
|