|
@@ -7,14 +7,13 @@
|
|
|
|
|
|
|
|
TEST(SparseSetNoType, Functionalities) {
|
|
TEST(SparseSetNoType, Functionalities) {
|
|
|
entt::sparse_set<std::uint64_t> set;
|
|
entt::sparse_set<std::uint64_t> set;
|
|
|
- const auto &cset = set;
|
|
|
|
|
|
|
|
|
|
set.reserve(42);
|
|
set.reserve(42);
|
|
|
|
|
|
|
|
ASSERT_EQ(set.capacity(), 42);
|
|
ASSERT_EQ(set.capacity(), 42);
|
|
|
ASSERT_TRUE(set.empty());
|
|
ASSERT_TRUE(set.empty());
|
|
|
ASSERT_EQ(set.size(), 0u);
|
|
ASSERT_EQ(set.size(), 0u);
|
|
|
- ASSERT_EQ(cset.begin(), cset.end());
|
|
|
|
|
|
|
+ ASSERT_EQ(std::as_const(set).begin(), std::as_const(set).end());
|
|
|
ASSERT_EQ(set.begin(), set.end());
|
|
ASSERT_EQ(set.begin(), set.end());
|
|
|
ASSERT_FALSE(set.has(0));
|
|
ASSERT_FALSE(set.has(0));
|
|
|
ASSERT_FALSE(set.has(42));
|
|
ASSERT_FALSE(set.has(42));
|
|
@@ -25,7 +24,7 @@ TEST(SparseSetNoType, Functionalities) {
|
|
|
|
|
|
|
|
ASSERT_FALSE(set.empty());
|
|
ASSERT_FALSE(set.empty());
|
|
|
ASSERT_EQ(set.size(), 1u);
|
|
ASSERT_EQ(set.size(), 1u);
|
|
|
- ASSERT_NE(cset.begin(), cset.end());
|
|
|
|
|
|
|
+ ASSERT_NE(std::as_const(set).begin(), std::as_const(set).end());
|
|
|
ASSERT_NE(set.begin(), set.end());
|
|
ASSERT_NE(set.begin(), set.end());
|
|
|
ASSERT_FALSE(set.has(0));
|
|
ASSERT_FALSE(set.has(0));
|
|
|
ASSERT_TRUE(set.has(42));
|
|
ASSERT_TRUE(set.has(42));
|
|
@@ -36,7 +35,7 @@ TEST(SparseSetNoType, Functionalities) {
|
|
|
|
|
|
|
|
ASSERT_TRUE(set.empty());
|
|
ASSERT_TRUE(set.empty());
|
|
|
ASSERT_EQ(set.size(), 0u);
|
|
ASSERT_EQ(set.size(), 0u);
|
|
|
- ASSERT_EQ(cset.begin(), cset.end());
|
|
|
|
|
|
|
+ ASSERT_EQ(std::as_const(set).begin(), std::as_const(set).end());
|
|
|
ASSERT_EQ(set.begin(), set.end());
|
|
ASSERT_EQ(set.begin(), set.end());
|
|
|
ASSERT_FALSE(set.has(0));
|
|
ASSERT_FALSE(set.has(0));
|
|
|
ASSERT_FALSE(set.has(42));
|
|
ASSERT_FALSE(set.has(42));
|
|
@@ -49,7 +48,7 @@ TEST(SparseSetNoType, Functionalities) {
|
|
|
|
|
|
|
|
ASSERT_TRUE(set.empty());
|
|
ASSERT_TRUE(set.empty());
|
|
|
ASSERT_EQ(set.size(), 0u);
|
|
ASSERT_EQ(set.size(), 0u);
|
|
|
- ASSERT_EQ(cset.begin(), cset.end());
|
|
|
|
|
|
|
+ ASSERT_EQ(std::as_const(set).begin(), std::as_const(set).end());
|
|
|
ASSERT_EQ(set.begin(), set.end());
|
|
ASSERT_EQ(set.begin(), set.end());
|
|
|
ASSERT_FALSE(set.has(0));
|
|
ASSERT_FALSE(set.has(0));
|
|
|
ASSERT_FALSE(set.has(42));
|
|
ASSERT_FALSE(set.has(42));
|
|
@@ -143,7 +142,6 @@ TEST(SparseSetNoType, Data) {
|
|
|
TEST(SparseSetNoType, RespectDisjoint) {
|
|
TEST(SparseSetNoType, RespectDisjoint) {
|
|
|
entt::sparse_set<std::uint64_t> lhs;
|
|
entt::sparse_set<std::uint64_t> lhs;
|
|
|
entt::sparse_set<std::uint64_t> rhs;
|
|
entt::sparse_set<std::uint64_t> rhs;
|
|
|
- const auto &clhs = lhs;
|
|
|
|
|
|
|
|
|
|
lhs.construct(3);
|
|
lhs.construct(3);
|
|
|
lhs.construct(12);
|
|
lhs.construct(12);
|
|
@@ -155,15 +153,14 @@ TEST(SparseSetNoType, RespectDisjoint) {
|
|
|
|
|
|
|
|
lhs.respect(rhs);
|
|
lhs.respect(rhs);
|
|
|
|
|
|
|
|
- ASSERT_EQ(clhs.get(3), 0u);
|
|
|
|
|
- ASSERT_EQ(clhs.get(12), 1u);
|
|
|
|
|
- ASSERT_EQ(clhs.get(42), 2u);
|
|
|
|
|
|
|
+ ASSERT_EQ(std::as_const(lhs).get(3), 0u);
|
|
|
|
|
+ ASSERT_EQ(std::as_const(lhs).get(12), 1u);
|
|
|
|
|
+ ASSERT_EQ(std::as_const(lhs).get(42), 2u);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
TEST(SparseSetNoType, RespectOverlap) {
|
|
TEST(SparseSetNoType, RespectOverlap) {
|
|
|
entt::sparse_set<std::uint64_t> lhs;
|
|
entt::sparse_set<std::uint64_t> lhs;
|
|
|
entt::sparse_set<std::uint64_t> rhs;
|
|
entt::sparse_set<std::uint64_t> rhs;
|
|
|
- const auto &clhs = lhs;
|
|
|
|
|
|
|
|
|
|
lhs.construct(3);
|
|
lhs.construct(3);
|
|
|
lhs.construct(12);
|
|
lhs.construct(12);
|
|
@@ -177,9 +174,9 @@ TEST(SparseSetNoType, RespectOverlap) {
|
|
|
|
|
|
|
|
lhs.respect(rhs);
|
|
lhs.respect(rhs);
|
|
|
|
|
|
|
|
- ASSERT_EQ(clhs.get(3), 0u);
|
|
|
|
|
- ASSERT_EQ(clhs.get(12), 2u);
|
|
|
|
|
- ASSERT_EQ(clhs.get(42), 1u);
|
|
|
|
|
|
|
+ ASSERT_EQ(std::as_const(lhs).get(3), 0u);
|
|
|
|
|
+ ASSERT_EQ(std::as_const(lhs).get(12), 2u);
|
|
|
|
|
+ ASSERT_EQ(std::as_const(lhs).get(42), 1u);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
TEST(SparseSetNoType, RespectOrdered) {
|
|
TEST(SparseSetNoType, RespectOrdered) {
|
|
@@ -347,14 +344,13 @@ TEST(SparseSetNoType, Clone) {
|
|
|
|
|
|
|
|
TEST(SparseSetWithType, Functionalities) {
|
|
TEST(SparseSetWithType, Functionalities) {
|
|
|
entt::sparse_set<std::uint64_t, int> set;
|
|
entt::sparse_set<std::uint64_t, int> set;
|
|
|
- const auto &cset = set;
|
|
|
|
|
|
|
|
|
|
set.reserve(42);
|
|
set.reserve(42);
|
|
|
|
|
|
|
|
ASSERT_EQ(set.capacity(), 42);
|
|
ASSERT_EQ(set.capacity(), 42);
|
|
|
ASSERT_TRUE(set.empty());
|
|
ASSERT_TRUE(set.empty());
|
|
|
ASSERT_EQ(set.size(), 0u);
|
|
ASSERT_EQ(set.size(), 0u);
|
|
|
- ASSERT_EQ(cset.begin(), cset.end());
|
|
|
|
|
|
|
+ ASSERT_EQ(std::as_const(set).begin(), std::as_const(set).end());
|
|
|
ASSERT_EQ(set.begin(), set.end());
|
|
ASSERT_EQ(set.begin(), set.end());
|
|
|
ASSERT_FALSE(set.has(0));
|
|
ASSERT_FALSE(set.has(0));
|
|
|
ASSERT_FALSE(set.has(42));
|
|
ASSERT_FALSE(set.has(42));
|
|
@@ -363,7 +359,7 @@ TEST(SparseSetWithType, Functionalities) {
|
|
|
|
|
|
|
|
ASSERT_FALSE(set.empty());
|
|
ASSERT_FALSE(set.empty());
|
|
|
ASSERT_EQ(set.size(), 1u);
|
|
ASSERT_EQ(set.size(), 1u);
|
|
|
- ASSERT_NE(cset.begin(), cset.end());
|
|
|
|
|
|
|
+ ASSERT_NE(std::as_const(set).begin(), std::as_const(set).end());
|
|
|
ASSERT_NE(set.begin(), set.end());
|
|
ASSERT_NE(set.begin(), set.end());
|
|
|
ASSERT_FALSE(set.has(0));
|
|
ASSERT_FALSE(set.has(0));
|
|
|
ASSERT_TRUE(set.has(42));
|
|
ASSERT_TRUE(set.has(42));
|
|
@@ -376,7 +372,7 @@ TEST(SparseSetWithType, Functionalities) {
|
|
|
|
|
|
|
|
ASSERT_TRUE(set.empty());
|
|
ASSERT_TRUE(set.empty());
|
|
|
ASSERT_EQ(set.size(), 0u);
|
|
ASSERT_EQ(set.size(), 0u);
|
|
|
- ASSERT_EQ(cset.begin(), cset.end());
|
|
|
|
|
|
|
+ ASSERT_EQ(std::as_const(set).begin(), std::as_const(set).end());
|
|
|
ASSERT_EQ(set.begin(), set.end());
|
|
ASSERT_EQ(set.begin(), set.end());
|
|
|
ASSERT_FALSE(set.has(0));
|
|
ASSERT_FALSE(set.has(0));
|
|
|
ASSERT_FALSE(set.has(42));
|
|
ASSERT_FALSE(set.has(42));
|
|
@@ -391,7 +387,7 @@ TEST(SparseSetWithType, Functionalities) {
|
|
|
|
|
|
|
|
ASSERT_TRUE(set.empty());
|
|
ASSERT_TRUE(set.empty());
|
|
|
ASSERT_EQ(set.size(), 0u);
|
|
ASSERT_EQ(set.size(), 0u);
|
|
|
- ASSERT_EQ(cset.begin(), cset.end());
|
|
|
|
|
|
|
+ ASSERT_EQ(std::as_const(set).begin(), std::as_const(set).end());
|
|
|
ASSERT_EQ(set.begin(), set.end());
|
|
ASSERT_EQ(set.begin(), set.end());
|
|
|
ASSERT_FALSE(set.has(0));
|
|
ASSERT_FALSE(set.has(0));
|
|
|
ASSERT_FALSE(set.has(42));
|
|
ASSERT_FALSE(set.has(42));
|
|
@@ -404,12 +400,11 @@ TEST(SparseSetWithType, Functionalities) {
|
|
|
TEST(SparseSetWithType, FunctionalitiesEmptyType) {
|
|
TEST(SparseSetWithType, FunctionalitiesEmptyType) {
|
|
|
struct empty_type {};
|
|
struct empty_type {};
|
|
|
entt::sparse_set<std::uint64_t, empty_type> set;
|
|
entt::sparse_set<std::uint64_t, empty_type> set;
|
|
|
- const auto &cset = set;
|
|
|
|
|
|
|
|
|
|
ASSERT_EQ(&set.construct(42), &set.construct(99));
|
|
ASSERT_EQ(&set.construct(42), &set.construct(99));
|
|
|
ASSERT_EQ(&set.get(42), set.try_get(42));
|
|
ASSERT_EQ(&set.get(42), set.try_get(42));
|
|
|
ASSERT_EQ(&set.get(42), &set.get(99));
|
|
ASSERT_EQ(&set.get(42), &set.get(99));
|
|
|
- ASSERT_EQ(cset.try_get(42), cset.try_get(99));
|
|
|
|
|
|
|
+ ASSERT_EQ(std::as_const(set).try_get(42), std::as_const(set).try_get(99));
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
TEST(SparseSetWithType, AggregatesMustWork) {
|
|
TEST(SparseSetWithType, AggregatesMustWork) {
|
|
@@ -611,29 +606,27 @@ TEST(SparseSetWithType, ConstIteratorEmptyType) {
|
|
|
|
|
|
|
|
TEST(SparseSetWithType, Raw) {
|
|
TEST(SparseSetWithType, Raw) {
|
|
|
entt::sparse_set<std::uint64_t, int> set;
|
|
entt::sparse_set<std::uint64_t, int> set;
|
|
|
- const auto &cset = set;
|
|
|
|
|
|
|
|
|
|
set.construct(3, 3);
|
|
set.construct(3, 3);
|
|
|
set.construct(12, 6);
|
|
set.construct(12, 6);
|
|
|
set.construct(42, 9);
|
|
set.construct(42, 9);
|
|
|
|
|
|
|
|
ASSERT_EQ(set.get(3), 3);
|
|
ASSERT_EQ(set.get(3), 3);
|
|
|
- ASSERT_EQ(cset.get(12), 6);
|
|
|
|
|
|
|
+ ASSERT_EQ(std::as_const(set).get(12), 6);
|
|
|
ASSERT_EQ(set.get(42), 9);
|
|
ASSERT_EQ(set.get(42), 9);
|
|
|
|
|
|
|
|
ASSERT_EQ(*(set.raw() + 0u), 3);
|
|
ASSERT_EQ(*(set.raw() + 0u), 3);
|
|
|
- ASSERT_EQ(*(cset.raw() + 1u), 6);
|
|
|
|
|
|
|
+ ASSERT_EQ(*(std::as_const(set).raw() + 1u), 6);
|
|
|
ASSERT_EQ(*(set.raw() + 2u), 9);
|
|
ASSERT_EQ(*(set.raw() + 2u), 9);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
TEST(SparseSetWithType, RawEmptyType) {
|
|
TEST(SparseSetWithType, RawEmptyType) {
|
|
|
struct empty_type {};
|
|
struct empty_type {};
|
|
|
entt::sparse_set<std::uint64_t, empty_type> set;
|
|
entt::sparse_set<std::uint64_t, empty_type> set;
|
|
|
- const auto &cset = set;
|
|
|
|
|
|
|
|
|
|
set.construct(3);
|
|
set.construct(3);
|
|
|
|
|
|
|
|
- ASSERT_EQ(set.raw(), cset.raw());
|
|
|
|
|
|
|
+ ASSERT_EQ(set.raw(), std::as_const(set).raw());
|
|
|
ASSERT_EQ(set.try_get(3), set.raw());
|
|
ASSERT_EQ(set.try_get(3), set.raw());
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -748,21 +741,20 @@ TEST(SparseSetWithType, SortUnordered) {
|
|
|
TEST(SparseSetWithType, RespectDisjoint) {
|
|
TEST(SparseSetWithType, RespectDisjoint) {
|
|
|
entt::sparse_set<std::uint64_t, int> lhs;
|
|
entt::sparse_set<std::uint64_t, int> lhs;
|
|
|
entt::sparse_set<std::uint64_t, int> rhs;
|
|
entt::sparse_set<std::uint64_t, int> rhs;
|
|
|
- const auto &clhs = lhs;
|
|
|
|
|
|
|
|
|
|
lhs.construct(3, 3);
|
|
lhs.construct(3, 3);
|
|
|
lhs.construct(12, 6);
|
|
lhs.construct(12, 6);
|
|
|
lhs.construct(42, 9);
|
|
lhs.construct(42, 9);
|
|
|
|
|
|
|
|
- ASSERT_EQ(clhs.get(3), 3);
|
|
|
|
|
- ASSERT_EQ(clhs.get(12), 6);
|
|
|
|
|
- ASSERT_EQ(clhs.get(42), 9);
|
|
|
|
|
|
|
+ ASSERT_EQ(std::as_const(lhs).get(3), 3);
|
|
|
|
|
+ ASSERT_EQ(std::as_const(lhs).get(12), 6);
|
|
|
|
|
+ ASSERT_EQ(std::as_const(lhs).get(42), 9);
|
|
|
|
|
|
|
|
lhs.respect(rhs);
|
|
lhs.respect(rhs);
|
|
|
|
|
|
|
|
- ASSERT_EQ(*(clhs.raw() + 0u), 3);
|
|
|
|
|
- ASSERT_EQ(*(clhs.raw() + 1u), 6);
|
|
|
|
|
- ASSERT_EQ(*(clhs.raw() + 2u), 9);
|
|
|
|
|
|
|
+ ASSERT_EQ(*(std::as_const(lhs).raw() + 0u), 3);
|
|
|
|
|
+ ASSERT_EQ(*(std::as_const(lhs).raw() + 1u), 6);
|
|
|
|
|
+ ASSERT_EQ(*(std::as_const(lhs).raw() + 2u), 9);
|
|
|
|
|
|
|
|
auto begin = lhs.begin();
|
|
auto begin = lhs.begin();
|
|
|
auto end = lhs.end();
|
|
auto end = lhs.end();
|
|
@@ -776,23 +768,22 @@ TEST(SparseSetWithType, RespectDisjoint) {
|
|
|
TEST(SparseSetWithType, RespectOverlap) {
|
|
TEST(SparseSetWithType, RespectOverlap) {
|
|
|
entt::sparse_set<std::uint64_t, int> lhs;
|
|
entt::sparse_set<std::uint64_t, int> lhs;
|
|
|
entt::sparse_set<std::uint64_t, int> rhs;
|
|
entt::sparse_set<std::uint64_t, int> rhs;
|
|
|
- const auto &clhs = lhs;
|
|
|
|
|
|
|
|
|
|
lhs.construct(3, 3);
|
|
lhs.construct(3, 3);
|
|
|
lhs.construct(12, 6);
|
|
lhs.construct(12, 6);
|
|
|
lhs.construct(42, 9);
|
|
lhs.construct(42, 9);
|
|
|
rhs.construct(12, 6);
|
|
rhs.construct(12, 6);
|
|
|
|
|
|
|
|
- ASSERT_EQ(clhs.get(3), 3);
|
|
|
|
|
- ASSERT_EQ(clhs.get(12), 6);
|
|
|
|
|
- ASSERT_EQ(clhs.get(42), 9);
|
|
|
|
|
|
|
+ ASSERT_EQ(std::as_const(lhs).get(3), 3);
|
|
|
|
|
+ ASSERT_EQ(std::as_const(lhs).get(12), 6);
|
|
|
|
|
+ ASSERT_EQ(std::as_const(lhs).get(42), 9);
|
|
|
ASSERT_EQ(rhs.get(12), 6);
|
|
ASSERT_EQ(rhs.get(12), 6);
|
|
|
|
|
|
|
|
lhs.respect(rhs);
|
|
lhs.respect(rhs);
|
|
|
|
|
|
|
|
- ASSERT_EQ(*(clhs.raw() + 0u), 3);
|
|
|
|
|
- ASSERT_EQ(*(clhs.raw() + 1u), 9);
|
|
|
|
|
- ASSERT_EQ(*(clhs.raw() + 2u), 6);
|
|
|
|
|
|
|
+ ASSERT_EQ(*(std::as_const(lhs).raw() + 0u), 3);
|
|
|
|
|
+ ASSERT_EQ(*(std::as_const(lhs).raw() + 1u), 9);
|
|
|
|
|
+ ASSERT_EQ(*(std::as_const(lhs).raw() + 2u), 6);
|
|
|
|
|
|
|
|
auto begin = lhs.begin();
|
|
auto begin = lhs.begin();
|
|
|
auto end = lhs.end();
|
|
auto end = lhs.end();
|
|
@@ -945,7 +936,6 @@ TEST(SparseSetWithType, RespectOverlapEmptyType) {
|
|
|
struct empty_type {};
|
|
struct empty_type {};
|
|
|
entt::sparse_set<std::uint64_t, empty_type> lhs;
|
|
entt::sparse_set<std::uint64_t, empty_type> lhs;
|
|
|
entt::sparse_set<std::uint64_t, empty_type> rhs;
|
|
entt::sparse_set<std::uint64_t, empty_type> rhs;
|
|
|
- const auto &clhs = lhs;
|
|
|
|
|
|
|
|
|
|
lhs.construct(3);
|
|
lhs.construct(3);
|
|
|
lhs.construct(12);
|
|
lhs.construct(12);
|
|
@@ -959,9 +949,9 @@ TEST(SparseSetWithType, RespectOverlapEmptyType) {
|
|
|
|
|
|
|
|
lhs.respect(rhs);
|
|
lhs.respect(rhs);
|
|
|
|
|
|
|
|
- ASSERT_EQ(clhs.sparse_set<std::uint64_t>::get(3), 0u);
|
|
|
|
|
- ASSERT_EQ(clhs.sparse_set<std::uint64_t>::get(12), 2u);
|
|
|
|
|
- ASSERT_EQ(clhs.sparse_set<std::uint64_t>::get(42), 1u);
|
|
|
|
|
|
|
+ ASSERT_EQ(std::as_const(lhs).sparse_set<std::uint64_t>::get(3), 0u);
|
|
|
|
|
+ ASSERT_EQ(std::as_const(lhs).sparse_set<std::uint64_t>::get(12), 2u);
|
|
|
|
|
+ ASSERT_EQ(std::as_const(lhs).sparse_set<std::uint64_t>::get(42), 1u);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
TEST(SparseSetWithType, CanModifyDuringIteration) {
|
|
TEST(SparseSetWithType, CanModifyDuringIteration) {
|
|
@@ -1059,7 +1049,7 @@ TEST(SparseSetWithType, CloneMoveOnlyComponent) {
|
|
|
TEST(SparseSetWithType, ConstructorExceptionDoesNotAddToSet) {
|
|
TEST(SparseSetWithType, ConstructorExceptionDoesNotAddToSet) {
|
|
|
struct throwing_component {
|
|
struct throwing_component {
|
|
|
struct constructor_exception: std::exception {};
|
|
struct constructor_exception: std::exception {};
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
throwing_component() { throw constructor_exception{}; }
|
|
throwing_component() { throw constructor_exception{}; }
|
|
|
|
|
|
|
|
// necessary to avoid the short-circuit construct() logic for empty objects
|
|
// necessary to avoid the short-circuit construct() logic for empty objects
|