test: minor changes

This commit is contained in:
Michele Caini
2023-11-07 08:58:40 +01:00
parent ee7e025680
commit 76a6a22527

View File

@@ -2098,7 +2098,7 @@ TEST(Registry, Storage) {
entt::registry registry;
const auto entity = registry.create();
auto &storage = registry.storage<int>("int"_hs);
auto &storage = registry.storage<int>("other"_hs);
storage.emplace(entity);
for(auto [id, pool]: registry.storage()) {
@@ -2107,8 +2107,18 @@ TEST(Registry, Storage) {
ASSERT_TRUE(pool.contains(entity));
ASSERT_EQ(std::addressof(storage), std::addressof(pool));
ASSERT_EQ(id, "int"_hs);
ASSERT_EQ(id, "other"_hs);
}
}
TEST(Registry, ConstStorage) {
using namespace entt::literals;
entt::registry registry;
const auto entity = registry.create();
auto &storage = registry.storage<int>("other"_hs);
storage.emplace(entity);
for(auto &&curr: std::as_const(registry).storage()) {
testing::StaticAssertTypeEq<decltype(curr.second), const entt::sparse_set &>();
@@ -2116,7 +2126,7 @@ TEST(Registry, Storage) {
ASSERT_TRUE(curr.second.contains(entity));
ASSERT_EQ(std::addressof(storage), std::addressof(curr.second));
ASSERT_EQ(curr.first, "int"_hs);
ASSERT_EQ(curr.first, "other"_hs);
}
}
@@ -2125,54 +2135,93 @@ TEST(Registry, RegistryStorageIterator) {
const auto entity = registry.create();
registry.emplace<int>(entity);
auto test = [entity](auto iterable) {
auto end{iterable.begin()};
decltype(end) begin{};
begin = iterable.end();
std::swap(begin, end);
auto iterable = registry.storage();
ASSERT_EQ(begin, iterable.cbegin());
ASSERT_EQ(end, iterable.cend());
ASSERT_NE(begin, end);
auto end{iterable.begin()};
decltype(end) begin{};
begin = iterable.end();
std::swap(begin, end);
ASSERT_EQ(begin++, iterable.begin());
ASSERT_EQ(begin--, iterable.end());
ASSERT_EQ(begin, iterable.cbegin());
ASSERT_EQ(end, iterable.cend());
ASSERT_NE(begin, end);
ASSERT_EQ(begin + 1, iterable.end());
ASSERT_EQ(end - 1, iterable.begin());
ASSERT_EQ(begin++, iterable.begin());
ASSERT_EQ(begin--, iterable.end());
ASSERT_EQ(++begin, iterable.end());
ASSERT_EQ(--begin, iterable.begin());
ASSERT_EQ(begin + 1, iterable.end());
ASSERT_EQ(end - 1, iterable.begin());
ASSERT_EQ(begin += 1, iterable.end());
ASSERT_EQ(begin -= 1, iterable.begin());
ASSERT_EQ(++begin, iterable.end());
ASSERT_EQ(--begin, iterable.begin());
ASSERT_EQ(begin + (end - begin), iterable.end());
ASSERT_EQ(begin - (begin - end), iterable.end());
ASSERT_EQ(begin += 1, iterable.end());
ASSERT_EQ(begin -= 1, iterable.begin());
ASSERT_EQ(end - (end - begin), iterable.begin());
ASSERT_EQ(end + (begin - end), iterable.begin());
ASSERT_EQ(begin + (end - begin), iterable.end());
ASSERT_EQ(begin - (begin - end), iterable.end());
ASSERT_EQ(begin[0u].first, iterable.begin()->first);
ASSERT_EQ(std::addressof(begin[0u].second), std::addressof((*iterable.begin()).second));
ASSERT_EQ(end - (end - begin), iterable.begin());
ASSERT_EQ(end + (begin - end), iterable.begin());
ASSERT_LT(begin, end);
ASSERT_LE(begin, iterable.begin());
ASSERT_EQ(begin[0u].first, iterable.begin()->first);
ASSERT_EQ(std::addressof(begin[0u].second), std::addressof((*iterable.begin()).second));
ASSERT_GT(end, begin);
ASSERT_GE(end, iterable.end());
ASSERT_LT(begin, end);
ASSERT_LE(begin, iterable.begin());
ASSERT_EQ(begin[0u].first, entt::type_id<int>().hash());
ASSERT_TRUE(begin[0u].second.contains(entity));
};
ASSERT_GT(end, begin);
ASSERT_GE(end, iterable.end());
test(registry.storage());
test(std::as_const(registry).storage());
ASSERT_EQ(begin[0u].first, entt::type_id<int>().hash());
ASSERT_TRUE(begin[0u].second.contains(entity));
}
decltype(std::as_const(registry).storage().begin()) cit = registry.storage().begin();
TEST(Registry, RegistryConstStorageIterator) {
entt::registry registry;
const auto entity = registry.create();
registry.emplace<int>(entity);
ASSERT_EQ(cit, registry.storage().begin());
ASSERT_NE(cit, std::as_const(registry).storage().end());
auto iterable = std::as_const(registry).storage();
auto end{iterable.begin()};
decltype(end) begin{};
begin = iterable.end();
std::swap(begin, end);
ASSERT_EQ(begin, iterable.cbegin());
ASSERT_EQ(end, iterable.cend());
ASSERT_NE(begin, end);
ASSERT_EQ(begin++, iterable.begin());
ASSERT_EQ(begin--, iterable.end());
ASSERT_EQ(begin + 1, iterable.end());
ASSERT_EQ(end - 1, iterable.begin());
ASSERT_EQ(++begin, iterable.end());
ASSERT_EQ(--begin, iterable.begin());
ASSERT_EQ(begin += 1, iterable.end());
ASSERT_EQ(begin -= 1, iterable.begin());
ASSERT_EQ(begin + (end - begin), iterable.end());
ASSERT_EQ(begin - (begin - end), iterable.end());
ASSERT_EQ(end - (end - begin), iterable.begin());
ASSERT_EQ(end + (begin - end), iterable.begin());
ASSERT_EQ(begin[0u].first, iterable.begin()->first);
ASSERT_EQ(std::addressof(begin[0u].second), std::addressof((*iterable.begin()).second));
ASSERT_LT(begin, end);
ASSERT_LE(begin, iterable.begin());
ASSERT_GT(end, begin);
ASSERT_GE(end, iterable.end());
ASSERT_EQ(begin[0u].first, entt::type_id<int>().hash());
ASSERT_TRUE(begin[0u].second.contains(entity));
}
TEST(Registry, RegistryStorageIteratorConversion) {