diff options
author | the lemons <citrons@mondecitronne.com> | 2022-08-28 05:35:37 -0500 |
---|---|---|
committer | the lemons <citrons@mondecitronne.com> | 2022-08-28 05:35:37 -0500 |
commit | b76dd15afa3015488b313d516f2a4813334f1855 (patch) | |
tree | 84a09deb4a5e1618cbd824d5b76a79bd4da10894 | |
parent | 36e82277c4a4eed6da642cc5b7b036fc4641191a (diff) |
write tests for world module
-rw-r--r-- | tests/world.lua | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/tests/world.lua b/tests/world.lua new file mode 100644 index 0000000..ea35105 --- /dev/null +++ b/tests/world.lua @@ -0,0 +1,58 @@ +local world = require "world" +local component = require "component" + +local M = {} + +function M.world() + local w = world() + w:object() + w:object() + w:object() + local i = 0 + for _ in w:iterate() do + i = i + 1 + end + assert(i == 3) +end + +local A = component() +local B = component({A}) +local C = component({A}, {B}) + +function M.object() + local w = world() + local o = w:object(A()) + assert(o[A]) + + o:disable() + for _ in w:iterate() do assert(false) end + for _ in w:iterate(A) do assert(false) end + + o:enable() + local ok + for _ in w:iterate() do ok = true end + assert(ok) ok = false + for _ in w:iterate(A) do ok = true end + assert(ok) ok = false + + for c in o:all_components() do + assert(c.component_type == A) + ok = true + end + assert(ok) +end + +function M.object_dependencies() + local w = world() + local o = w:object(A()) + + assert_error(o.add, o, A) + o:add(C()) + assert(o[B]) + assert_error(o.remove, o, B) + assert_error(o.remove, o, A) + o:remove(C) + assert(not o[C]) +end + +return M |