Pārlūkot izejas kodu

test: rework things a little

Michele Caini 1 gadu atpakaļ
vecāks
revīzija
dd70a5833a
1 mainītis faili ar 100 papildinājumiem un 52 dzēšanām
  1. 100 52
      test/entt/entity/sparse_set.cpp

+ 100 - 52
test/entt/entity/sparse_set.cpp

@@ -296,83 +296,131 @@ TYPED_TEST(SparseSet, ShrinkToFit) {
         ASSERT_EQ(set.capacity(), 0u);
         ASSERT_EQ(set.extent(), 0u);
 
-        set.reserve(8u);
+        switch(policy) {
+        case entt::deletion_policy::swap_and_pop: {
+            set.push(entity_type{traits_type::page_size - 1u});
+            set.push(entity_type{traits_type::page_size});
 
-        set.push(entity_type{traits_type::page_size - 1u});
-        set.push(entity_type{traits_type::page_size});
-        set.erase(entity_type{traits_type::page_size - 1u});
+            set.erase(entity_type{traits_type::page_size - 1u});
 
-        ASSERT_EQ(set.capacity(), 8u);
-        ASSERT_EQ(set.extent(), 2 * traits_type::page_size);
+            ASSERT_GE(set.capacity(), 2u);
+            ASSERT_EQ(set.extent(), 2 * traits_type::page_size);
 
-        ASSERT_FALSE(set.contains(entity_type{traits_type::page_size - 1u}));
-        ASSERT_TRUE(set.contains(entity_type{traits_type::page_size}));
+            set.shrink_to_fit();
 
-        set.shrink_to_fit();
+            ASSERT_EQ(set.capacity(), 1u);
+            ASSERT_EQ(set.extent(), 2 * traits_type::page_size);
 
-        switch(policy) {
-        case entt::deletion_policy::swap_only:
-        case entt::deletion_policy::in_place: {
-            ASSERT_EQ(set.capacity(), 2u);
+            ASSERT_FALSE(set.contains(entity_type{traits_type::page_size - 1u}));
+            ASSERT_TRUE(set.contains(entity_type{traits_type::page_size}));
+
+            set.push(entity_type{traits_type::page_size - 1u});
+            set.erase(entity_type{traits_type::page_size});
+
+            ASSERT_GE(set.capacity(), 2u);
             ASSERT_EQ(set.extent(), 2 * traits_type::page_size);
-        } break;
-        case entt::deletion_policy::swap_and_pop: {
+
+            set.shrink_to_fit();
+
             ASSERT_EQ(set.capacity(), 1u);
-            ASSERT_EQ(set.extent(), 2 * traits_type::page_size);
+            ASSERT_EQ(set.extent(), traits_type::page_size);
+
+            ASSERT_TRUE(set.contains(entity_type{traits_type::page_size - 1u}));
+            ASSERT_FALSE(set.contains(entity_type{traits_type::page_size}));
+
+            set.erase(entity_type{traits_type::page_size - 1u});
+
+            set.shrink_to_fit();
+
+            ASSERT_EQ(set.capacity(), 0u);
+            ASSERT_EQ(set.extent(), 0u);
+
+            ASSERT_FALSE(set.contains(entity_type{traits_type::page_size - 1u}));
+            ASSERT_FALSE(set.contains(entity_type{traits_type::page_size}));
         } break;
-        }
+        case entt::deletion_policy::in_place: {
+            set.push(entity_type{traits_type::page_size - 1u});
+            set.push(entity_type{traits_type::page_size});
 
-        set.reserve(8u);
+            set.erase(entity_type{traits_type::page_size - 1u});
 
-        set.push(entity_type{traits_type::page_size - 1u});
-        set.erase(entity_type{traits_type::page_size});
+            ASSERT_GE(set.capacity(), 2u);
+            ASSERT_EQ(set.extent(), 2 * traits_type::page_size);
 
-        ASSERT_EQ(set.capacity(), 8u);
-        ASSERT_EQ(set.extent(), 2 * traits_type::page_size);
+            set.shrink_to_fit();
 
-        ASSERT_TRUE(set.contains(entity_type{traits_type::page_size - 1u}));
-        ASSERT_FALSE(set.contains(entity_type{traits_type::page_size}));
+            ASSERT_GE(set.capacity(), 2u);
+            ASSERT_EQ(set.extent(), 2 * traits_type::page_size);
 
-        set.shrink_to_fit();
+            ASSERT_FALSE(set.contains(entity_type{traits_type::page_size - 1u}));
+            ASSERT_TRUE(set.contains(entity_type{traits_type::page_size}));
 
-        switch(policy) {
-        case entt::deletion_policy::in_place: {
-            ASSERT_EQ(set.capacity(), 2u);
-            ASSERT_EQ(set.extent(), traits_type::page_size);
-        } break;
-        case entt::deletion_policy::swap_only: {
-            ASSERT_EQ(set.capacity(), 2u);
+            set.push(entity_type{traits_type::page_size - 1u});
+            set.erase(entity_type{traits_type::page_size});
+
+            ASSERT_GE(set.capacity(), 2u);
             ASSERT_EQ(set.extent(), 2 * traits_type::page_size);
-        } break;
-        case entt::deletion_policy::swap_and_pop: {
-            ASSERT_EQ(set.capacity(), 1u);
+
+            set.shrink_to_fit();
+
+            ASSERT_GE(set.capacity(), 2u);
             ASSERT_EQ(set.extent(), traits_type::page_size);
-        } break;
-        }
 
-        ASSERT_TRUE(set.contains(entity_type{traits_type::page_size - 1u}));
-        ASSERT_FALSE(set.contains(entity_type{traits_type::page_size}));
+            ASSERT_TRUE(set.contains(entity_type{traits_type::page_size - 1u}));
+            ASSERT_FALSE(set.contains(entity_type{traits_type::page_size}));
 
-        set.erase(entity_type{traits_type::page_size - 1u});
-        set.shrink_to_fit();
+            set.erase(entity_type{traits_type::page_size - 1u});
 
-        switch(policy) {
-        case entt::deletion_policy::in_place: {
-            ASSERT_EQ(set.capacity(), 2u);
+            set.shrink_to_fit();
+
+            ASSERT_GE(set.capacity(), 2u);
             ASSERT_EQ(set.extent(), 0u);
+
+            ASSERT_FALSE(set.contains(entity_type{traits_type::page_size - 1u}));
+            ASSERT_FALSE(set.contains(entity_type{traits_type::page_size}));
         } break;
         case entt::deletion_policy::swap_only: {
-            ASSERT_EQ(set.capacity(), 2u);
+            set.push(entity_type{traits_type::page_size - 1u});
+            set.push(entity_type{traits_type::page_size});
+
+            set.erase(entity_type{traits_type::page_size - 1u});
+
+            ASSERT_GE(set.capacity(), 2u);
             ASSERT_EQ(set.extent(), 2 * traits_type::page_size);
-        } break;
-        case entt::deletion_policy::swap_and_pop: {
-            ASSERT_EQ(set.capacity(), 0u);
-            ASSERT_EQ(set.extent(), 0u);
+
+            set.shrink_to_fit();
+
+            ASSERT_GE(set.capacity(), 2u);
+            ASSERT_EQ(set.extent(), 2 * traits_type::page_size);
+
+            ASSERT_FALSE(set.contains(entity_type{traits_type::page_size - 1u}));
+            ASSERT_TRUE(set.contains(entity_type{traits_type::page_size}));
+
+            set.push(entity_type{traits_type::page_size - 1u});
+            set.erase(entity_type{traits_type::page_size});
+
+            ASSERT_GE(set.capacity(), 2u);
+            ASSERT_EQ(set.extent(), 2 * traits_type::page_size);
+
+            set.shrink_to_fit();
+
+            ASSERT_GE(set.capacity(), 2u);
+            ASSERT_EQ(set.extent(), 2 * traits_type::page_size);
+
+            ASSERT_TRUE(set.contains(entity_type{traits_type::page_size - 1u}));
+            ASSERT_FALSE(set.contains(entity_type{traits_type::page_size}));
+
+            set.erase(entity_type{traits_type::page_size - 1u});
+
+            set.shrink_to_fit();
+
+            ASSERT_GE(set.capacity(), 2u);
+            ASSERT_EQ(set.extent(), 2 * traits_type::page_size);
+
+            ASSERT_FALSE(set.contains(entity_type{traits_type::page_size - 1u}));
+            ASSERT_FALSE(set.contains(entity_type{traits_type::page_size}));
         } break;
         }
-
-        ASSERT_FALSE(set.contains(entity_type{traits_type::page_size - 1u}));
-        ASSERT_FALSE(set.contains(entity_type{traits_type::page_size}));
     }
 }