awesome/spec/wibox/widget/base_spec.lua

54 lines
1.8 KiB
Lua

---------------------------------------------------------------------------
-- @author Uli Schlachter
-- @copyright 2016 Uli Schlachter
---------------------------------------------------------------------------
local base = require("wibox.widget.base")
local no_parent = base.no_parent_I_know_what_I_am_doing
describe("wibox.widget.base", function()
local widget1, widget2
before_each(function()
widget1 = base.make_widget()
widget2 = base.make_widget()
widget1.layout = function()
return { base.place_widget_at(widget2, 0, 0, 1, 1) }
end
end)
describe("caches", function()
it("garbage collectable", function()
local alive = setmetatable({ widget1, widget2 }, { __mode = "kv" })
assert.is.equal(2, #alive)
widget1, widget2 = nil, nil
collectgarbage("collect")
assert.is.equal(0, #alive)
end)
it("simple cache clear", function()
local alive = setmetatable({ widget1, widget2 }, { __mode = "kv" })
base.layout_widget(no_parent, { "fake context" }, widget1, 20, 20)
assert.is.equal(2, #alive)
widget1, widget2 = nil, nil
collectgarbage("collect")
assert.is.equal(0, #alive)
end)
it("self-reference cache clear", function()
widget2.widget = widget1
local alive = setmetatable({ widget1, widget2 }, { __mode = "kv" })
base.layout_widget(no_parent, { "fake context" }, widget1, 20, 20)
assert.is.equal(2, #alive)
widget1, widget2 = nil, nil
collectgarbage("collect")
assert.is.equal(0, #alive)
end)
end)
end)
-- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80