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();