tests: Test the naughty "suspended" mode.

This commit is contained in:
Emmanuel Lepage Vallee 2021-09-19 21:55:48 -07:00
parent 9c22b029eb
commit d4a41184c4
1 changed files with 106 additions and 0 deletions

View File

@ -0,0 +1,106 @@
local naughty = require("naughty")
local notification = require("naughty.notification")
local steps = {}
-- Hijack the naughty.layout.box to track them.
local real_box = getmetatable(naughty.layout.box).__call
local boxes = {}
getmetatable(naughty.layout.box).__call = function(_, args)
local ret = real_box(_, args)
table.insert(boxes, ret)
return ret
end
naughty.suspended = true
local display_count, notifs = 0, setmetatable({}, {__mode = "v"})
naughty.connect_signal("request::display", function()
display_count = display_count + 1
end)
table.insert(steps, function()
notifs[1] = notification {
title = "test1"
}
notifs[2] = notification {
title = "test2"
}
assert(display_count == 0)
assert((not notifs[1].timer) or not notifs[1].timer.started)
assert((not notifs[2].timer) or not notifs[2].timer.started)
return true
end)
table.insert(steps, function()
assert(display_count == 0)
naughty.suspended = false
assert(display_count == 2)
assert(#boxes == 2)
assert(notifs[1].timer.started)
assert(notifs[2].timer.started)
notifs[3] = notification {
title = "test2"
}
naughty.suspended = true
assert(display_count == 3)
return true
end)
table.insert(steps, function()
assert(display_count == 3)
assert(not boxes[1].visible)
assert(not boxes[2].visible)
assert((not notifs[1].timer) or not notifs[1].timer.started)
assert((not notifs[2].timer) or not notifs[2].timer.started)
assert((not notifs[3].timer) or not notifs[3].timer.started)
naughty.suspended = false
return true
end)
table.insert(steps, function()
assert(display_count == 6)
assert(not boxes[1].visible)
assert(not boxes[2].visible)
assert(boxes[4].visible)
assert(boxes[5].visible)
assert(boxes[6].visible)
assert(notifs[1].timer.started)
assert(notifs[2].timer.started)
assert(notifs[3].timer.started)
setmetatable(boxes, {__mode = "v"})
notifs[1]:destroy()
notifs[2]:destroy()
notifs[3]:destroy()
return true
end)
table.insert(steps, function()
collectgarbage("collect")
if #notifs > 0 then return end
if #boxes > 0 then return end
return true
end)
require("_runner").run_steps(steps)