Selaa lähdekoodia

storage: minor changes + some tests for get/get_as_tuple

Michele Caini 4 vuotta sitten
vanhempi
commit
d8d6f00fee
2 muutettua tiedostoa jossa 8 lisäystä ja 1 poistoa
  1. 1 1
      src/entt/entity/storage.hpp
  2. 7 0
      test/entt/entity/storage.cpp

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

@@ -612,7 +612,7 @@ public:
      * @return A reference to the updated instance.
      */
     template<typename... Func>
-    decltype(auto) patch(const entity_type entt, Func &&... func) {
+    value_type & patch(const entity_type entt, Func &&... func) {
         const auto idx = underlying_type::index(entt);
         auto &&elem = packed[page(idx)][offset(idx)];
         (std::forward<Func>(func)(elem), ...);

+ 7 - 0
test/entt/entity/storage.cpp

@@ -80,7 +80,11 @@ TEST(Storage, Functionalities) {
     ASSERT_NE(pool.begin(), pool.end());
     ASSERT_FALSE(pool.contains(entt::entity{0}));
     ASSERT_TRUE(pool.contains(entt::entity{41}));
+
     ASSERT_EQ(pool.get(entt::entity{41}), 3);
+    ASSERT_EQ(std::as_const(pool).get(entt::entity{41}), 3);
+    ASSERT_EQ(pool.get_as_tuple(entt::entity{41}), std::make_tuple(3));
+    ASSERT_EQ(std::as_const(pool).get_as_tuple(entt::entity{41}), std::make_tuple(3));
 
     pool.erase(entt::entity{41});
 
@@ -94,6 +98,9 @@ TEST(Storage, Functionalities) {
     pool.emplace(entt::entity{41}, 12);
 
     ASSERT_EQ(pool.get(entt::entity{41}), 12);
+    ASSERT_EQ(std::as_const(pool).get(entt::entity{41}), 12);
+    ASSERT_EQ(pool.get_as_tuple(entt::entity{41}), std::make_tuple(12));
+    ASSERT_EQ(std::as_const(pool).get_as_tuple(entt::entity{41}), std::make_tuple(12));
 
     pool.clear();