sparse set: added reverse iterators

This commit is contained in:
Michele Caini
2020-07-29 18:50:31 +02:00
parent 70a3d62c14
commit 75dd86e8ef
2 changed files with 74 additions and 8 deletions

View File

@@ -183,6 +183,50 @@ TEST(SparseSet, Iterator) {
ASSERT_EQ(*begin.operator->(), entt::entity{3});
}
TEST(SparseSet, ReverseIterator) {
using reverse_iterator = typename entt::sparse_set<entt::entity>::reverse_iterator;
entt::sparse_set<entt::entity> set;
set.emplace(entt::entity{3});
reverse_iterator end{set.rbegin()};
reverse_iterator begin{};
begin = set.rend();
std::swap(begin, end);
ASSERT_EQ(begin, set.rbegin());
ASSERT_EQ(end, set.rend());
ASSERT_NE(begin, end);
ASSERT_EQ(begin++, set.rbegin());
ASSERT_EQ(begin--, set.rend());
ASSERT_EQ(begin+1, set.rend());
ASSERT_EQ(end-1, set.rbegin());
ASSERT_EQ(++begin, set.rend());
ASSERT_EQ(--begin, set.rbegin());
ASSERT_EQ(begin += 1, set.rend());
ASSERT_EQ(begin -= 1, set.rbegin());
ASSERT_EQ(begin + (end - begin), set.rend());
ASSERT_EQ(begin - (begin - end), set.rend());
ASSERT_EQ(end - (end - begin), set.rbegin());
ASSERT_EQ(end + (begin - end), set.rbegin());
ASSERT_EQ(begin[0], *set.rbegin());
ASSERT_LT(begin, end);
ASSERT_LE(begin, set.rbegin());
ASSERT_GT(end, begin);
ASSERT_GE(end, set.rend());
ASSERT_EQ(*begin, entt::entity{3});
}
TEST(SparseSet, Find) {
entt::sparse_set<entt::entity> set;
set.emplace(entt::entity{3});