Browse Source

bug fixing

Michele Caini 8 years ago
parent
commit
28448e1596
2 changed files with 36 additions and 3 deletions
  1. 1 1
      src/registry.hpp
  2. 35 2
      test/registry.cpp

+ 1 - 1
src/registry.hpp

@@ -248,7 +248,7 @@ private:
         } else if(src) {
             clone<Comp>(to, from);
         } else if(dst) {
-            destroy(to);
+            remove<Comp>(to);
         }
     }
 

+ 35 - 2
test/registry.cpp

@@ -70,8 +70,8 @@ TEST(DefaultRegistry, Functionalities) {
     ASSERT_NO_THROW(registry.remove<int>(e2));
     ASSERT_NO_THROW(registry.accomodate<int>(e1, 1));
     ASSERT_NO_THROW(registry.accomodate<int>(e2, 1));
-    ASSERT_EQ(registry.get<int>(e1), 1);
-    ASSERT_EQ(registry.get<int>(e2), 1);
+    ASSERT_EQ(static_cast<const registry_type &>(registry).get<int>(e1), 1);
+    ASSERT_EQ(static_cast<const registry_type &>(registry).get<int>(e2), 1);
 
     ASSERT_EQ(registry.size(), registry_type::size_type{3});
     ASSERT_EQ(registry.capacity(), registry_type::size_type{3});
@@ -79,6 +79,10 @@ TEST(DefaultRegistry, Functionalities) {
 
     ASSERT_NO_THROW(registry.destroy(e3));
 
+    ASSERT_TRUE(registry.valid(e1));
+    ASSERT_TRUE(registry.valid(e2));
+    ASSERT_FALSE(registry.valid(e3));
+
     ASSERT_EQ(registry.size(), registry_type::size_type{2});
     ASSERT_EQ(registry.capacity(), registry_type::size_type{3});
     ASSERT_FALSE(registry.empty());
@@ -112,6 +116,35 @@ TEST(DefaultRegistry, Functionalities) {
     ASSERT_TRUE(registry.empty<int>());
 }
 
+TEST(DefaultRegistry, Copy) {
+    using registry_type = entt::DefaultRegistry<int, char, double>;
+
+    registry_type registry;
+
+    registry_type::entity_type e1 = registry.create<int, char>();
+    registry_type::entity_type e2 = registry.create<int, double>();
+
+    ASSERT_TRUE(registry.has<int>(e1));
+    ASSERT_TRUE(registry.has<char>(e1));
+    ASSERT_FALSE(registry.has<double>(e1));
+
+    ASSERT_TRUE(registry.has<int>(e2));
+    ASSERT_FALSE(registry.has<char>(e2));
+    ASSERT_TRUE(registry.has<double>(e2));
+
+    ASSERT_NO_THROW(registry.copy(e2, e1));
+
+    ASSERT_TRUE(registry.has<int>(e1));
+    ASSERT_TRUE(registry.has<char>(e1));
+    ASSERT_FALSE(registry.has<double>(e1));
+
+    ASSERT_TRUE(registry.has<int>(e2));
+    ASSERT_TRUE(registry.has<char>(e2));
+    ASSERT_FALSE(registry.has<double>(e2));
+
+    ASSERT_TRUE(registry.empty<double>());
+}
+
 TEST(DefaultRegistry, ViewSingleComponent) {
     using registry_type = entt::DefaultRegistry<int, char>;