Просмотр исходного кода

sparse_set: better return value for range ::push

Michele Caini 2 лет назад
Родитель
Сommit
ebc6f64af0

+ 1 - 1
src/entt/entity/sparse_set.hpp

@@ -812,7 +812,7 @@ public:
             try_emplace(*it, true);
         }
 
-        return first == last ? end() : find(*first);
+        return first == last ? end() : begin(0);
     }
 
     /**

+ 15 - 3
test/entt/entity/sparse_set.cpp

@@ -1044,8 +1044,12 @@ TYPED_TEST(SparseSet, Push) {
             set.erase(entity.begin(), entity.end());
 
             ASSERT_EQ(set.size(), 0u);
-            ASSERT_EQ(*set.push(entity.begin(), entity.end()), entity[0u]);
+
+            auto it = set.push(entity.begin(), entity.end());
+
             ASSERT_EQ(set.size(), 2u);
+            ASSERT_EQ(*it, entity[1u]);
+            ASSERT_EQ(*(++it), entity[0u]);
 
             ASSERT_EQ(set.index(entity[0u]), 0u);
             ASSERT_EQ(set.index(entity[1u]), 1u);
@@ -1078,8 +1082,12 @@ TYPED_TEST(SparseSet, Push) {
             set.erase(entity.begin(), entity.end());
 
             ASSERT_EQ(set.size(), 2u);
-            ASSERT_EQ(*set.push(entity.begin(), entity.end()), entity[0u]);
+
+            auto it = set.push(entity.begin(), entity.end());
+
             ASSERT_EQ(set.size(), 4u);
+            ASSERT_EQ(*it, entity[1u]);
+            ASSERT_EQ(*(++it), entity[0u]);
 
             ASSERT_EQ(set.index(entity[0u]), 2u);
             ASSERT_EQ(set.index(entity[1u]), 3u);
@@ -1118,9 +1126,13 @@ TYPED_TEST(SparseSet, Push) {
 
             ASSERT_EQ(set.size(), 2u);
             ASSERT_EQ(set.free_list(), 0u);
-            ASSERT_EQ(*set.push(entity.begin(), entity.end()), entity[0u]);
+
+            auto it = set.push(entity.begin(), entity.end());
+
             ASSERT_EQ(set.free_list(), 2u);
             ASSERT_EQ(set.size(), 2u);
+            ASSERT_EQ(*it, entity[1u]);
+            ASSERT_EQ(*(++it), entity[0u]);
 
             ASSERT_EQ(set.index(entity[0u]), 0u);
             ASSERT_EQ(set.index(entity[1u]), 1u);

+ 2 - 2
test/entt/entity/storage_entity.cpp

@@ -246,8 +246,8 @@ TEST(StorageEntity, TryEmplaceInUse) {
 
     auto it = pool.push(entity.begin(), entity.end());
 
-    ASSERT_EQ(*it, entt::entity{0});
-    ASSERT_EQ(*(--it), entt::entity{2});
+    ASSERT_EQ(*it, entt::entity{2});
+    ASSERT_EQ(*(++it), entt::entity{0});
 }
 
 TEST(StorageEntity, Patch) {