diff --git a/tests/test-current-desktop.lua b/tests/test-current-desktop.lua new file mode 100644 index 00000000..e4da504c --- /dev/null +++ b/tests/test-current-desktop.lua @@ -0,0 +1,88 @@ +--- Tests for _NET_CURRENT_DESKTOP + +local runner = require("_runner") +local test_client = require("_client") +local awful = require("awful") + +local c +local s = screen[1] +local tags = s.tags + +local function wait_for_current_desktop(tag) + -- The X property has 0-based indicies + local idx = awful.util.table.hasitem(tags, tag) - 1 + return function() + local file = io.popen("xprop -notype -root _NET_CURRENT_DESKTOP") + local result = file:read("*all") + file:close() + + -- Extract the value + local value = string.sub(result, 24, -2) + + if tostring(idx) == value then + return true + end + print(string.format("Got _NET_CURRENT_DESKTOP = '%s', expected %d", value, idx)) + end +end + +local steps = { + + -- Set up the state we want + function(count) + if count == 1 then + test_client() + awful.tag.viewmore({ tags[3], tags[4], tags[5] }, s) + end + + c = awful.client.visible()[1] + + if c then + c:move_to_tag(tags[4]) + client.focus = c + return true + end + end, + wait_for_current_desktop(tags[4]), + + -- Move the client around + function() + c:move_to_tag(tags[5]) + return true + end, + wait_for_current_desktop(tags[5]), + + -- Move the client to a non-selected tag + function() + c:move_to_tag(tags[6]) + assert(client.focus == nil) + return true + end, + wait_for_current_desktop(tags[3]), + + -- Move the client back + function(count) + if count == 1 then + c:move_to_tag(tags[4]) + return + end + + -- Undo autofocus + assert(client.focus == c) + client.focus = nil + return true + end, + wait_for_current_desktop(tags[3]), + + -- Change tag selection + function() + tags[3].selected = false + return true + end, + wait_for_current_desktop(tags[4]), + +} + +runner.run_steps(steps) + +-- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80