From 72f635400a2022b2fc57ac5f1b159565891929ad Mon Sep 17 00:00:00 2001
From: NukeBird <nukebird.dev@gmail.com>
Date: Thu, 20 Feb 2025 02:55:04 +0300
Subject: [PATCH] =?UTF-8?q?=F0=9F=93=A6More=20tests=20for=20archetypes?=
 =?UTF-8?q?=F0=9F=93=A6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 tests/zecsy.cpp | 38 ++++++++++++++++++++++++++++++++++----
 1 file changed, 34 insertions(+), 4 deletions(-)

diff --git a/tests/zecsy.cpp b/tests/zecsy.cpp
index 65a4d71..a4e3672 100644
--- a/tests/zecsy.cpp
+++ b/tests/zecsy.cpp
@@ -473,12 +473,40 @@ TEST_CASE("Archetype signature management")
     // Initial state: empty archetype
     REQUIRE(w.archetype_count() == 0);
 
-    auto e = w.make_entity();
-    REQUIRE(w.archetype_count() == 1);
+    auto e0 = w.make_entity();
+    REQUIRE(w.archetype_count() == 1); //<>
 
     // Add first component
-    w.set<A>(e);
-    REQUIRE(w.archetype_count() == 1);
+    w.set<A>(e0);
+    REQUIRE(w.archetype_count() == 1); //<A>
+
+    w.set<B>(e0);
+    REQUIRE(w.archetype_count() == 1); //<A, B>
+
+    w.set<C>(e0);
+    REQUIRE(w.archetype_count() == 1); //<A, B, C>
+
+    w.remove<A, B>(e0);
+    REQUIRE(w.archetype_count() == 1); //<C>
+
+    auto e1 = w.make_entity();
+    w.set<A, B>(e1);
+    REQUIRE(w.archetype_count() == 2); //<C>, <A, B>
+
+    w.remove<C>(e0);
+    REQUIRE(w.archetype_count() == 2); //<>, <A, B>
+
+    w.set<A>(e0);
+    REQUIRE(w.archetype_count() == 2); //<A>, <A, B>
+
+    w.set<B>(e0);
+    REQUIRE(w.archetype_count() == 1); //<A, B>
+
+    w.destroy_entity(e0);
+    REQUIRE(w.archetype_count() == 1); //<A, B>
+
+    w.destroy_entity(e1);
+    REQUIRE(w.archetype_count() == 0);
 }
 
 TEST_CASE("Component distribution across archetypes")
@@ -499,11 +527,13 @@ TEST_CASE("Component distribution across archetypes")
         auto e = w.make_entity();
         w.set<A>(e);
     }
+
     for(int i = 0; i < 3; ++i)
     {
         auto e = w.make_entity();
         w.set<A, B>(e);
     }
+
     for(int i = 0; i < 2; ++i)
     {
         auto e = w.make_entity();