Skip to content

Commit 9a9fb1d

Browse files
committed
Merge branch 'feature/determinism' into dev
2 parents 8d88d55 + 7b44740 commit 9a9fb1d

3 files changed

Lines changed: 224 additions & 62 deletions

File tree

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1569,6 +1569,7 @@ builder_mt:destruction_policy :: id -> builder
15691569
### vX.Y.Z
15701570

15711571
- Performance improvements of the [`evolved.destroy`](#evolveddestroy) and [`evolved.batch_destroy`](#evolvedbatch_destroy) functions
1572+
- Ensured deterministic chunk ordering to improve processing consistency across runs
15721573

15731574
### v1.8.0
15741575

develop/testing/main_tests.lua

Lines changed: 50 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2302,27 +2302,66 @@ do
23022302
evo.set(e2, f2, 44)
23032303

23042304
do
2305-
local iter, state = evo.execute(q)
2306-
local chunk = iter(state)
2307-
assert(chunk and chunk ~= evo.chunk(f1))
2305+
local e1_count = 0
2306+
local e2_count = 0
2307+
2308+
for _, entity_list, entity_count in evo.execute(q) do
2309+
for i = 1, entity_count do
2310+
if entity_list[i] == e1 then
2311+
e1_count = e1_count + 1
2312+
elseif entity_list[i] == e2 then
2313+
e2_count = e2_count + 1
2314+
end
2315+
end
2316+
end
2317+
2318+
assert(e1_count == 1)
2319+
assert(e2_count == 1)
23082320
end
23092321

23102322
evo.set(q, evo.EXCLUDES, { f2 })
23112323

23122324
do
2313-
local iter, state = evo.execute(q)
2314-
local chunk = iter(state)
2315-
assert(chunk and chunk ~= evo.chunk(f1))
2325+
local e1_count = 0
2326+
local e2_count = 0
2327+
2328+
for chunk, entity_list, entity_count in evo.execute(q) do
2329+
assert(not chunk:has(f2))
2330+
2331+
for i = 1, entity_count do
2332+
if entity_list[i] == e1 then
2333+
e1_count = e1_count + 1
2334+
elseif entity_list[i] == e2 then
2335+
e2_count = e2_count + 1
2336+
end
2337+
end
2338+
end
2339+
2340+
assert(e1_count == 1)
2341+
assert(e2_count == 0)
23162342
end
23172343

23182344
evo.set(q, evo.INCLUDES, { f1 })
23192345

23202346
do
2321-
local iter, state = evo.execute(q)
2322-
local chunk, entity_list, entity_count = iter(state)
2323-
assert(chunk == evo.chunk(f1))
2324-
assert(entity_list and entity_list[1] == e1)
2325-
assert(entity_count == 1)
2347+
local e1_count = 0
2348+
local e2_count = 0
2349+
2350+
for chunk, entity_list, entity_count in evo.execute(q) do
2351+
assert(chunk:has(f1))
2352+
assert(not chunk:has(f2))
2353+
2354+
for i = 1, entity_count do
2355+
if entity_list[i] == e1 then
2356+
e1_count = e1_count + 1
2357+
elseif entity_list[i] == e2 then
2358+
e2_count = e2_count + 1
2359+
end
2360+
end
2361+
end
2362+
2363+
assert(e1_count == 1)
2364+
assert(e2_count == 0)
23262365
end
23272366
end
23282367

0 commit comments

Comments
 (0)