diff --git a/tests/world.luau b/tests/world.luau index 178650a..bb33fa7 100644 --- a/tests/world.luau +++ b/tests/world.luau @@ -471,6 +471,47 @@ TEST("world", function() CHECK(world:get(e, B) == false) CHECK(world:get(e, C) == "hello world") end + + do CASE "should not iterate when nothing matches query" + local world = jecs.World.new() + local A = world:component() + local B = world:component() + + local e1 = world:entity() + world:add(e1, A) + + local count = 0 + for id in world:query(B) do + count += 1 + end + + CHECK(count == 0) + end + + do CASE "should return nothing for empty iteration" + local world = jecs.World.new() + local A = world:component() + local B = world:component() + + local e1 = world:entity() + world:add(e1, A) + + local query = world:query(B) + CHECK(query.next() == nil) + CHECK(query.replace() == nil) + end + + do CASE "should properly handle query:without for empty iteration" + local world = jecs.World.new() + local A = world:component() + local B = world:component() + + local e1 = world:entity() + world:add(e1, A) + + local query = world:query(B) + CHECK(query == query:without()) + end end) FINISH()