summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorthe lemons <citrons@mondecitronne.com>2022-08-28 05:35:37 -0500
committerthe lemons <citrons@mondecitronne.com>2022-08-28 05:35:37 -0500
commitb76dd15afa3015488b313d516f2a4813334f1855 (patch)
tree84a09deb4a5e1618cbd824d5b76a79bd4da10894
parent36e82277c4a4eed6da642cc5b7b036fc4641191a (diff)
write tests for world module
-rw-r--r--tests/world.lua58
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