mirror of
				https://github.com/Ukendio/jecs.git
				synced 2025-11-04 10:59:18 +00:00 
			
		
		
		
	Add tests for archetype edges cleanup
	
		
			
	
		
	
	
		
	
		
			Some checks failed
		
		
	
	
	
				
					
				
			
		
			Some checks failed
		
		
	
	
This commit is contained in:
		
							parent
							
								
									3f6f8c1739
								
							
						
					
					
						commit
						210d62d463
					
				
					 1 changed files with 34 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -24,6 +24,40 @@ type Id<T=unknown> = jecs.Id<T>
 | 
			
		|||
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()
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue