tests: Test moving tags between screens.

This commit is contained in:
Emmanuel Lepage Vallee 2016-08-28 23:49:01 -04:00
parent 760e72f94a
commit edf7fb40b3
1 changed files with 113 additions and 0 deletions

View File

@ -128,4 +128,117 @@ end
end
}
local multi_screen_steps = {}
-- Clear the state (this step will be called once per disposition)
table.insert(multi_screen_steps, function()
if #client.get() == 0 then
-- Remove all existing tags created by the rc.lua callback
for s in screen do
while #s.tags > 0 do
local t = s.tags[1]
-- Test #1051 against regressions
assert(t.index == 1)
assert(t.screen == s)
t:delete()
assert(not t.activated)
assert(t.screen == nil)
end
end
return true
end
for _, c in ipairs(client.get()) do
c:kill()
end
end)
-- Add a bunch of tags on each screens.
table.insert(multi_screen_steps, function()
for i=1, screen.count() do
local s = screen[i]
-- Add 5 tags per screen
for idx=1, 5 do
awful.tag.add("S"..i..":"..idx,{screen = s})
end
end
-- Check if everything adds up
for i=1, screen.count() do
local tags = screen[i].tags
assert(#tags == 5)
for k, t in ipairs(tags) do
assert(t.index == k)
assert(t.name == "S"..i..":"..k)
end
end
-- Select a tag on each screen
for i=1, screen.count() do
screen[i].tags[1].selected = true
end
return true
end)
local function check_tag_indexes()
for s in screen do
for i, t in ipairs(s.tags) do
assert(t.index == i)
assert(t.screen == s)
end
end
end
-- Move tags across screens (without clients)
table.insert(multi_screen_steps, function()
-- This screen disposition cannot be used for this test, move on
if screen.count() < 2 then return true end
local s1, s2 = screen[1], screen[2]
local old_count1, old_count2 = #s1.tags, #s2.tags
local t = awful.tag.add("TEST", {screen=s1})
-- Check the current state
assert( t.index == old_count1+1 )
assert( t.screen == s1 )
assert( #s1.tags == old_count1+1 )
assert( s1.tags[old_count1+1] == t )
assert( #s2.tags == old_count2 )
-- Move to another index
local new_index = 3
t.index = new_index
assert(t.index == new_index)
check_tag_indexes()
-- Move the tag to screen 2
t.screen = s2
assert(t.screen == s2 )
assert(#s1.tags == old_count1 )
assert(#s2.tags == old_count2+1 )
assert( s2.tags[old_count2+1] == t )
assert( t.index == old_count2+1 )
check_tag_indexes()
-- Move to another index
t.index = new_index
assert(t.index == new_index)
check_tag_indexes()
-- Delete it
t:delete()
check_tag_indexes()
return true
end)
require("_multi_screen")(steps, multi_screen_steps)
require("_runner").run_steps(steps)