mirror of
https://github.com/Ukendio/jecs.git
synced 2026-05-13 14:24:14 +00:00
Unit tests
This commit is contained in:
parent
62aefff319
commit
af57f4024f
1 changed files with 124 additions and 0 deletions
124
test/tests.luau
124
test/tests.luau
|
|
@ -3077,6 +3077,130 @@ TEST("world:set()", function()
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
TEST("world:targets", function()
|
||||||
|
do CASE "can find single relation"
|
||||||
|
local world = jecs.world()
|
||||||
|
|
||||||
|
local Alice = world:entity()
|
||||||
|
local Bob = world:entity()
|
||||||
|
local Likes = world:entity()
|
||||||
|
|
||||||
|
world:add(Alice, jecs.pair(Likes, Bob))
|
||||||
|
|
||||||
|
local i = 0
|
||||||
|
for target in world:targets(Alice, Likes) do
|
||||||
|
i += 1
|
||||||
|
CHECK(target == Bob)
|
||||||
|
end
|
||||||
|
CHECK(i == 1)
|
||||||
|
end
|
||||||
|
do CASE "basic iteration"
|
||||||
|
local world = jecs.world()
|
||||||
|
|
||||||
|
local ROOT = world:entity()
|
||||||
|
local e1 = world:entity()
|
||||||
|
local targets = {}
|
||||||
|
|
||||||
|
for i = 1, 10 do
|
||||||
|
local target = world:entity()
|
||||||
|
targets[i] = target
|
||||||
|
world:add(e1, pair(ROOT, target))
|
||||||
|
end
|
||||||
|
|
||||||
|
local i = 0
|
||||||
|
for target in world:targets(e1, ROOT) do
|
||||||
|
i += 1
|
||||||
|
CHECK(targets[i] == target)
|
||||||
|
end
|
||||||
|
|
||||||
|
CHECK(i == 10)
|
||||||
|
end
|
||||||
|
do CASE "multiple iterations"
|
||||||
|
local world = jecs.world()
|
||||||
|
|
||||||
|
local ROOT = world:entity()
|
||||||
|
local OTHER = world:entity()
|
||||||
|
|
||||||
|
local e = world:entity()
|
||||||
|
|
||||||
|
local root_targets = {}
|
||||||
|
local other_targets = {}
|
||||||
|
|
||||||
|
for i = 1, 5 do
|
||||||
|
local t = world:entity()
|
||||||
|
root_targets[i] = t
|
||||||
|
world:add(e, pair(ROOT, t))
|
||||||
|
end
|
||||||
|
|
||||||
|
for i = 1, 3 do
|
||||||
|
local t = world:entity()
|
||||||
|
other_targets[i] = t
|
||||||
|
world:add(e, pair(OTHER, t))
|
||||||
|
end
|
||||||
|
|
||||||
|
local i = 0
|
||||||
|
for target in world:targets(e, ROOT) do
|
||||||
|
i += 1
|
||||||
|
CHECK(root_targets[i] == target)
|
||||||
|
end
|
||||||
|
CHECK(i == 5)
|
||||||
|
|
||||||
|
local j = 0
|
||||||
|
for target in world:targets(e, OTHER) do
|
||||||
|
j += 1
|
||||||
|
CHECK(other_targets[j] == target)
|
||||||
|
end
|
||||||
|
CHECK(j == 3)
|
||||||
|
end
|
||||||
|
do CASE "empty iterator"
|
||||||
|
local world = jecs.world()
|
||||||
|
|
||||||
|
local ROOT = world:entity()
|
||||||
|
local OTHER = world:entity()
|
||||||
|
|
||||||
|
local e = world:entity()
|
||||||
|
|
||||||
|
world:add(e, pair(ROOT, world:entity()))
|
||||||
|
|
||||||
|
local count = 0
|
||||||
|
for _ in world:targets(e, OTHER) do
|
||||||
|
count += 1
|
||||||
|
end
|
||||||
|
|
||||||
|
CHECK(count == 0)
|
||||||
|
end
|
||||||
|
do CASE "ignore deleted targets"
|
||||||
|
local world = jecs.world()
|
||||||
|
|
||||||
|
local ROOT = world:entity()
|
||||||
|
local e = world:entity()
|
||||||
|
|
||||||
|
local alive = {}
|
||||||
|
local dead = {}
|
||||||
|
|
||||||
|
for i = 1, 3 do
|
||||||
|
local t = world:entity()
|
||||||
|
alive[#alive + 1] = t
|
||||||
|
world:add(e, pair(ROOT, t))
|
||||||
|
end
|
||||||
|
|
||||||
|
for i = 1, 2 do
|
||||||
|
local t = world:entity()
|
||||||
|
dead[#dead + 1] = t
|
||||||
|
world:add(e, pair(ROOT, t))
|
||||||
|
world:delete(t)
|
||||||
|
end
|
||||||
|
|
||||||
|
local count = 0
|
||||||
|
for t in world:targets(e, ROOT) do
|
||||||
|
count += 1
|
||||||
|
CHECK(t ~= nil)
|
||||||
|
end
|
||||||
|
|
||||||
|
CHECK(count == #alive)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
TEST("world:target", function()
|
TEST("world:target", function()
|
||||||
do CASE "nth index"
|
do CASE "nth index"
|
||||||
local world = jecs.world()
|
local world = jecs.world()
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue