Forráskód Böngészése

test: more on basic_snapshot_loader

Michele Caini 2 éve
szülő
commit
9c25419b9a
1 módosított fájl, 37 hozzáadás és 0 törlés
  1. 37 0
      test/entt/entity/snapshot.cpp

+ 37 - 0
test/entt/entity/snapshot.cpp

@@ -412,6 +412,43 @@ TEST(BasicSnapshotLoader, GetTypeSparse) {
     ASSERT_EQ(storage.get(entities[0u]), values[0u]);
     ASSERT_EQ(storage.get(entities[1u]), values[1u]);
 }
+TEST(BasicSnapshotLoader, Orphans) {
+    using namespace entt::literals;
+    using traits_type = entt::entt_traits<entt::entity>;
+
+    entt::registry registry;
+    entt::basic_snapshot_loader loader{registry};
+
+    std::vector<entt::any> data{};
+    auto archive = [&data, pos = 0u](auto &value) mutable { value = entt::any_cast<std::remove_reference_t<decltype(value)>>(data[pos++]); };
+    const entt::entity entities[2u]{traits_type::construct(0u, 0u), traits_type::construct(2u, 0u)};
+    const int value = 42;
+
+    ASSERT_FALSE(registry.valid(entities[0u]));
+    ASSERT_FALSE(registry.valid(entities[1u]));
+
+    data.emplace_back(static_cast<typename traits_type::entity_type>(2u));
+    data.emplace_back(static_cast<typename traits_type::entity_type>(2u));
+
+    data.emplace_back(entities[0u]);
+    data.emplace_back(entities[1u]);
+
+    data.emplace_back(static_cast<typename traits_type::entity_type>(1u));
+    data.emplace_back(entities[0u]);
+    data.emplace_back(value);
+
+    loader.get<entt::entity>(archive);
+    loader.get<int>(archive);
+
+    ASSERT_TRUE(registry.valid(entities[0u]));
+    ASSERT_TRUE(registry.valid(entities[1u]));
+
+    loader.orphans();
+
+    ASSERT_TRUE(registry.valid(entities[0u]));
+    ASSERT_FALSE(registry.valid(entities[1u]));
+}
+
 
 template<typename Storage>
 struct output_archive {