From 210d62d4636c86d90cbceea2c0c5c00e78c9936f Mon Sep 17 00:00:00 2001 From: Ukendio Date: Mon, 14 Jul 2025 15:57:39 +0200 Subject: [PATCH] Add tests for archetype edges cleanup --- test/tests.luau | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/test/tests.luau b/test/tests.luau index 1f867bd..2ea6eef 100755 --- a/test/tests.luau +++ b/test/tests.luau @@ -24,6 +24,40 @@ type Id = jecs.Id local entity_visualiser = require("@tools/entity_visualiser") local dwi = entity_visualiser.stringify +TEST("Ensure archetype edges get cleaned", function() + local A = jecs.component() + local B = jecs.component() + local world = jecs.world() + local edges = world.archetype_edges + + local e = world:entity() + local r = jecs.record(world, e) + + world:set(e, A, true) + world:add(e, A) + local arch_a = r.archetype + world:set(e, B, true) + world:add(e, B) + local arch_ab = r.archetype + CHECK(edges[arch_a.id][B] == arch_ab) + CHECK(edges[arch_ab.id][B] == arch_a) + + world:delete(B) + + CHECK(edges[arch_a.id][B] == nil) + CHECK(edges[arch_ab.id][A] == nil) + for _ in edges[arch_ab.id] do + CHECK(false) + end + + world:delete(A) + + CHECK(edges[arch_a.id][B] == nil) + CHECK(edges[arch_a.id][A] == nil) + for _ in edges[arch_a.id] do + CHECK(false) + end +end) TEST("repeated entity cached query", function() local pair = jecs.pair local world = jecs.world()