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