From 7d8461bae414d24736c594200559687c5783b023 Mon Sep 17 00:00:00 2001
From: Michele Caini <michele.caini@gmail.com>
Date: Wed, 3 Jul 2024 19:15:22 +0200
Subject: [PATCH] test: non-regression test for storage iterator page size
 deduction

---
 test/entt/entity/storage.cpp | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/test/entt/entity/storage.cpp b/test/entt/entity/storage.cpp
index b93a7c163..d57c6689c 100644
--- a/test/entt/entity/storage.cpp
+++ b/test/entt/entity/storage.cpp
@@ -67,6 +67,12 @@ struct entt::component_traits<std::unordered_set<char>> {
     static constexpr auto page_size = 4u;
 };
 
+template<>
+struct entt::component_traits<int> {
+    static constexpr auto in_place_delete = false;
+    static constexpr auto page_size = 128u;
+};
+
 template<typename Type>
 struct Storage: testing::Test {
     static_assert(entt::component_traits<Type>::page_size != 0u, "Empty type not allowed");
@@ -533,16 +539,17 @@ TYPED_TEST(Storage, IteratorPageSizeAwareness) {
     using traits_type = entt::component_traits<value_type>;
     entt::storage<value_type> pool;
 
-    const value_type check{2};
+    static_assert(!std::is_same_v<value_type, int> || (traits_type::page_size != entt::component_traits<value_type *>::page_size), "Different page size required");
 
     for(unsigned int next{}; next < traits_type::page_size; ++next) {
         pool.emplace(entt::entity{next});
     }
 
-    pool.emplace(entt::entity{traits_type::page_size}, check);
+    pool.emplace(entt::entity{traits_type::page_size});
 
     // test the proper use of component traits by the storage iterator
-    ASSERT_EQ(*pool.begin(), check);
+    ASSERT_EQ(&pool.begin()[0], pool.raw()[1u]);
+    ASSERT_EQ(&pool.begin()[traits_type::page_size], pool.raw()[0u]);
 }
 
 TYPED_TEST(Storage, Getters) {